Gitlab-CI,按计划运行,但前提是有变化

The*_*Ref 7 gitlab gitlab-ci

我想每天部署我的项目一次,但前提是有更改。我可以在每个特定的小时内进行部署,并且我对使用预定的管道来触发和部署感到满意。

但是,并不总是需要部署的更改。理想情况下,如果自上次部署以来代码库没有发生任何更改,管道当天就不会运行。

有没有办法实现这种行为?

Von*_*onC 2

这类似于 4 年前的功能请求gitlab-org/gitlab-foss问题 19813

GitLab CI 仅在某个文件夹发生更改时执行

我有一个相当大的项目,我使用 GitLab CI 和 Pages 来部署它,但是,当我更改存储库中的任何内容时,它会运行 CI。

我不希望发生这种情况,我希望它仅在src文件夹更改时运行。
这可能吗?

最近(2020 年 7 月)的结论是使用only:changes/except:changes

changes将关键字与onlyor 一起使用except可以定义是否应基于 Git 推送事件修改的文件创建作业。

例子:

我特别想要这个功能package.json,因为只有发生变化package-lock.json我才能运行。npm install

  only:
    changes:
      - package.json
      - package-lock.json
Run Code Online (Sandbox Code Playgroud)

警告,正如Matthijs Bierman评论中指出的,以及此处记录的

请注意,only: changes不适用于when: scheduled

  • 我不认为这就是OP想要的。这仅取决于最后一次推送事件。如果很多天都没有任何推送事件,则作业应该只运行一次,而不是每天运行。 (2认同)