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