日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
CodeReview實(shí)踐-Gerrit自動(dòng)觸發(fā)JenkinsCI

GERRIT + JENKINS

創(chuàng)新互聯(lián)成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、營(yíng)銷型網(wǎng)站建設(shè)微信平臺(tái)小程序開發(fā)、微信公眾號(hào)開發(fā)、營(yíng)銷推廣服務(wù),提供專業(yè)營(yíng)銷思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開發(fā)來(lái)完成項(xiàng)目落地,為成都玻璃鋼坐凳企業(yè)提供源源不斷的流量和訂單咨詢。

背景
當(dāng)前團(tuán)隊(duì)使用Gerrit來(lái)做代碼管理、CodeReview。計(jì)劃實(shí)現(xiàn)當(dāng)review提交到了Gerrit并且review通過(guò)(merged)自動(dòng)觸發(fā)Jenkins流水線。以前接觸Gitlab比較多,Gerrit還是第一次開始用,踩了點(diǎn)坑記錄下來(lái)。本文主要講述Gerrit Trigger流水線配置,關(guān)于服務(wù)器配置等細(xì)節(jié)問(wèn)題暫不研究,降低復(fù)雜性。

 Gerrit 配置
我們可以通過(guò)Docker的方式快速啟動(dòng)一個(gè)Gerrit實(shí)例,默認(rèn)Gerrit使用的是HTTP 8080端口、SSH29418端口。通過(guò)CANONICAL_WEB_URL參數(shù)指定服務(wù)器網(wǎng)頁(yè)地址。

 
 
 
 
  1. docker run --name gerrit -itd \ 
  2. -p 8088:8080 \ 
  3. -p 29418:29418 \ 
  4. -e CANONICAL_WEB_URL=http://192.168.1.200:8088 gerritcodereview/gerrit 

啟動(dòng)成功后,默認(rèn)打開的是一個(gè)插件安裝的頁(yè)面,此時(shí)可以根據(jù)個(gè)人需要安裝相關(guān)插件,也可以跳過(guò)。

默認(rèn)登錄就是admin, 創(chuàng)建一個(gè)Jenkins用戶。

登錄Jenkins用戶然后配置SSH-KEY,創(chuàng)建ssh-key添加到j(luò)enkins用戶配置中。

 
 
 
 
  1. [root@zeyang-nuc-service ~]# kubectl exec -it jenkins-6ccf555769-sfdw6 -n devops bash 
  2. bash-4.2$ id 
  3. uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins) 
  4. bash-4.2$ ssh-keygen 
  5. Generating public/private rsa key pair. 
  6. Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): 
  7. Created directory '/var/jenkins_home/.ssh'. 
  8. Enter passphrase (empty for no passphrase): 
  9. Enter same passphrase again:Your identification has been saved in /var/jenkins_home/.ssh/id_rsa. 
  10. Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub. 
  11. The key fingerprint is: 
  12. SHA256:nGqkSVAUuc2xrGe8Bz/xuWcQ/YVrDISPJux+tCZkJgI jenkins@jenkins-6ccf555769-sfdw6 
  13. The key's randomart image is: 
  14. +---[RSA 2048]----+ 
  15. |   .+o     .     | 
  16. |   .. .   . .    | 
  17. |  .  = +   =   . | 
  18. |  E.. =.o.+ + . .| 
  19. |   ..o..So . + o | 
  20. |   .o+*.* o   =  | 
  21. |    o+oX + + .   | 
  22. |     .. * * o    | 
  23. |       . =.+     | 
  24. +----[SHA256]-----+ 

默認(rèn)的key在JENKINS_HOME目錄中/var/jenkins_home/.ssh/id_rsa。

 
 
 
 
  1. bash-4.2$ cat /var/jenkins_home/.ssh/id_rsa.pub 
  2. 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用戶中。(記得點(diǎn)擊ADD)

將Jenkins用戶加入Non-interactive Users組。BROWSE>Groups>Non-Interactive Users>Members。

