簡體   English   中英

如何從GitHub拉取請求觸發Jenkins 2.0管道作業

[英]How to trigger a Jenkins 2.0 Pipeline job from a GitHub pull request

看起來GitHubPullRequestBuilder與Jenkins v2.0管道作業不兼容。

如何配置從GitHub拉取請求事件觸發的管道作業?
關於這個主題的文檔很少,我找不到任何這方面的例子。 或者,最好在GitHub中創建一個Web掛鈎來觸發PR事件的管道作業?

我有類似的問題。 這對我有用

預-REQ

  • 詹金斯訴。 2+(我使用的是Jenkins 2.60)
  • Github(或Githhub企業)帳戶
  • 你的github和Jenkins必須能夠互相交談。

在Github上

  1. 創建具有相關權限的github個人訪問令牌(PAT)。
  2. 對於您的倉庫,請創建一個webhook
    • URL為YourJenkinsURL/github-webhook/
    • 選擇“讓我選擇個別活動”並選中“提取請求”
  3. Jenkins文件添加到repo的根文件夾中。 出於測試目的,您可以將內容作為基本的hello世界,如下所示
pipeline {
        agent any
        stages {
            stage('Test') {
                steps {
                    echo 'Hello World ...'
                }
            }
        }
    }

在詹金斯

  1. 安裝GitHub Pull Request Builder插件。 (你還需要“Github”插件,但通常應該作為Jenkins ver 2+的一部分安裝)
  2. 詹金斯 - 證書
    • 添加github個人訪問令牌(PAT)作為“秘密文本”憑證。
    • 添加github用戶名密碼為'username-password'憑證。
  3. 管理Jenkins - 配置系統
    • Github - Github服務器:這是Github插件的一部分。 添加一個github服務器。 'API URL'默認為https://api.github.com 如果您使用的是企業github,請使用/ api / v3替換為enterprise github url。 對於憑證,請選擇PAT選項。 測試連接。 檢查“管理掛鈎”。
    • GitHub Pull Request Builder:對於'GitHub Server API URL',使用Github Server部分中指定的相同URL。 將“共享密鑰”留空。 對於憑據,請使用“用戶名 - 密碼”憑據。 測試憑據以確保其正常工作。 在我的設置中,選中了“自動管理webhooks”。
  4. 管道工作
    • 使用“管道”選項創建新項目。 注意:這是vanilla Pipeline作業,而不是Multibranch Pipeline。
    • 一般部分:檢查'Github項目' - 項目URL:輸入您的github repo url
    • 構建觸發器:檢查'GitHub Pull Request Builder'
      • 對於'GitHub API憑據'選擇您在'管理Jenkins - 配置系統'屏幕中為GitHub拉取請求構建器設置的選項
      • 對於管理員列表:添加您的用戶名
      • 選中使用github掛鈎進行構建觸發
    • 管道:
      1. 選擇“來自SCM的管道腳本”。 請注意,這假設您的倉庫的根文件夾將包含'Jenkinsfile'
      2. SCM:選擇'Git'
      3. 存儲庫 - 輸入repo詳細信息。 對於憑據,請使用基於“用戶名 - 密碼”的憑據。
      4. 單擊Advanced並將refspec添加為+refs/pull/*:refs/remotes/origin/pr/*
      5. 分支 - 應為${sha1}
      6. 腳本路徑:默認為Jenkinsfile ,保持原樣。
      7. 輕量級結賬 - 取消選中( https://github.com/jenkinsci/ghprb-plugin/issues/507

而已。 你們都准備好了。 在您的倉庫的主分支上創建PR現在應該觸發您的Jenkins管道作業

一些觀察

  • 從github重新發送PR的webhook有效負載不會觸發管道但是打開新的PR甚至在github上重新打開已關閉的PR,會觸發管道作業
  • 在管道作業配置中,如果選擇“管道腳本”並將管道腳本粘貼到那里,則作業不會觸發!

使用Pipeline和GitHub pull請求的最直接的方法是將腳本放在名為Jenkinsfile存儲庫中,然后安裝GitHub Branch Source插件。 文檔

簡而言之,流程可以是這樣的:

  1. 您將管道創建為代碼並將其保存在項目根目錄中名為Jenkinsfile的文件中。 該代碼應描述您的項目將如何構建。 請參閱此處的示例: https//jenkins.io/doc/pipeline/examples/

  2. 然后,您應該在Jenkins中創建一個新的“Multibranch Pipeline Project”項目。 您應該對其進行設置,以便掃描步驟1的回購。

  3. 現在每當你在第1步回購時打開一個新的PR分支時,分支將被檢出並將根據它附帶的Jenkinsfile指令構建。 您可以針對構建的內容以及何時構建更多條件。

筆記:

  1. “Multibranch Pipeline Project”示例文檔: https ://jenkins.io/doc/book/pipeline-as-code/(向下滾動到Multibranch Pipeline Projects)

  2. 請記住,在PR上表示贊成后,獲取插件以構建PR不起作用。 這里有一個討論分析: https//github.com/jenkinsci/gitlab-plugin/issues/298有一些解決方法(在討論中也有描述),但它們設置起來非常混亂。

按照以下步驟在GitHub上生成的Pull請求上自動觸發Jenkins作業

  1. 在GitHub上創建一個Web鈎子,即http:/// generic- webhook-trigger / invoke
  2. 內容類型:application / json
  3. 選擇Pull Request as event現在github配置部分完成。

詹金斯工作配置

  1. 在Jenkins下載Generic Webhook Trigger

  2. Jenkins上的Git Hub配置

Git Hub配置

7.在jenkins上選擇Generic Webhook Trigger 8. 在Jenkins上進行通用Webhook觸發器配置並按照步驟9進行操作

9.執行第7步后,Jenkins作業將觸發PullRequest 10.Step 8需要從Pu​​ll request Payload 11獲取信息.Generic Webhook Trigger中的分支配置從Pull Request獲取分支詳細信息

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM