我有兩個不同的Linux服務器(prod和dev),它們有不同的$HOSTNAME和不同的證書,這些證書默認是以主機名命名。
現在我想在Jenkins-Pipeline中確定我在哪個主機上,從而使用正確的證書。
為了做到這一點,我寫了以下測驗腳本:
def labels = []
labels.add('jenkins_<slavehost>_x86')
def builders = [:]
for (x in labels) {
def label = x
builders[label] = {
ansiColor('xterm') {
節點(標簽) {
stage('cleanup') {
deleteDir()
}
stage('test') {
sh """
echo $HOSTNAME
"""
}
}
}
}
}
并行構建器
由于$HOSTNAME沒有被定義,因此無法作業。
groovy.lang.MissingPropertyException: 沒有這樣的屬性。HOSTNAME for class: groovy.lang.Binding
如何在管道中的sh內獲得jenkins-slave的hostname?
因為你可以以任何方式命名節點,你不能只使用NODE_NAME,它不一定要和你在從機上的bash上通過echo$HOSTNAME得到的$HOSTNAME相同。
uj5u.com熱心網友回復:
def getJenkinsMaster() {
return env.BUILD_URL.split('/')[2].split(':')[0]
}
你可以從URL中獲得主機名
uj5u.com熱心網友回復:sh "echo ${env.NODE_NAME}"
你可以添加這個shell命令并從環境變數中獲得主機名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/318075.html
標籤:
上一篇:2021.10.14數字貨幣小計
下一篇:聯邦學習-區塊鏈論文筆記:Record and Reward Federated Learning Contributions with Blockchain
