在我的 Jenkinsfile(Jenkins 運行管道)中,我想執行一個命令:
def lastTagV1 = sh(script: 'git describe --abbrev=0 --tags', returnStdout: true).trim()
// same result
def lastTagV2 = sh(script: '''git describe --abbrev=0 --tags''', returnStdout: true).trim()
// same result
def lastTagV3 = sh(script: "git describe --abbrev=0 --tags", returnStdout: true).trim()
但是在執行此步驟時,Jenkins(或 bash)用單引號將縮寫括起來,并且命令失敗:
git describe '--abbrev=0' --tags
fatal: No names found, cannot describe anything.
也許還有另一種從 git 命令獲取最后一個標簽的解決方案,但我想了解為什么以及如何解決這個單引號問題。
解決方案
該命令即使使用單引號也可以在 Jenkins 上運行,但需要先獲取標簽,否則如上所述會失敗。
sh 'git fetch --tags'
def lastTag = sh(script: 'git describe --abbrev=0 --tags', returnStdout: true).trim()
uj5u.com熱心網友回復:
我認為詹金斯沒有任何理由添加這樣的引號。此外,即使使用引號,該命令似乎也有效git describe '--abbrev=0' --tags。我假設您看到該錯誤是因為您的存盤庫中沒有任何標簽。以下對我來說很好。
pipeline {
agent any
stages {
stage('Hello') {
steps {
script {
cleanWs()
git(url: 'https://github.com/jenkinsci/analysis-pom-plugin.git', branch: 'master')
def lastTag = sh(script: 'git describe --abbrev=0 --tags', returnStdout: true).trim()
echo "$lastTag"
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/511671.html
標籤:壳詹金斯詹金斯管道
