jenkins - 无法在 JenkinsFile 脚本中使用变更集
问题描述
我的 jenkinsfile 脚本中的一个步骤有问题。我正在尝试使用 when changeset 来确定一组特定的文件是否已更改,因为我只想在某些文件更改时构建。如果文件更改,我添加了此步骤以调用单独的构建作业。
stage('File check') {
when { changeset "**/files"}
steps {
build 'Build and deploy'
}
}
但是我收到一个错误
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Unknown conditional changeset. Valid conditionals are: allOf, anyOf, branch, environment, expression, not @ line 5, column 21.
when { changeset "**/files"}
我错过了什么?我的 Jenkins/groovy 版本有问题吗?我正在使用 Jenkins 版本。2.73.3。
解决方案
这对我有用:
String projectDirectory = "terraform"
String changesetPathRegex = "**/${projectDirectory}/**"
stage('Build Dockerfile') {
when { changeset changesetPathRegex }
steps {
dir(projectDirectory) {
sh 'terraform plan'
}
}
}
应该查看当前 repo 的“terraform”文件夹,如果发现那里有变化,就做这些事情。
推荐阅读
- python - Pytorch BERT:形状错误的输入
- javascript - 如何在material-ui中自定义活动选项卡的字体大小
- ios - 将文件从音乐库导出到 Documents 目录 (Swift 5)
- ansible - 使用 ceph-ansible 和滚动更新 playbook 对 Ceph 集群进行次要版本更新
- kedro - 如何创建目录条目列表并将它们作为输入传递到 Kedro Pipeline
- javascript - 未捕获的类型错误:无法在 HTMLFormElement 处读取 null 的属性“值”。
- python-3.x - 为什么Python中关于子类的以下代码会抛出错误?
- mongodb - 在 mongoDB 中查找以 16:xx:xx 开头的集合中的元素
- c# - RDLC - 在代码中使用 DataTable 创建数据集
- android - Android - 通过解析服务器中的关系列过滤结果