Gitlab-CI,按计划运行,但仅在发生更改时

时间:2020-08-21 15:42:33

标签: gitlab gitlab-ci

我想每天部署一次项目,但前提是必须进行更改。 我每个人都有一个小时的部署时间,并且可以使用计划的管道触发和部署。

但是,并非总是有需要部署的更改。理想情况下,如果自上次部署以来对代码库未进行任何更改,则管道不会在这一天运行。

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

2 个答案:

答案 0 :(得分:2)

这类似于具有4年历史的功能请求gitlab-org/gitlab-foss issue 19813

GitLab CI仅在特定文件夹已更改时执行

我有一个很大的项目,并且我正在使用带有Pages的GitLab CI进行部署,但是,当我在仓库中更改任何内容时,它将运行CI。

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

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

changes关键字与onlyexcept结合使用,可以定义是否应基于Git推送事件修改的文件来创建作业。

示例:

我希望此功能特别适用于package.jsonpackage-lock.json,因为只有在发生更改时我才能运行npm install

  only:
    changes:
      - package.json
      - package-lock.json

警告,如Matthijs Biermanthe commentsdocumented here中所指出:

请注意,only: changes不能与when: scheduled一起使用

答案 1 :(得分:0)

您需要在Git上创建一个单独的分支 dev ,在其中存储每小时一次的代码更改,并在一天结束时将其与 Master 分支合并触发在Git CI上构建。

通常,Master是用于部署Git CI的默认分支。您也可以将其更改为其他分支。