溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Gitlab+Jenkins+Pipeline+WebHook+Multibranch-實現持續(xù)集成

發(fā)布時間:2020-08-10 21:15:15 來源:網絡 閱讀:750 作者:秋也 欄目:系統(tǒng)運維

[Gitlab + Jenkins + Pipeline + WebHook+ Multibranch] - 實現持續(xù)集成和自動發(fā)布

本文的實現:

  • 代碼提交gitlab,自動觸發(fā)Jenkins構建
  • gitlab開發(fā)分支merge后自動發(fā)布到dev環(huán)境
  • gitlab master分支merge后自動構建,需手動更新prod環(huán)境

    1. Jenkins準備工作
    2. Jenkinsfile準備工作
    3. Gitlab準備工作
    4. 選擇Jenkins任務的觸發(fā)方式
    5. 驗證

Jenkins準備工作

  • 安裝插件
    1. gitlab
    2. pipeline
  • 配置Gitlab的連接
    1. 打開系統(tǒng)管理 - 系統(tǒng)設置 - gitlab
    2. 去掉此選項的勾選Enable authentication for '/project' end-point
    3. 配置GitLab connections
    4. 設置Connection nameGitlab host URL
    5. Credentials的配置
      1. 添加Jenkins憑據
      2. 類型選擇Gitlab API token
      3. API token的獲取
        1. 在Gitlab上擁有一個用戶并具有developer角色
        2. 獲取方法:登錄用戶 - User settings - Access Tokens,創(chuàng)建一個Token記錄
      4. 復制Token值并保存到Jenkins的憑據中
      5. 點擊下面的Test Connection測試
        1. 成功會提示Success
        2. 如果失敗檢查gitlab的url地址是否正確
  • 配置多分支流水線任務
    1. 新建任務,選擇多分支流水線
    2. 配置任務
    3. 添加一個倉庫,類型選Git
    4. Credentials的配置
      1. 添加Jenkins憑據
      2. 類型選擇Username with Password
      3. 用戶的獲取
        1. 在Gitlab上擁有一個用戶并具有developer角色
        2. 如果你的項目類型屬于Private,這個用戶必須是這個項目的成員
    5. 其他默認讀取根目錄下的Jenkinsfile文件

Jenkinsfile準備工作

參考 Jenkinsfile Demo

主要配置:

// 獲取gitlab connection, 填寫我們之前配置gitlab connection
properties([gitLabConnection('gitlab-bigdata')])
// 拉取代碼
checkout scm
// 告訴gitlab job狀態(tài)
updateGitlabCommitStatus name: 'build', state: 'pending'
// 根據不同的分支觸發(fā)不同的步驟
if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'dev' ) {
        stage("Build Docker Image"){
            echo "build docker image"
            echo "Only dev/master branch can build docker image"
        }

        if(env.BRANCH_NAME == 'dev'){
            stage("Deploy to test"){
                echo "branch dev to deploy to environment test"
            }

            stage("Integration test"){
                echo "test環(huán)境集成測試"
            }

        }

        if(env.BRANCH_NAME == 'master'){
            stage("Deploy to prod"){
                echo "branch master to deploy to environment prod"
            }

            stage("Health check"){
                echo "prod檢查"
            }

        }
    }

Gitlab準備工作

  • 修改默認的安全請求
    1. 注意: 當Jenkins和Gitlab在同一臺機器時
    2. 使用root登錄,管理中心 - 設置 - 網絡 - 外發(fā)請求(Admin Area - settings - Network - Outbound requests)
    3. 加上此選項的勾選Allow requests to the local network from hooks and services, 保存

選擇Jenkins任務的觸發(fā)方式

  • 手動觸發(fā)
  • 定時觸發(fā)
  • Gitlab trigger

    1. 進入項目,Settings - Integrations
    2. 填寫Jenkins任務的地址,選中Push eventsMerge request events
    3. Jenkins url格式:http://JENKINS_URL/project/PROJECT_NAME
    When you configure the plugin to trigger your Jenkins job, by following the instructions below depending on job type, it will listen on a dedicated URL for JSON POSTs from GitLab's webhooks. That URL always takes the form http://JENKINS_URL/project/PROJECT_NAME, or http://JENKINS_URL/project/FOLDER/PROJECT_NAME if the project is inside a folder in Jenkins. You should not be using http://JENKINS_URL/job/PROJECT_NAME/build or http://JENKINS_URL/job/gitlab-plugin/buildWithParameters, as this will bypass the plugin completely.

驗證

  1. 提交代碼
  2. 查看狀態(tài) - 進入項目
    1. WebHook狀態(tài)
      1. 依次點擊Settings - Integrations
      2. 編輯觸發(fā)Jenkins的那條記錄
      3. 查看Recent Deliveries部分,顯示了最近的Trigger狀態(tài)
    2. Pipelines狀態(tài)
    3. Jenkins Job狀態(tài)
  3. 成功狀態(tài)
    1. WebHook狀態(tài) - 200
    2. Pipelines狀態(tài) - passed
    3. Jenkins Job狀態(tài) - 成功

感謝

  • CI/CD之Gitlab集成Jenkins多分支pipeline實現質量檢測和自動發(fā)布
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI