jenkins - 当特定文件夹中的文件发生更改时触发多分支管道
问题描述
当文件夹中的某些文件被推送到 BitBucket 时,我想运行多分支管道。我尝试过轮询忽略对某些路径的提交。但管道没有触发。任何人都可以帮助解决问题。如何在包含的轮询区域内准确指定路径会忽略对某些路径的提交。
解决方案
我在包含andJenkinsfile
的 Git 存储库中使用了以下内容:1.txt
2.txt
pipeline {
agent any
stages {
stage('1.txt in changelog') {
when {
// see https://www.jenkins.io/doc/book/pipeline/syntax/#built-in-conditions
changelog '1.txt'
}
steps {
echo '1.txt in changelog'
}
}
stage('2.txt in changelog') {
when {
changelog '2.txt'
}
steps {
echo '2.txt in changelog'
}
}
stage('1.txt in changeset') {
when {
changeset '1.txt'
}
steps {
echo '1.txt in changeset'
}
}
stage('2.txt in changeset') {
when {
changeset '2.txt'
}
steps {
echo '2.txt in changeset'
}
}
}
}
更改并推送2.txt
相应多分支管道项目的控制台输出后显示:
...
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (1.txt in changelog)
Stage "1.txt in changelog" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (2.txt in changelog)
[Pipeline] echo
2.txt in changelog
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (1.txt in changeset)
Stage "1.txt in changeset" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (2.txt in changeset)
[Pipeline] echo
2.txt in changeset
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
这同样适用于创建2.txt
但不适用于删除它。
推荐阅读
- python-3.x - pyTelegramBotAPI 和 SpeechRecognition
- c++ - 指向结构/类 C++ 中的结构/类的指针
- php - php.ini 说它正在被读取,但没有出现任何自定义
- java - 在java中的ParameterizedTest中传递int数组
- azure-active-directory - 用于 MicroStrategy Server 的 AzureAD 身份验证的 Snowflake ODBC 设置
- core-data - 为什么 @FetchRequest 在 ContentView 中失败
- .net - 获取图像的所有颜色
- wordpress - AJax 调用在 wp_insert_user 上自动创建 html 实体
- google-bigquery - BigQuery - 如何超过 10'000 列?
- javascript - 我需要在 javascript 中创建一个函数,在其中执行 curl 请求,然后提供内联输入