首页 > 解决方案 > 无法在 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。

标签: jenkinsgroovy

解决方案


这对我有用:

  String projectDirectory = "terraform"
  String changesetPathRegex = "**/${projectDirectory}/**"

    stage('Build Dockerfile') {
            when { changeset changesetPathRegex }
            steps {
                dir(projectDirectory) {
                    sh 'terraform plan'
                }
            }
        }

应该查看当前 repo 的“terraform”文件夹,如果发现那里有变化,就做这些事情。


推荐阅读