jenkins - Jenkins 条件阶段变更集总是被跳过
问题描述
我正在尝试向 Jenkins 阶段添加条件,因此它只会.yaml
在变更集中的文件发生更改时触发
我最终尝试的代码是:
when {
changeset '*.yaml'
}
根据以下站点,当*.yaml
变更集中的文件发生更改时,这应该会导致该阶段运行,但是始终会跳过此阶段
有谁知道我哪里出错了,或者我还能尝试什么?
谢谢!
解决方案
Jenkins 必须首先收集变更日志,例如 checkout scm。当您只是checkout scm
在 jenkins 管道中运行时,它会告诉您:错误:'checkout scm' 仅在使用“多分支管道”或“来自 SCM 的管道脚本”时可用。
因此,将 Jenkinsfile 中的管道添加到您的存储库。我的存储库包含一个文件test.yaml
和一个Jenkinsfile
带有此管道的文件:
pipeline{
agent any
stages{
stage('checkout'){
steps{
git branch: 'master', url: 'https://github.com/xxx/xxx.git'
}
}
stage('test'){
when {
changeset "*.yaml"
}
steps{
echo "The file did change in the last commit (SCM checking)"
}
}
}
}
现在它将起作用。当您的文件中的 Git 发生更改时,您将看到:
[Pipeline] { (test)
[Pipeline] echo
The file did change in the last commit (SCM checking)
[Pipeline] }
[Pipeline] // stage
否则,如果没有变化:
[Pipeline] { (test)
Stage "test" skipped due to when conditional
[Pipeline] }
推荐阅读
- javascript - client.channels.cache.get('id') 返回空 Map
- nuxt.js - 在哪里部署我的前端和后端应用程序?
- java - 在 while 循环中轮询阻塞队列时安全地线程
- sql - SQL:First_value 函数不能嵌套在 LEAD 函数中
- flutter - Flutter:我没有得到网站的回复
- java - Selenium 4 和 Grid 4.0.0-rc-2-20210930 使用 Ashot 在全页截图中出现问题
- python - 在哈希集中保留非素数与创建布尔数组之间的空间和时间复杂度有什么区别?
- python - 网页抓取 Yahoo Industry
- tensorflow - 如何替换张量流图中的“开关”运算符?
- excel - 在我的 excel 宏中使用 FieldInfo = Array(Array(0, 2), Array(10, 2), Array(15, 2)) 的问题