是否有可能在Jenkinsfile“ changeset”条件下使用正则表达式

问题描述 投票:0回答:1

我们在gitlab仓库中有一个jenkinsfile,根据gitlab变更集,我希望避免几个阶段。基本上,仅修改了K8S conf文件后,就无需构建和推送我们的容器映像。假设仓库中有4个文件夹:

  • velero
  • k8s
  • 监视
  • dockerimages

[首先,我尝试了以下操作,但是在同一提交上更改dockerimages和k8s文件夹中的文件将被视为有效条件,并且将避免执行步骤……这当然不是我们想要的。

when {
   not {
      changeset "**/k8s/**" 
   }
   not {
      changeset "Monitoring/**"
   }
   not {
      changeset "
   }
}

所以我想到了这一点,但是看起来正则表达式没有得到正确的评估,无论更改如何,总是避免使用步骤。因此,正则表达式是错误的,还是在变更集条件下不允许使用正则表达式?

when {
   anyOf {
      changeset '^((?!velero|k8s|monitoring).)*$'
   }
}

当然,我们可以使用“ anyOf”条件列出所有我们想要触发构建和推送的文件夹,但是灵活性较差,因为我们要构建的文件夹比要避免的文件夹要多,而添加新的文件夹来构建还需要更新jenkinsfile。

如果你们有个主意...请让我知道:)

jenkins
1个回答
0
投票

没关系...找到了另一种方法。我打算基于提交内容的更改绕过我们的管道步骤,但是以下方法提供了更大的灵活性,允许开发人员在任何提交注释中键入“ #DNB”(不区分大小写)时都可以绕过这些步骤。

when { 
    not {
        changelog '^.*(?i)#DNB.*$'
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.