2016-04-25 122 views
16

看起來GitHubPullRequestBuilder與Jenkins v2.0管道作業不兼容。如何從GitHub拉取請求觸發Jenkins 2.0管道作業

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

回答

1

使用Pipeline和GitHub pull請求最直接的方法是將腳本放到名稱爲Jenkinsfile的存儲庫中,然後安裝GitHub Branch Source插件。 Documentation

+0

只適用於組織成員的PR,還是僅適用於外部貢獻者的PR? – elopio

+0

@elopio,該插件可以選擇從相同的存儲庫以及外部存儲庫啓用/禁用PR構建。這不完全是你要求的,但可能足夠接近。 –

+1

這個官方[jenkinsci/workflow-demo](https://hub.docker.com/r/jenkinsci/workflow-demo/)docker image用於播放PRs測試和'Jenkinsfile'。我想知道是否有可能在PR上進行漂亮的紅色和綠色檢查,並且完全有可能([示例](https://github.com/jenkinsci/docker-workflow-plugin/pull/57)): )這裏是一個[關於多分支工作流程的有用帖子](https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/) – GabLeRoux

2

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

  1. 創建您的管道作爲代碼,並保存在一個文件中,在你的項目的根目錄稱爲Jenkinsfile。該代碼應該描述你的項目將如何建立。請參閱此處的示例:https://jenkins.io/doc/pipeline/examples/

  2. 然後,您應該在Jenkins中創建一個新的「Multibranch Pipeline Project」項目。您應該設置此項以便掃描您的步驟1的回購。

  3. 現在,無論您的第1步回購中打開一個新的PR分支,該分支都將被檢出並根據Jenkinsfile包含它的說明。您可以對構建內容和時間設置更多條件。

注:

  1. 「多枝管道工程」 的例子文件:https://jenkins.io/doc/book/pipeline-as-code/(向下滾動到多枝管道項目)

  2. 請記住,獲取插件來構建一個公關表揚PR後不起作用。有一個討論分析這裏:https://github.com/jenkinsci/gitlab-plugin/issues/298有解決方法(也在該討論中描述),但它們很難設置。

12

我有類似的問題。下面是我

預-REQ

  • 詹金斯什麼工作版本。 2+(我用的是詹金斯2.60)
  • Github上(或Githhub 企業)佔
  • 你的GitHub和詹金斯必須談得來 對方。

在GitHub上

  1. 創建一個GitHub的個人訪問令牌(PAT)與相關權利。
  2. 爲了您的回購協議,創建
    • 網址爲YourJenkinsURL/github-webhook/
    • 選擇「讓我選擇單個事件」,並檢查「拉請求」
  3. 添加Jenkinsfile到根目錄的網絡掛接你的回購文件夾。出於測試目的,你可以把內容作爲基本的Hello World像下面
 
    pipeline { 
     agent any 
     stages { 
      stage('Test') { 
       steps { 
        echo 'Hello World ...' 
       } 
      } 
     } 
    } 

在詹金斯

  1. 安裝GitHub的拉動請求生成器插件。 (你還需要「Github的」插件,但通常應該被安裝版本作爲詹金斯的一部分2+)
  2. 詹金斯 - 憑據
    • 加入GitHub的個人訪問令牌(PAT)作爲一個「祕密文本」的憑證。
    • 將github用戶名 - 密碼添加爲「用戶名 - 密碼」憑證。
  3. 管理詹金斯 - 配置系統
    • Github上 - Github的服務器:這是Github的插件的一部分。添加一個github服務器。 'API URL'它將默認爲https://api.github.com。如果您正在使用企業github,請使用企業github url,然後使用/ api/v3替換。對於憑證選擇PAT選項。測試連接。 '管理鉤子'被選中。
    • GitHub合併請求生成器:'GitHub服務器API URL'使用與Github服務器部分中指定的相同的URL。將'共享密鑰'留空。對於憑據使用「用戶名 - 密碼」憑證。測試憑據以確保其工作。在我的設置中,選中了「Auto-manage webhooks」。
  4. 管道工作
    • 創建使用「管道」選項的新項目。注意:這是香草Pipeline作業,而不是Multibranch Pipeline。
    • 總務組:檢查「Github上項目」 - 項目網址:輸入您的GitHub庫網址
    • 構建觸發器:檢查「GitHub的拉動請求生成器」
      • 對於「GitHub的API證書」選擇選項你GitHub上設置拉要求建設者在「管理詹金斯 - 配置系統」屏幕
      • 有關管理清單:添加您的用戶名
      • 檢查使用github上掛鉤構建觸發
    • 管道:
      1. 選擇「管道腳本SCM」。請注意,假定您的回購的根文件夾將包含'Jenkinsfile'
      2. SCM:選擇'Git'
      3. 存儲庫 - 輸入回購詳情。對於憑證使用基於「用戶名 - 密碼」的憑據。
      4. 單擊高級和添加的Refspec爲+refs/pull/*:refs/remotes/origin/pr/*
      5. 科 - 應該是${sha1}
      6. 腳本路徑:默認爲Jenkinsfile,保留原樣。
      7. 輕量級結帳 - 取消選中此(https://github.com/jenkinsci/ghprb-plugin/issues/507

就是這樣。你一切都準備好了。創建您的回購主分支公關現在應該觸發您詹金斯管道工作

一些觀察

  • 重新提供從GitHub公關的網絡掛接有效載荷不會觸發管道,但打開一個新的公關,甚至重新 - 在github上打開一個關閉的PR,觸發管道作業
  • 在管道作業配置中,如果選擇「管道腳本」並將管道粘貼到那裏,作業不會觸發!
+0

我們不能用多分支管道做同樣的事嗎?因爲我想玩的分支不是主分支。 @Deepak Rao –

+0

'構建觸發器:檢查'GitHub合併請求生成器',該選項不適合我。該插件已安裝,因爲該選項存在於未使用jenkins文件的其他項目中。有什麼想法嗎? – edthethird

相關問題