中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何使用Jenkins多分支管道

發布時間:2021-09-13 10:27:09 來源:億速云 閱讀:357 作者:柒染 欄目:web開發

如何使用Jenkins多分支管道,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Jenkins多分支管道是設計CI/CD工作流的最佳方法之一,因為它完全是基于git的pipeline  as code。

多分支管道是一種基于Git分支自動創建Jenkins  Pipeline的概念。這意味著,它可以在SCM(Github)中創建時自動發現新的Git分支,并自動為該分支創建管道。當管道構建開始時,Jenkins在該分支中使用Jenkinsfile進行構建階段。

SCM可以是Github,Bitbucket或Gitlab存儲庫。

如何使用Jenkins多分支管道

如果不希望所選分支出現在帶有Java正則表達式的自動管道中,則可以選擇排除。多分支管道支持基于PR的分支發現。這意味著,如果有人從分支提出PR(拉動請求),則會在管道中自動發現分支。如果啟用了此配置,則僅在提PR時才會觸發構建。因此,如果您正在尋找基于PR的Jenkins構建工作流程,這是一個不錯的選擇。

您可以向Jenkinsfile添加條件邏輯,以根據分支需求構建作業。例如,如果您希望 功能  分支僅運行單元測試和Sonar分析,則可以設置條件以使用when條件跳過部署階段,如下所示。

如何使用Jenkins多分支管道

因此,每當開發人員將PR從功能分支提交到其他分支時,管道將運行單元測試和Sonar分析階段,從而跳過部署階段。而且,多分支流水線不僅限于連續交付應用程序。您也可以使用它來管理基礎結構代碼。

多分支管道如何工作?

我將引導您完成基本的構建和部署工作流程,以了解多分支管道的工作方式。

假設我希望Jenkins管道在以下條件下構建和部署應用程序。

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 開發人員通過向功能分支提交代碼來從功能分支開始。

  3. 每當開發人員從功能分支提PR來開發分支時,Jenkins管道都應觸發以運行單元測試和靜態代碼分析。

  4. 在功能分支中成功測試代碼后,開發人員將PR合并到開發分支。

  5. 當代碼準備發布時,開發人員將PR從develop分支提到master。它應該觸發一個構建管道,該管道將運行單元測試用例,代碼分析并將其部署到dev /  QA環境。

從以上條件可以看出,沒有手動觸發Jenkins作業的情況,并且每當有分支請求請求時,都需要自動觸發管道并為該分支運行所需的步驟。此工作流程為工程師建立了一個很好的反饋循環,并避免了依賴DevOps團隊在非產品環境中進行構建和部署。開發人員可以在Github上檢查構建狀態,然后決定下一步要做的事情。

通過Jenkins多分支管道可以輕松實現此工作流程。下圖顯示了以上示例構建過程的多分支管道工作流的外觀

如何使用Jenkins多分支管道

這是多分支管道的工作方式。

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 當開發人員從功能分支創建PR來開發分支時,Github將帶有PR信息的Webhook發送給Jenkins。

  3. Jenkins收到PR,并找到相關的多分支管道并自動創建分支管道。然后,它按照功能分支中Jenkinsfile中提到的步驟運行作業。簽出期間,PR中的源分支和目標分支將合并。PR合并將在Github上被阻止,直到從Jenkins返回構建狀態為止。

  4. 構建完成后,Jenkins會將狀態更新為Github  PR。現在您將能夠合并代碼。另外,如果您想查看Jenkins構建日志,則可以在PR狀態下找到Jenkins構建日志鏈接。

多分支Pipleline Jenkinsfile

在開始實施之前,讓我們看一下可在管道中使用的多分支管道Jenkins示例Jenkinsfile。

為了使多分支管道正常工作,您需要在SCM存儲庫中包含Jenkinsfile。

如果您正在學習/測試,則可以使用下面提供的多分支管道Jenkinsfile。它具有一個檢出階段和其他階段,它們會回顯消息。

另外,您可以克隆并使用具有此Jenkinsfile的Github存儲庫

