Gitlab自動觸發流水線


Gitlab自動觸發流水線

我們希望版本管理工具和持續集成工具聯動起來,如提交代碼時,自動觸發集成工具的進行代碼監測,檢測成功后集成工具再通知版本管理工具進行下一步操作。

Jenkins會為當前代碼庫生成一個訂閱地址,綁定到Gitlab。而Jenkins想調用Gitlab想調用Gitlab的API則需要其憑證信息。

所以我們配置自動觸發流水線最關鍵兩步是把憑證添加到Jenkins上,再將訂閱地址綁定到Gitlab上

使用Gitlab Hook Plugin插件

安裝插件,【系統管理】->【插件管理】安裝“Gitlab hook plugin”、“git plugin”。

注意,此插件依賴ruby-runtime環境,如果使用最新版本Jenkins鏡像,JDK版本過高會導致環境安裝失敗。可參考問題1偷換容器的JDK解決。

初始化項目

本地用vue-cli創建一個工程,添加Jenkinsfile。

pipeline {
    agent any
    stages {
        stage("stage 1: Test auto exe pipline") {
            steps {
                echo 'Test auto exe pipline'
                sh 'echo ${BRANCH_NAME}'
            }
        }
    }
    post {
        always {
            echo 'This will always run'
            sh "env"
        }
        success {
            echo 'successful'
        }
        failure {
            echo 'failed'
        }
    }
}

gitlab創建空白項目(不要初始化任何文件,否則要同步代碼),本地工程根目錄執行以下命令提交到代碼庫。

git remote add origin http://xxxxx.git
git branch -M main
git add .
git commit -m 'init project.'
git push -u origin main

配置Gitlab憑據

獲取Gitlab憑證

登陸了Gitlab,點擊右上角用戶圖標,選擇【偏好設置】,左側會出現用戶設置導航;點擊【訪問令牌】,按表單內容填寫令牌內容。

注意:令牌無法找回,記得保存。

配置憑據

打開Jenkins。

【系統管理】->【Manage Credentials】->【Stores scoped to Jenkins】創建全局憑證,左側導航有【添加憑據】字樣,點擊,類型選擇“GitLab API token”。

生成憑據后還要去全局配置里讓憑據生效

點擊Testconnection 測試是否成功,按鈕右端會出現“success”字樣。

創建流水線

打開Blue Ocean,創建流水線

填寫相關信息

流水線創建完畢。注意此處使用最簡單的賬號密碼方式。

配置訂閱地址

接下來是獲取Jenkins訂閱地址,再配置到Gitlab上。

回到Jenkins的Dashboard界面,進入流水線內部。點擊單條流水線。

查看配置

拷貝地址

回到Gitlab,進入對應項目,點擊左側導航的怕【設置】->【webhook】

配置網址即可。

觸發gitlab push事件。

附錄

問題1:Failed to load: Gitlab Hook Plugin (1.4.2) --Plugin is missing: ruby-runtime (0.12)

安裝gitlab hook plugin報錯。

最開始我用的是jenkins/blueocean鏡像,安裝ruby-runtime時報一個window錯,網上說安裝路徑帶了中午或特殊字符,但我系統用的是Ubuntu,顯然不是這個問題。

后來刪了容器,用jenkins/jenkins:lts和上次相同的參數創建容器,再次安裝,報ruby-runtime: unsupported Java version: 11。我的Java11版本太高,要下載一個低版本JDK,替換掉容器里的JDK,裝好ruby-runtime環境后再將原來JDK替換回去。

博客原文:docker jenkins 容器ruby-runtime插件安裝失敗解決辦法

docker exec -it jenkins bash
java -version # openjdk version "11.0.12" 2021-07-20
whereis java # java: /opt/java/openjdk/bin/java

下載jdk-8,替換

#在主機上下載,openjdk8,再將其拷貝進容器內
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz

docker cp openlogic-openjdk-8u262-b10-linux-x64.tar.gz jenkins:/usr/local
docker exec -it jenkins bash
tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
mv openlogic-openjdk-8u262-b10-linux-64/ jdk8
whereis java
mv /opt/java/openjdk/bin/java /opt/java/openjdk/bin/java.bak
ln -s /usr/local/jdk8/bin/java /opt/java/openjdk/bin/java

替換完成之后再把java11換回去

rm -f /opt/java/openjdk/bin/java
mv /opt/java/openjdk/bin/java.bak /opt/java/openjdk/bin/java


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM