Jenkins管道:我有一個管道p1觸發作業j1,然後j2。我想要一些由j1設置並在管道p1中傳遞給j2的參數。我如何使用Jenkins管道插件實現這種功能?在此先感謝將作業(由管道觸發)返回到同一管道的參數/結果
回答
我有一個類似的問題。我必須通過讓作業J1,J2創建屬性文件然後使用主管道P1中的「複製工件」來獲取這些文件來完成。然後將這些屬性轉換爲Java屬性(這可能需要Jenkins中的一些腳本批准)。如果Jenkins管道可以直接在代碼中返回參數(可能有這樣做,但我不知道),那將會很好。從構建步驟返回的結果是RunWrapper,它似乎沒有辦法返回我可以看到的自定義結果(除非我們使用一些現有的屬性,如構建描述)。
所以我有這樣的事情:
// Pipeline code in P1
// Build J1 and get result.
def j1BuildResult = build job: 'J1', parameters: [string(name: 'J1_PROP', value: 'FOO')], propagate: true, wait: true
// Get results of J1
step([$class : 'CopyArtifact', filter: 'j1-result.properties',
fingerprintArtifacts: true,
flatten : true,
projectName : 'J1',
selector : [$class : 'SpecificBuildSelector', buildNumber: buildResult.getNumber().toString()]])
// Load J1 properties (you may need to turn off sandbox or approve this in Jenkins)
Properties j1Props = new Properties()
j1Props.load(new StringReader(readFile('j1-result.properties')))
// Build J2
def j2BuildResult = build job: 'J2', parameters: [string(name: 'J2_PROP', value: j1Props.someProperty)], propagate: true, wait: true
// Get results of J2
step([$class : 'CopyArtifact', filter: 'j2-result.properties',
fingerprintArtifacts: true,
flatten : true,
projectName : 'J2',
selector : [$class : 'SpecificBuildSelector', buildNumber: buildResult.getNumber().toString()]])
// Load J2 properties (you may need to turn off sandbox or approve this in Jenkins)
Properties j2Props = new Properties()
j1Props.load(new StringReader(readFile('j2-result.properties')))
它可以通過 「ENV」 來完成。如果您設法使j1
將其信息添加到版本的env
。
如果j1
是一個pieleline,你可以env.MYKEY=MYVALUE
。 對於自由式的工作,我想它應該使用EnvInject plugin(沒有嘗試)。 在p1
那麼你將得到一個包含這些信息的地圖,如果你超出了構建結果。
所以,如果你在p1
東西線這事:
// somewhere in your pipeline, i.e. p1:
def j1BuildResult = build job: 'J1'
def j1EnvVariables = j1BuildResult.getBuildVariables();
然後j1EnvVariables
將包含您在j1
設置的變量的地圖。
PS:如何將該信息傳遞給參數p2
是例如涵蓋了here。
它會爲我生成一個異常:org.kohsuke.stapler.NoStaplerConstructorException:java.lang.String的任何構造函數上沒有@DataBoundConstructor 修復任何想法 – OlivierTerrien
我嘗試使用'EnvInject plugin',它不起作用。 – igreen
你可以得到的環境變量建立參數一起使用
def buildProperties = runWrapper.rawBuild.getEnvironment()
這是一個常規的地圖。目標參數可與
String someProperty = buildProperties.someProperty
限制接收:需要讓method hudson.model.Run getEnvironment
在「進程內腳本審批」,並調用(因爲rawBuild
)node
關閉這裏面的代碼。
我也試過runWrapper.rawBuild.getAction(ParametersAction.class)
但它需要很多導入到Jenkinsfile中。
注意:runWrapper.getBuildVariables()
對我沒有任何回報。
- 1. 多分支管道與管道作業
- 2. 管道 - 參數化觸發器插件
- 3. 從管道中的jenkinsfile觸發另一個jenkins作業
- 4. 多個管道作業與單個大型管道作業
- 5. Jenkins管道作業構建
- 6. Jenkins管道作業被匿名觸發,但不作爲用戶/管理員
- 7. 管道聲音回放結果
- 8. PowerShell管道參數
- 9. Jenkins管道插件傳遞建立作業參數之間的作業開始在管道
- 10. elixir管道,如果新變量可以管道,如果直接向管道發送不能管道,爲什麼?
- 11. Bluemix交付管道 - 在測試失敗時觸發作業
- 12. Jenkins管道作業沒有在GitHub推送上觸發
- 13. 如何避免Jenkins多分支管道作業觸發本身
- 14. Jenkins管道:觸發下游作業以後運行
- 15. 如何從GitHub拉取請求觸發Jenkins 2.0管道作業
- 16. 如何通過SCM更改觸發jenkins管道作業?
- 17. 從同一管道
- 18. 如何使管道作業等待所有觸發的並行作業?
- 19. 管道破壞返回
- 20. 從shell管道返回true
- 21. 觸發蔚藍數據工廠管道
- 22. 將自由式作業轉換爲管道
- 23. 迭代不同的管道參數
- 24. Java exec()不返回管道連接命令的預期結果
- 25. XPath查詢返回Yahoo管道中的任何結果
- 26. 結束管道操作
- 27. PowerShell的管道輸入發送到管
- 28. Jenkins管道作業中的Artifactory配置
- 29. 每個管道作業的成本
- 30. 從亞馬遜數據管道中的管道調用管道
什麼..........? – StephenKing
你如何觸發它們?你能分享一些代碼嗎? – hakamairi