注意:將代理標簽“ master”替換為您的Jenkins代理名稱。master也可以工作,但不建議它在實際的項目環境中運行。

pipeline {    agent {       node {           label 'master'       }   }    options {       buildDiscarder logRotator(                   daysToKeepStr: '16',                   numToKeepStr: '10'           )   }    stages {               stage('Cleanup Workspace') {           steps {               cleanWs()               sh """               echo "Cleaned Up Workspace For Project"               """           }       }        stage('Code Checkout') {           steps {               checkout([                   $class: 'GitSCM',                   branches: [[name: '*/main']],                   userRemoteConfigs: [[url: 'https://github.com/spring-projects/spring-petclinic.git']]               ])           }       }        stage(' Unit Testing') {           steps {               sh """               echo "Running Unit Tests"               """           }       }        stage('Code Analysis') {           steps {               sh """               echo "Running Code Analysis"               """           }       }        stage('Build Deploy Code') {           when {               branch 'develop'           }           steps {               sh """               echo "Building Artifact"               """                sh """               echo "Deploying Code"               """           }       }    }   }

設置Jenkins多分支管道

在這里,我將逐步引導您逐步在Jenkins上建立多分支管道。該設置將基于Github和最新的Jenkins  2.x版本。您還可以將Bitbucket或Gitlab用作多分支管道的SCM源。

步驟1:在Jenkins主頁上創建一個“新項目”。

如何使用Jenkins多分支管道

步驟2:從選項中選擇“多分支管道”,然后單擊“確定”。

如何使用Jenkins多分支管道

步驟3:點擊“添加來源”,然后選擇Github。

如何使用Jenkins多分支管道

步驟4:在認證字段下,選擇Jenkins并使用您的Github用戶名和密碼創建一個認證。

如何使用Jenkins多分支管道

步驟5:選擇創建的憑據,然后提供您的Github存儲庫以驗證憑據,如下所示。

如果您正在測試多分支管道,則可以克隆演示Github存儲庫并使用它。https://github.com/devopscube/multibranch-pipeline-demo。

如何使用Jenkins多分支管道

第6步:選擇所需的選項以符合您的要求。您可以選擇發現存儲庫中的所有分支,也可以僅選擇具有“拉取請求”的分支。

管道還可以從分叉的倉庫中發現具有PR的分支。

選擇這些選項取決于所需的工作流程。

如何使用Jenkins多分支管道

您可以從“添加”按鈕中選擇其他行為。

例如,如果選擇不從存儲庫中發現所有分支,則可以選擇正則表達式或通配符方法從存儲庫中發現分支,如下所示。

如何使用Jenkins多分支管道

這是一個正則表達式和通配符示例。

如何使用Jenkins多分支管道

步驟7:如果選擇為Jenkinsfile使用其他名稱,則可以通過在構建配置中指定名稱來實現。在“腳本路徑”選項中,您可以提供所需的名稱。確保倉庫中的Jenkinsfile與您在管道配置中提供的名稱相同。

另外,啟用“放棄舊版本”以僅保留所需的生成日志,如下所示。

如何使用Jenkins多分支管道

步驟8:保存所有作業配置。Jenkins掃描已配置的Github存儲庫,以查找所有提升了PR的分支。

下圖顯示了掃描三個分支的作業,并且由于我沒有提出任何拉取請求,Jenkins不會創建任何基于分支的管道。我將展示如何在設置Webhook之后測試自動管道創建。

如何使用Jenkins多分支管道

到目前為止,我們已經在Jenkins完成了配置,可以根據PR請求掃描分支。為了擁有完整的工作流程,我們需要在Github中配置一個Webhook,以將所有事件(提交,PR等)發送給Jenkins,因為可以自動觸發管道。

為多分支管道配置Webhook

請按照以下步驟在存儲庫上設置Jenkins Webhook。

第1步:轉到Github存儲庫,然后單擊設置。

如何使用Jenkins多分支管道

步驟2:選擇左側的webhook選項,然后單擊“添加Webhook”按鈕。

