<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Jenkins打造多分支流水線指南

          共 4094字,需瀏覽 9分鐘

           ·

          2020-09-01 03:33

          來源:TECH flower,作者:東溪陳姓少年

          overview:

          多分支工作流程帶來了以下幾個關鍵能力:

          1. 在代碼倉庫中,每個新分支都有自己單獨的工作流水線(job)。

          2. 每個工作流水線都記錄了對應分支的構建和變更歷史。

          3. 可以自定義設置流水線隨著分支的刪除而刪除或修建。

          4. 通過重寫父屬性(如果需要),可以靈活地單獨配置分支流水線屬性。

          Jenkins pipeline-as-code 使您可以在項目/應用程序源代碼存儲庫中維護CI / CD工作流邏輯,而無需在Jenkins中為每個分支維護其配置。用于構建/測試/部署的流水線代碼始終和你的項目/應用程序源代碼同步。在倉庫中我們用jenkinsfile對流水線代碼進行描述。關于jenkinsfile,其簡介及語法可參考官方文檔


          do it:

          1.jenkins需要安裝多分支流水線插件:

          首先打開插件中心:jenkins>Manage Jenkins>Manage Plugins

          并且安裝如下兩個插件(有可能已經(jīng)安裝了):

          2.新建一個多分支流水線項目:

          2.1 jenkins>新建Item

          2.2 填寫項目,代碼源相關信息

          創(chuàng)建完之后在首頁會顯示

          創(chuàng)建完成。

          3.接下來在我們的項目根目錄添加jenkinsfile(以下用已經(jīng)存在的項目做演示)

          然后在Jenkinsfile中編寫流水線代碼(pipeline代碼語法請參考?語法,以下為示例

          pipeline {    options {        buildDiscarder(logRotator(numToKeepStr: '7', artifactNumToKeepStr: '10', daysToKeepStr: '5'))        timeout(time: 12, unit: 'MINUTES')        disableConcurrentBuilds()    }    agent {        label 'master'    }
          environment { JOB_NAME = 'pipeline-demo' }
          parameters { booleanParam(name: 'FAST_MODE', defaultValue: false, description: '此操作將會跳過單元測試以及代碼質(zhì)量檢查。') }
          stages { stage('pipeline環(huán)境準備') {
          steps { script { echo "開始構建" if(!env.BRANCH_NAME.startsWith('feature-') && !env.BRANCH_NAME.startsWith('release-')){ error("自動構建分支名稱必須以feature-或release-開頭,當前分支名稱為: ${env.BRANCH_NAME}") }
          if (env.BRANCH_NAME.startsWith('feature-') ) { env.env = "beta" } if (env.BRANCH_NAME.startsWith('release-')) { env.env = "stage" }
          sh "echo 當前分支 : ${env.BRANCH_NAME}" sh "echo 當前環(huán)境 : ${env.env}" sh "echo 當前提交 : ${env.commit}" sh "echo WORKSPACE : ${env.WORKSPACE}" sh "echo GIT_BRANCH : ${env.GIT_BRANCH}" sh "echo BUILD_NUMBER : ${env.BUILD_NUMBER}" sh "echo JOB_NAME : ${env.JOB_NAME}" sh "./mvnw -v" sh "java -version" } } }
          stage("運行測試&收集報告"){ when{ expression { params.FAST_MODE == false } } steps{ script { echo "開始運行測試" sh "./mvnw clean test jacoco:report" } } }
          stage('代碼靜態(tài)檢查') { when{ expression { params.FAST_MODE == false } } steps { withSonarQubeEnv( installationName: 'sonar_server') { sh './mvnw sonar:sonar' } } }
          stage("檢查結(jié)果分析") { when{ expression { params.FAST_MODE == false } } steps { timeout(time: 1, unit: 'HOURS') { waitForQualityGate abortPipeline: true } } }

          stage("發(fā)布應用") { steps { script { echo "開始發(fā)布" sh "curl --location --request POST 'http://0.0.0.0:8080/job/${env.JOB_NAME}/buildWithParameters' \ --header 'Authorization: ${env.ecarx_jenkins_auth}' \ --form 'env=${env.env}' \ --form 'branchname=origin/${env.BRANCH_NAME}'" } } } }}

          4.在我們的代碼倉庫中添加webhook

          如下(示例中使用gitlab,如果是其他倉庫,可參考各倉庫文檔):

          之后點擊add webhook保存。

          ??:每個不同的代碼倉庫可能webhook地址的組成不同,所以添加前可查看各個倉庫文檔。

          準備就緒。

          5.push代碼

          將帶有Jenkinsfile的項目代碼push的遠程代碼倉庫,回到jenkins控制臺

          每當有分支push代碼時,都會自動觸發(fā)Jenkins的自動構建。

          從而實現(xiàn)ci/cd。

          6.總結(jié):

          jenkins能讓我們輕松實現(xiàn)持續(xù)集成/持續(xù)部署(ci/cd)。ci/cd讓我們實現(xiàn)代碼質(zhì)量內(nèi)建,ci/cd中最重要的是測試自動化,沒有自動化測試的持續(xù)集成只是一堆不會帶來任何用處的垃圾。我們在流水線中嵌入測試自動化,代碼質(zhì)量檢查來保證我們的開發(fā)質(zhì)量。流水線能夠及時給開發(fā)者反饋,這種反饋非常,當我們的流水線失敗的時候,我們需要第一時間修復它,從而做到不積累結(jié)束債務,而不是繼續(xù)開發(fā)別的功能。否則等到失敗積累到一定程度,我們在去修復的時候,需要付出的成本將是更大的。


          后臺回復?學習資料?領取學習視頻


          如有收獲,點個在看,誠摯感謝

          瀏覽 66
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99re99在线 | 欧美日韩国产无码 | 91午夜理论 | 在线操逼喷水 | 抠逼操逼视频 |