2016-03-30 25 views
54

如何從Jenkinsfile內部觸發構建另一個作業?如何使用GitHub組織插件從jenkins管道(jenkinsfile)觸發另一項工作?

我假設這個工作是在同一個github organization下的另一個倉庫,它已經有了自己的Jenkins文件。

我也想這樣做只有當分支名稱是主人,因爲它沒有任何意義觸發任何本地分行的下游生成。

更新:

stage 'test-downstream' 
node { 
    def job = build job: 'some-downtream-job-name' 
} 

不過,在執行時會出現錯誤

無參數的工作命名一些-downtream在職名發現

我相信這工作存在於jenkins中,並且與當前組織文件夾位於同一組織文件夾下。這是另一項有自己的工作Jenkinsfile

請注意,此問題特定於GitHub Organization Plugin,它會自動爲您的GitHub組織的每個存儲庫和分支創建和維護作業。

回答

62

首先,它是一個執行插槽的浪費包裹build一步node。你的上游執行者將無緣無故地閒置。

其次,從多分支項目中,可以使用環境變量BRANCH_NAME在當前分支上設置邏輯條件。

第三,job參數採用絕對或相對作業名稱。如果您給出的名稱沒有任何路徑限定,則會引用同一文件夾中的另一個作業,對於多分支項目而言,這意味着同一個存儲庫的另一個分支。

因此你的意思寫的可能是

if (env.BRANCH_NAME == 'master') { 
    build '../other-repo/master' 
} 
+1

謝謝!如果通過任何改變你也知道如何在不等待它完成的情況下觸發這個構建,那麼它將是雙倍的:) – sorin

+17

檢查_Snippet Generator_:'build job:'../other-repo/master',wait:false ' –

+0

謝謝,真棒回答,不知道你在說什麼,當我第一次閱讀這個,但最終到達那裏:) – danday74

9

管道中的命令build是在那裏觸發jenkins中的其他工作。

Example on github

作業必須存在於詹金斯和可參數化。 至於分支,我想你可以read it from git

+3

我嘗試添加'建設工作:「jobname'但我得到這個錯誤'沒有名爲jobName found',我可以向你保證參數的工作,有這個名稱的工作在組織文件夾的同一級別。 – sorin

+1

是的,有一份工作,但該工作沒有參數化。我試圖瞭解如何參數化由GitHub組織插件創建的作業,但是 – yiwen

+6

作業名稱格式爲:'build job:「$ {ORGANISATION_NAME}/$ {REPO_NAME}/master」' –

38

除了上面提到的答案:我想開始進入第二管道的簡單參數的工作,找到了答案上https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow

所以我用:

stage ('Starting ART job') { 
    build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]] 
} 
+1

構建作業必須嵌入在一個步驟(從版本0.5開始) – rhoerbe

+3

是BUILD_NUMBER由'build'命令調用的Jenkins作業返回了?在下列其中一個階段如何訪問BUILD_NUMBER?任何人都知道該命令記錄在哪裏? – user909481

相關問題