我有一個引數化的管道,env它采用如下所示的特定值。該引數在腳本中使用,不能更改。但是管理員告訴我,代理的標簽必須取決于引數env和另一個固定的(eG LABELX)。
我遇到的問題是,雖然腳本需要下面顯示的值,但代理的標簽并不總是${params.env},但在一種情況下需要進行映射/翻譯。
這是極其簡化的 groovy 腳本:
pipeline {
agent {label "${params.env} && LABELX"}
parameters {
choice(
name: 'env',
choices: ['development', 'staging', 'production'],
)
}
stages {
stage('Process') {
steps {
sh """
# use ${params.env} in bash script
""""
}
}
}
}
我需要的映射如下:
| 環境 | 標簽 |
|---|---|
| 發展 | 發展 |
| 分期 | 測驗 |
| 生產 | 生產 |
如何在選擇代理之前將引數替換staging為標簽?test我不能在腳本中做到這一點,因為腳本是由代理運行的......我之前必須以某種方式在${params.env}可能的內部做到這一點。或者我需要一個額外的引數(params.label)?
uj5u.com熱心網友回復:
解決它的一種方法是在管道之前創建一個常量標簽映射,然后在管道中使用它來檢索所需的值。
就像是:
LABELS = ['development':'development', 'staging':'test', 'production':'production']
pipeline {
agent {
label "${LABELS[params.env]} && LABELX"
}
parameters {
choice(
name: 'env',
choices: ['development', 'staging', 'production'],
)
}
stages {
stage('Process') {
steps {
sh """
# use ${params.env} in bash script
"""
}
}
}
}
順便說一句,不建議呼叫您的引數env,因為在某些情況下它可能會覆寫或與env包含作業的所有環境引數的默認映射發生沖突,包括在 environment 指令中定義的那些。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483620.html
標籤:詹金斯
