Jenkins+Gitlab CICD自動觸發建構配置
Gitlab配置
新增賬號什麼的就不贅述了, 建一個測試項目或者選擇已有的項目, 随便 commit 幾條内容
- 按下圖步驟建立賬号的 access token , 用于 Jenkins 調用 GitLab 的 API
Jenkins+Gitlab CICD流程配置Jenkins+Gitlab CICD自動觸發建構配置 記下生成的Jenkins+Gitlab CICD流程配置Jenkins+Gitlab CICD自動觸發建構配置 token
Jenkins安裝配置
下載下傳Jenkins: 下載下傳位址
現在後解壓到目錄即可
配置JAVA_HOME
安裝JDK在此不再說明,自己搜尋安裝即可
cat ~/.bash_profile
# 增加或者更改如下内容即可
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export JAVA_HOME=/workbase/software/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
配置Tomcat 8
安裝Tomcat同樣不再說明
注意: 更改${TOMCAT_HOME}/conf/server.xml配置
<!--<Listener className="org.apache.catalina.core.JasperListener" />-->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Host name="localhost" appBase="webapps" unpackWARs="true" >
<!-- docBase 替換為自己的目錄即可 -->
<Context crossContext="true" docBase="/workbase/software/jenkins.war" reloadable="true" allowLinking="true" path=""/>
安裝插件
- Git Parameter ( 用于參數化建構中動态擷取項目分支 )
- Generic Webhook Trigger ( 用于解析 Webhook 傳過來的參數 )
- GitLab ( 用于推送建構結果給 GitLab )
配置Jenkins Gitlab
- 添加Gitlab憑證
Jenkins+Gitlab CICD流程配置Jenkins+Gitlab CICD自動觸發建構配置 - 配置Gitlab連接配接
Jenkins+Gitlab CICD流程配置Jenkins+Gitlab CICD自動觸發建構配置 - 配置項目
Jenkins+Gitlab CICD流程配置Jenkins+Gitlab CICD自動觸發建構配置 - 參數說明
- GitLab Connection 選擇上面添加的 GitLab 連接配接 ( Jenkins )
- 勾選 參數化建構過程, 添加
類型的參數Git Parameter
, 這樣建構的時候就可以指定分支進行建構。ref
-
選擇Source Code Management
, 添加項目位址和授權方式 ( 帳号密碼 或者 ssh key ) , 分支填寫建構參數Git
如果選擇$ref
的方式需要在sshkey
伺服器啟動Jenkins
服務的使用者生成公鑰配置在jenkins
伺服器上。GitLab
- Build Triggers 選擇 Generic Webhook Trigger 方式用于解析 GitLab 推過來的詳細參數。
-
: 通過ref
請求Gitlab API
中擷取Request body
擷取分支或者tag$.ref
-
: 通過object_kind
請求Gitlab API
中擷取Request body
操作類型$.object_kind
-
:通過git_ssh_url
請求Gitlab API
中擷取Request body
項目的ssh位址$.project.git_ssh_url
-
: 通過commits_id
請求Gitlab API
中擷取Request body
該次送出的$.commits[0].id
ID
-
: 自己通過shell随機生成一個即可,也可以自定義任意值Token
-
: 使用正規表達式對 Text 進行比對, 比對成功才允許觸發建構Optional filter
-
:預設的待比對項Expression
-
: 比對的内容Text
-
-
- Build 内容按自己實際的項目類型進行調整, 使用 Maven 插件 或 腳本 等等。
- Post-build Actions 添加 Publish build status to GitLab 動作, 實作建構結束後通知建構結果給 GitLab
-
添加Gitlab
webhooks
- GitLab 的項目頁面中, 添加一個 Webhook ( http://JENKINS_URL/generic-webhook-trigger/invoke?token=<上面 Jenkins 項目配置中的 token> ) , 觸發器選擇 标簽推送事件。
建立完成點選測試如果報錯如下:
Requests to the local network are not allowed
解決辦法: 允許 GitLab 本地網絡發送 Webhook 請求
建立任務測試
- 本地推送tag到遠端
git push moshu stable_production-20200305
-
中檢視GitLab
GitLab
頁面可以看到觸發了 Webhook , View details 檢視請求詳情, Response body 中 triggered 字段值為 true 則表示成功觸發了 Jenkins 進行建構
-
檢視建構結果Gitlab
-
檢視Jenkins
完成
額外配置
Jenkin進行Git檢出的代碼有存在與本地不同的情況(有一些大檔案不需要送出,但是在打包又會用到),這種情況如何處理?
我處理的方式: 使用rsync同步檔案的功能将本地的檔案推送到Jenkins Git檢出的目錄,并且保持與本地同步(配合.gitignore進行使用)
代碼:
# 需要過濾的檔案
cat ./exclude_rules
- .git/
- .idea/
- .vscode/
- .DS_Store