我在這里查看 Jenkins Scripted Pipeline 教程https://www.jenkins.io/blog/2019/12/02/matrix-building-with-scripted-pipeline/發現我需要學習一些 Groovy 才能理解這一點.
我一直在閱讀 Groovy 檔案,但仍然不理解所有這些代碼。我將列出有問題的領域。
1
List getMatrixAxes(Map matrix_axes) {
List axes = []
matrix_axes.each { axis, values ->
List axisList = []
values.each { value ->
axisList << [(axis): value]
}
axes << axisList
}
// calculate cartesian product
axes.combinations()*.sum()
}
在我見過的大多數 Groovy 檔案中,它定義了諸如List axes = []. 上面的語法看起來更像是一個回傳串列的函式。如果是這樣,我在大括號內看不到任何 return 陳述句,這讓我很困惑。
2
node(nodeLabel) {
withEnv(axisEnv) {
stage("Build") {
echo nodeLabel
sh 'echo Do Build for ${PLATFORM} - ${BROWSER}'
}
stage("Test") {
echo nodeLabel
sh 'echo Do Build for ${PLATFORM} - ${BROWSER}'
}
}
}
我node之前在 Groovy 腳本中看到過這個概念,引數部分有一些東西,即:node(nodelabel) {...},有時沒有,即:node {...}。這是核心 Groovy 還是某種特定于 Jenkins 的東西?這是什么意思,我在哪里可以找到有關它的檔案?
uj5u.com熱心網友回復:
getMatrixAxes是一個函式。在 Groovy 中,return 陳述句是可選的。如果您沒有在函式中顯式回傳某些內容,則回傳在方法體或閉包中計算的最后一個運算式。在您的情況下,axes.combinations()*.sum()將回傳由生成的輸出。在示例中,它生成一個List. 您可以從這里閱讀更多內容。這些結構是 Jenkins 特有的。具體來說,提到的語法來自 Jenkins Scripted Pipeline Syntax。
node {...}只是意味著在任何代理上運行。node(nodelabel) {...}表示在帶有標簽的代理上運行nodelabel。Jenkins 有一個新的 Job DSL,稱為宣告式語法,它優于腳本語法。您可以在此處閱讀有關兩者的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/532695.html
下一篇:在C中的遞回函式中回傳
