新聞中心
GERRIT + JENKINS

創(chuàng)新互聯(lián)成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站定制、營銷型網(wǎng)站建設(shè)、微信平臺小程序開發(fā)、微信公眾號開發(fā)、營銷推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為成都玻璃鋼坐凳企業(yè)提供源源不斷的流量和訂單咨詢。
背景
當(dāng)前團(tuán)隊使用Gerrit來做代碼管理、CodeReview。計劃實現(xiàn)當(dāng)review提交到了Gerrit并且review通過(merged)自動觸發(fā)Jenkins流水線。以前接觸Gitlab比較多,Gerrit還是第一次開始用,踩了點坑記錄下來。本文主要講述Gerrit Trigger流水線配置,關(guān)于服務(wù)器配置等細(xì)節(jié)問題暫不研究,降低復(fù)雜性。
Gerrit 配置
我們可以通過Docker的方式快速啟動一個Gerrit實例,默認(rèn)Gerrit使用的是HTTP 8080端口、SSH29418端口。通過CANONICAL_WEB_URL參數(shù)指定服務(wù)器網(wǎng)頁地址。
- docker run --name gerrit -itd \
- -p 8088:8080 \
- -p 29418:29418 \
- -e CANONICAL_WEB_URL=http://192.168.1.200:8088 gerritcodereview/gerrit
啟動成功后,默認(rèn)打開的是一個插件安裝的頁面,此時可以根據(jù)個人需要安裝相關(guān)插件,也可以跳過。
默認(rèn)登錄就是admin, 創(chuàng)建一個Jenkins用戶。
登錄Jenkins用戶然后配置SSH-KEY,創(chuàng)建ssh-key添加到j(luò)enkins用戶配置中。
- [root@zeyang-nuc-service ~]# kubectl exec -it jenkins-6ccf555769-sfdw6 -n devops bash
- bash-4.2$ id
- uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)
- bash-4.2$ ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa):
- Created directory '/var/jenkins_home/.ssh'.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:Your identification has been saved in /var/jenkins_home/.ssh/id_rsa.
- Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:nGqkSVAUuc2xrGe8Bz/xuWcQ/YVrDISPJux+tCZkJgI jenkins@jenkins-6ccf555769-sfdw6
- The key's randomart image is:
- +---[RSA 2048]----+
- | .+o . |
- | .. . . . |
- | . = + = . |
- | E.. =.o.+ + . .|
- | ..o..So . + o |
- | .o+*.* o = |
- | o+oX + + . |
- | .. * * o |
- | . =.+ |
- +----[SHA256]-----+
默認(rèn)的key在JENKINS_HOME目錄中/var/jenkins_home/.ssh/id_rsa。
- bash-4.2$ cat /var/jenkins_home/.ssh/id_rsa.pub
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCb+BcXnBXG4f4T3MSDsL/aNLm4zlMkX5xn5pwC4eaep+XMe9kXMsYJZ3xuQ1dxUTAeTHAYX33IsclpE63H0nXdNj8cgcC9dnyXFYGieKfSx44JeP3O4rcMFN+cPGlEcIVJdTF8RfpvDANObCUJ0fnsw7f/yVImdwqGbXaBsU11+s6uRuCghXUw1JhA4H+mVp89YZN7ilhif4I8rol/cUkcKnQhxM0ziClWL5VLBTfpO5QNhj+vy2JICMSgU93EEs0LgBUdT2Q+1tduQo3R7fNOkQm46y1oonoUMzXTr9/kOlcAxZR9kIT7WYPxGQGCoyf2AiMP3VKwowv98MenDCFZ jenkins@jenkins-6ccf555769-sfdw6
這里使用的是id_rsa.pub,復(fù)制文件內(nèi)容,然后添加到Gerrit Jenkins用戶中。(記得點擊ADD)
將Jenkins用戶加入Non-interactive Users組。BROWSE>Groups>Non-Interactive Users>Members。
創(chuàng)建一個倉庫,然后簡單的設(shè)置下repo權(quán)限:
- refs/* : read Non-interactive Users
- refs/heads/* : Label Code-Review Non-interactive Users
Gerrit 2.7+ 創(chuàng)建一個組Event Streaming Users,將Jenkins用戶加入。
設(shè)置All-projects access 權(quán)限, BROWSE> repos>All-Projects>Access>Global Capabilities >Stream Events 。
- allow Event Streaming Users
到此,Gerrit配置基本上已經(jīng)完成了,頁面樣式很簡潔。
Jenkins配置
首先我們安裝Gerrit Hook插件,然后進(jìn)入系統(tǒng)管理會看到gerrit的圖標(biāo)。
Connection error : com.jcraft.jsch.JSchException: Auth fail 錯誤一般是ssh-key問題。
在流水線項目中添加Gerrit Trigger.
Ok,Jenkins的配置完成了。接下來開始測試自動觸發(fā)。
創(chuàng)建codereview
- [root@zeyang-nuc-service devops]# ls
- aa,txt aasss,txt sss test.txt
- [root@zeyang-nuc-service devops]# echo 123 >test.txt
- [root@zeyang-nuc-service devops]# git add .
- [root@zeyang-nuc-service devops]# git commit -m "init"
- [master 77f6474] init
- 1 file changed, 1 insertion(+), 1 deletion(-)
- [root@zeyang-nuc-service devops]# git push origin HEAD:refs/for/master
- Username for 'http://192.168.1.200:8088': admin
- Password for 'http://[email protected]:8088':
- Enumerating objects: 3, done.
- Counting objects: 100% (3/3), done.
- Delta compression using up to 8 threads.
- Compressing objects: 100% (2/2), done.
- Writing objects: 100% (2/2), 253 bytes | 253.00 KiB/s, done.
- Total 2 (delta 1), reused 0 (delta 0)
- remote: Resolving deltas: 100% (1/1)
- remote: Processing changes: refs: 1, new: 1, done
- remote:
- remote: SUCCESS
- remote:
- remote: http://192.168.1.200:8088/c/devops/+/21 init [NEW]
- remote:
- To http://192.168.1.200:8088/devops
- * [new branch] HEAD -> refs/for/master
merge 測試
Gerrit傳遞的參數(shù)還是挺多的,可以很方便的獲取?;旧线@些參數(shù)就夠用了。
Pipeline As Code
- //Pipeline params
- String BRANCH_NAME = "${env.GERRIT_BRANCH}"
- String PROJECT_NAME = "devops"
- String PROJECT_URL = "http://192.168.1.200:8088/devops"
- currentBuild.description = "Trigger By ${BRANCH_NAME}"
- //Pipelinepipeline{ agent { node { label "build" //指定運行節(jié)點的標(biāo)簽或者名稱
- } }? options{ skipDefaultCheckout() }? triggers { //配置gerrit觸發(fā)器 gerrit customUrl: '',
- gerritProjects: [[branches: [[compareType: 'ANT', pattern: '**']],
- compareType: 'PLAIN',
- disableStrictForbiddenFileVerification: false,
- pattern: "${PROJECT_NAME}"]],
- serverName: 'devops',
- triggerOnEvents: [changeMerged()] }? stages{? stage("GetCode"){
- steps{ echo "========executing GetCode========"
- //下載代碼 checkout([$class: 'GitSCM', branches: [[name: "${BRANCH_NAME}"]],
- doGenerateSubmoduleConfigurations: false,
- extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: "${PROJECT_URL}"]]])
- } } } post{ always{ echo "========always========"
- cleanWs() } success{ echo "========pipeline executed successfully ========"
- } failure{ echo "========pipeline execution failed========"
- } }}
到此基本上觸發(fā)就已經(jīng)完成了,后續(xù)添加構(gòu)建和發(fā)布步驟。Gerrit進(jìn)行CodeReview還是很方便的,現(xiàn)在每次提交的代碼、Jenkinsfile都需要先進(jìn)行CodeReview才能進(jìn)行merge。 哈哈,注意文件中的空格......
【編輯推薦】
- 在Spring Boot中從類路徑加載文件
- 人工智能加速目標(biāo)瞄準(zhǔn) 助力人機(jī)融合即時打擊
- 如何確定DevOps變更的優(yōu)先級?
- iPhone12mini沒有5G嗎
- 物聯(lián)網(wǎng)對會計行業(yè)有何益處?
分享名稱:CodeReview實踐-Gerrit自動觸發(fā)JenkinsCI
當(dāng)前地址:http://m.fisionsoft.com.cn/article/djeegog.html


咨詢
建站咨詢
