jenkins - 仅触发 Jenkinsfile 构建以更改某些路径
问题描述
我在同一个存储库中有一个用于多个多分支管道的 Jenkinsfile,我发现令人沮丧的一件事是,当我进行任何更改时,所有管道都会被触发,而实际上通常只需要触发一个管道。
是否可以使用 Jenkins 文件选择性地包含或排除将导致触发构建的路径?
我正在考虑类似于下面的内容,但是查看文档我看不到对这种简单方法的任何引用。但是,我是詹金斯的新手,所以我希望我遗漏了一些东西。
pipeline {
agent {
label 'Codebuild'
}
trigger {
include '/some/path
}
stages {
stage('Do the magic') {
steps {
script {
...do stuff here...
}
}
}
}
}
解决方案
您可以使用when condition
来确定是否应根据给定条件执行阶段。
在此可以使用选项/条件changeset
将阶段执行限制为仅在特定文件更改的情况下执行。
有关when
和changeset
选项的更多信息:
https ://www.jenkins.io/doc/book/pipeline/syntax/#when
例子:
stages {
stage('Do the magic') {
// Below condition you can change based on your usecase
when { changeset "src/*.js"}
steps {
sh "make build"
...
}
}
}
推荐阅读
- r - 如何使用正则表达式在特定字符之后提取一串数字的特定实例
- python - 执行任何 eb 命令时,终端中的 awsebcli 'SyntaxError- no encoding declared'
- azure - 使用 Azure CLI 连接到 Linux 上的 Azure CosmosDB 模拟器
- javascript - 盒子之塔(愤怒的小鸟)
- javascript - 如何在 Vuex 中使用动态键正确访问记录
- dask - Dask 与 Pyarrow 的兼容性并从 CSV 读取
- vue.js - Vue2/Router3 — 滚动行为不起作用
- drag-and-drop - Kotlin可组合detectDragGestures在放置位置输出?
- elasticsearch - 我们如何在 Java 代码中实现累积基数?
- javascript - 如果我单击按钮,有没有办法查看按高度计算的手风琴菜单?