我正在尝试Jenkins管道和里程碑,并且无法弄清楚为什么Jenkins在新构建跨越里程碑时不取消之前的构建 .
示例Jenkinsfile
pipeline {
agent any
parameters {
booleanParam(defaultValue: true, description: '', name: 'userFlag')
}
stages {
stage("foo") {
steps {
milestone(ordinal: 1, label: "BUILD_START_MILESTONE")
sh 'sleep 1000'
}
}
}
}
触发此管道两次不会取消第一个作业
5 回答
我不认为这种行为是“如果我是一个跨越这个里程碑的新建筑,那么所有越过这个里程碑的旧版本将被取消”
里程碑步骤的实际行为是,当最近的管道首先穿过它时,它会阻止旧管道越过该里程碑 .
试试这个:
根据document,我有一个简单的工作milestone plugin:
你可以尝试这样的事情:
你可以把它放在任何管道的开头 .
假设你刚开始一个新版本,#5 . 第一个里程碑,将用于传递#4的第二个里程碑,第二个里程碑(#5)将用于杀死#4的进程,如果它当前正在运行 .
根据https://jenkins.io/blog/2016/10/16/stage-lock-milestone/,一对'milestone()'对我来说可以杀死以前的工作,而管道开始了很多次,
最后一个里程碑有助于杀死以前的版本,如果达到,请点击部署按钮以获取上述情况 . 或者针对以下情况发布的锁定资源,
我认为这是正常行为 . 如果你想要只运行工作,你可以添加
如果你想杀死当前的作业并触发一个新作业,你可以在你的构建中添加一些groovy来做到这一点 .