Gitlab CI,按计划运行,但仅在发生更改时运行
我想每天部署一次我的项目,但前提是有更改。 我可以在每个小时内部署一个特定的时间,并且我很习惯使用预定的管道来触发和部署 但是,并不总是有需要部署的更改。理想情况下,如果自上次部署以来代码库没有任何更改,那么管道将不会在当天运行Gitlab CI,按计划运行,但仅在发生更改时运行,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我想每天部署一次我的项目,但前提是有更改。 我可以在每个小时内部署一个特定的时间,并且我很习惯使用预定的管道来触发和部署 但是,并不总是有需要部署的更改。理想情况下,如果自上次部署以来代码库没有任何更改,那么管道将不会在当天运行 有没有办法实现这种行为?这类似于4年前的功能请求 GitLab CI仅在某个文件夹发生更改时执行 我有一个相当大的项目,我使用GitLab CI和页面来部署它,但是,当我在repo中更改任何内容时,它会运行CI 我不希望发生这种情况,我希望它仅在src文件夹更改时运行。
有没有办法实现这种行为?这类似于4年前的功能请求 GitLab CI仅在某个文件夹发生更改时执行 我有一个相当大的项目,我使用GitLab CI和页面来部署它,但是,当我在repo中更改任何内容时,它会运行CI 我不希望发生这种情况,我希望它仅在
src
文件夹更改时运行。这可能吗 最近(2020年7月)的结论是 将
changes
关键字与only
或except
一起使用,可以定义是否应基于Git push事件修改的文件创建作业
例如:
我特别想为package.json
和package lock.json
使用此功能,因为只有在发生更改时,我才能运行npm install
警告,如中和中所述:
请注意,
only:changes
不适用于when:scheduled
您需要在Git上创建单独的分支dev,在那里存储每小时更改的代码,并在一天结束时将其与触发build on Git CI的Master分支合并
通常,Master是Git CI部署的默认分支。您还可以将其更改为不同的分支。您将需要一些外部状态,以存储上次生成的提交。然后每天都可以检查最近的提交是否是您生成的最后一次提交,如果是,则跳过生成。请注意,
仅限:更改
不适用于何时:计划
。见@MatthijsBierman谢谢。我已将您的评论包含在答案中,以提高可视性。
only:
changes:
- package.json
- package-lock.json