如何使用Jenkins多分支管道

步驟3:在有效負載URL下添加您的Jenkins URL,后跟“ /github-webhook /”。選擇內容類型為“  application/json”,然后單擊“添加Webhook”

注意:您可以選擇要在Jenkins中接收的Webhook類型。例如,您只想在PR期間觸發管道。然后,您可以從“讓我選擇單個事件”選項中僅選擇PR事件。

如何使用Jenkins多分支管道

您將在成功的 Webhook配置上看到一個綠色的勾號 ,如下所示。

如何使用Jenkins多分支管道

如果您沒有看到綠色的勾號或警告標志,請單擊Webhook鏈接,然后單擊最后一個Webhook。您應該能夠使用狀態代碼查看為什么Webhook傳遞失敗。

如何使用Jenkins多分支管道

現在,我們完成了多分支管道的所有必需配置。下一步是測試多分支管道工作流觸發器。

測試多分支管道

出于演示目的,我選擇了“僅將分支作為PR的分支”選項。使用此選項,僅發現具有PR請求的分支。

要使用多分支管道,可以將此回購與示例Jenkinsfile一起使用。https://github.com/devopscube/multibranch-pipeline-demo

這個倉庫有三個分支。更新功能分支中自述文件中的某些內容,并提高PR以進行開發。它將向Jenkins發送一個Webhook,并且Jenkins將發送回Jenkins的工作詳細信息,并且PR將進入檢查狀態,如下所示。

如何使用Jenkins多分支管道

如果單擊“詳細信息”,它將帶您到Jenkins構建日志。您可以在您的Jenkins文件中編寫自定義檢查,以用于構建審核。

現在,如果您選擇了Jenkins,您將在Jenkins中找到功能分支的管道,如下所示。

如何使用Jenkins多分支管道

如果構建失敗,則可以將更改提交到功能分支,并且只要PR打開,它將觸發功能管線。

在Jenkinfile中,如果分支未開發,我添加了一個條件以跳過部署階段。您可以在Jenkins構建日志中進行檢查。另外,如果您在藍海儀表板中檢查構建流程,則可以清楚地看到跳過的部署階段,如下所示。

如何使用Jenkins多分支管道

現在合并功能分支PR并將新的PR從development提升到master分支。

Jenkins將收到來自Github的Webhook,以獲取新的PR,并如下所示創建開發管道。

如何使用Jenkins多分支管道

對于開發分支,啟用了部署階段,如果您檢查了Blue Ocean的構建流程,則可以看到所有階段都已成功觸發。

如何使用Jenkins多分支管道

對多分支管道進行故障排除

我將討論在多分支管道中可能會遇到的一些錯誤,以及如何解決這些錯誤。

分支發現問題

有時,即使在SCM中創建了新分支之后,它也可能不會反映在Jenkins管道中。您可以嘗試運行“立即掃描存儲庫”選項以再次掃描存儲庫。另外,檢查管道中的存儲庫掃描配置。

Webhooks 不會觸發管道

當Webhook沒有觸發管道時,請檢查Github中的Webhook交付狀態代碼和錯誤。另外,請檢查Jenkins URL是否正確。

還要從Manage Jenkins-> System Logs-> All  Jenkins日志中檢查Jenkins日志。如果Jenkins能夠接收Webhook,則日志應顯示未觸發作業的原因。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

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

AI

凉山| 浙江省| 会泽县| 宜丰县| 龙胜| 文安县| 阳春市| 宜宾县| 阿拉善左旗| 昆山市| 新绛县| 广西| 桃江县| 宜兴市| 伽师县| 津市市| 镇赉县| 商都县| 大埔县| 徐水县| 永丰县| 哈巴河县| 余干县| 霍州市| 梁山县| 陕西省| 宣城市| 神木县| 祁连县| 北安市| 玉环县| 红安县| 怀化市| 长沙县| 抚州市| 吴江市| 虞城县| 盱眙县| 安吉县| 平遥县| 丹凤县|