dot*_*nor 5 jenkins jenkins-pipeline
每当我尝试使用 创建条件阶段时buildingTag()
,该阶段总是会被跳过,即使当前提交是一个标签也是如此。这是我的詹金斯文件:
pipeline {
agent {
docker {
image 'node:10'
}
}
stages {
stage('Build') {
steps {
sh 'yarn install'
sh 'node scripts/build.js'
}
}
stage('Lint') {
steps {
sh 'yarn lint'
}
}
stage('Deploy') {
when {
buildingTag()
}
environment {
}
steps {
sh 'node scripts/deploy.js'
sh 'node scripts/publish.js'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
可能是由于这个错误:
https://issues.jenkins-ci.org/browse/JENKINS-55987
解决方法是:
when {
expression {
return !isVersionTag(readCurrentTag())
}
}
Run Code Online (Sandbox Code Playgroud)
和:
def boolean isVersionTag(String tag) {
echo "checking version tag $tag"
if (tag == null) {
return false
}
// use your preferred pattern
def tagMatcher = tag =~ /\d+\.\d+\.\d+/
return tagMatcher.matches()
}
// workaround https://issues.jenkins-ci.org/browse/JENKINS-55987
def String readCurrentTag() {
return sh(returnStdout: true, script: "git describe --tags").trim()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7526 次 |
最近记录: |