如何实现:当一个目录下(包括任意级子目录下)有任何文件改动时,触发流水线

changes检测的深度不够,所以我想到用下面的方式来达到目录,有没有什么更好的解决方式?

changes:
- $CURRENT_PROJECT/*
- $CURRENT_PROJECT//*
- $CURRENT_PROJECT/
//*
- $CURRENT_PROJECT/
///*
- $CURRENT_PROJECT/////*
- $CURRENT_PROJECT//////*
- $CURRENT_PROJECT/
//////*
- $CURRENT_PROJECT/
///////*
- $CURRENT_PROJECT/////////*

看这个深度… 你是希望整个仓库如果有文件变化,则触发流水线?GitLab默认就是这个规则,不用changes来检测和触发。其他不希望触发的job可以用changes来进行排除。

仓库是由多个子工程组成的微服务项目,流水线设计上采用父子流水线的方式。
比如我有下面三个子工程,分别对应三个子流水线

  • demo-project-1
  • demo-project-2
  • demo-project-3

我希望在父流水线上设置一个规则,当demo-project-1下有文件改动时,就只触发这个子流水线。

目录下任意文件的修改,应该用:<目录名>/**/*  

参考:

trigger_1:
  stage: triggers
  trigger:
    include: demo-project-1/.gitlab-ci.yml
  rules:
    - changes:
        - demo-project-1/**/*

问题解决了。是我自己理解错了,感谢解答!

  • A directory and all its subdirectories, for example path/to/directory/**/*.
1 个赞