創(chuàng)建一個(gè)倉(cāng)庫(kù),然后簡(jiǎn)單的設(shè)置下repo權(quán)限:

 
 
 
 
  1. refs/* : read Non-interactive Users 
  2. refs/heads/* : Label Code-Review Non-interactive Users 

Gerrit 2.7+ 創(chuàng)建一個(gè)組Event Streaming Users,將Jenkins用戶加入。

設(shè)置All-projects access 權(quán)限, BROWSE> repos>All-Projects>Access>Global Capabilities >Stream Events 。

 
 
 
 
  1. allow Event Streaming Users 

到此,Gerrit配置基本上已經(jīng)完成了,頁(yè)面樣式很簡(jiǎn)潔。

 Jenkins配置
首先我們安裝Gerrit Hook插件,然后進(jìn)入系統(tǒng)管理會(huì)看到gerrit的圖標(biāo)。

Connection error : com.jcraft.jsch.JSchException: Auth fail 錯(cuò)誤一般是ssh-key問(wèn)題。

 在流水線項(xiàng)目中添加Gerrit Trigger.

Ok,Jenkins的配置完成了。接下來(lái)開始測(cè)試自動(dòng)觸發(fā)。

創(chuàng)建codereview

 
 
 
 
  1. [root@zeyang-nuc-service devops]# ls 
  2. aa,txt  aasss,txt  sss  test.txt 
  3. [root@zeyang-nuc-service devops]# echo 123 >test.txt 
  4. [root@zeyang-nuc-service devops]# git add . 
  5. [root@zeyang-nuc-service devops]# git commit -m "init" 
  6. [master 77f6474] init 
  7.  1 file changed, 1 insertion(+), 1 deletion(-) 
  8. [root@zeyang-nuc-service devops]# git push origin HEAD:refs/for/master 
  9. Username for 'http://192.168.1.200:8088': admin 
  10. Password for 'http://admin@192.168.1.200:8088': 
  11. Enumerating objects: 3, done. 
  12. Counting objects: 100% (3/3), done. 
  13. Delta compression using up to 8 threads. 
  14. Compressing objects: 100% (2/2), done. 
  15. Writing objects: 100% (2/2), 253 bytes | 253.00 KiB/s, done. 
  16. Total 2 (delta 1), reused 0 (delta 0) 
  17. remote: Resolving deltas: 100% (1/1) 
  18. remote: Processing changes: refs: 1, new: 1, done 
  19. remote: 
  20. remote: SUCCESS 
  21. remote: 
  22. remote:   http://192.168.1.200:8088/c/devops/+/21 init [NEW] 
  23. remote: 
  24. To http://192.168.1.200:8088/devops 
  25.  * [new branch]      HEAD -> refs/for/master 

merge 測(cè)試

Gerrit傳遞的參數(shù)還是挺多的,可以很方便的獲取。基本上這些參數(shù)就夠用了。

Pipeline As Code

 
 
 
 
  1. //Pipeline params 
  2. String BRANCH_NAME = "${env.GERRIT_BRANCH}" 
  3. String PROJECT_NAME = "devops" 
  4. String PROJECT_URL = "http://192.168.1.200:8088/devops" 
  5. currentBuild.description = "Trigger By ${BRANCH_NAME}" 
  6. //Pipelinepipeline{    agent {        node {  label "build"   //指定運(yùn)行節(jié)點(diǎn)的標(biāo)簽或者名稱 
  7.         }    }?    options{        skipDefaultCheckout()    }?    triggers {        //配置gerrit觸發(fā)器        gerrit  customUrl: '', 
  8.                 gerritProjects: [[branches: [[compareType: 'ANT', pattern: '**']], 
  9.                 compareType: 'PLAIN', 
  10.                 disableStrictForbiddenFileVerification: false, 
  11.                 pattern: "${PROJECT_NAME}"]], 
  12.                 serverName: 'devops', 
  13.                 triggerOnEvents: [changeMerged()]    }?    stages{?        stage("GetCode"){ 
  14.             steps{                echo "========executing GetCode========" 
  15.                 //下載代碼                checkout([$class: 'GitSCM', branches: [[name: "${BRANCH_NAME}"]], 
  16.                                       doGenerateSubmoduleConfigurations: false, 
  17.                                       extensions: [],                                      submoduleCfg: [],                                      userRemoteConfigs: [[url: "${PROJECT_URL}"]]]) 
  18.             }        }    }    post{        always{            echo "========always========" 
  19.             cleanWs()        }        success{            echo "========pipeline executed successfully ========" 
  20.         }        failure{            echo "========pipeline execution failed========" 
  21.         }    }} 

到此基本上觸發(fā)就已經(jīng)完成了,后續(xù)添加構(gòu)建和發(fā)布步驟。Gerrit進(jìn)行CodeReview還是很方便的,現(xiàn)在每次提交的代碼、Jenkinsfile都需要先進(jìn)行CodeReview才能進(jìn)行merge。 哈哈,注意文件中的空格......

【編輯推薦】

  1. 在Spring Boot中從類路徑加載文件
  2. 人工智能加速目標(biāo)瞄準(zhǔn) 助力人機(jī)融合即時(shí)打擊
  3. 如何確定DevOps變更的優(yōu)先級(jí)?
  4. iPhone12mini沒(méi)有5G嗎
  5. 物聯(lián)網(wǎng)對(duì)會(huì)計(jì)行業(yè)有何益處?

文章題目:CodeReview實(shí)踐-Gerrit自動(dòng)觸發(fā)JenkinsCI
網(wǎng)站URL:http://www.dlmjj.cn/article/djeegog.html