是否可以有一个通用的 .gitlab-ci.yml,而不是在每个项目中重复对 .gitlab-ci.yml 的更改?

是否可以有一个通用的 .gitlab-ci.yml,而不是在每个项目中重复对 .gitlab-ci.yml 的更改?

目前,我们在每个项目中都放置了一个 .gitlab-ci.yml。目前我们有 50 多个项目,每次 .gitlab-ci.yml 发生更改时,团队都必须更改所有项目的结构。是否可以有一个通用的 .gitlab-ci.yml?

尝试

  1. 尝试过一个 gitlab-ci.yml,但不知道如何更改此文件的默认路径
  2. 通用脚本减少了代码重复量,但如果 gitlab-ci.yml 结构发生变化,我们必须在所有项目中实现它

答案1

不,这是不可能的。这违背了该方法存在的原因,因为如果你添加一个需要完全不同的 yml 文件的 git repo/project 怎么办?

您可以做的(如您所述)是运行一个脚本,该脚本在.gitlab-ci.yml运行过程中下载。如下所示:

stages:
  - prep
  - run

get_script:
  stage: prep
  script:
    - wget http://my_local_script.lan/run_suite.sh -O /tmp/run_suite.sh

run_script:
  stage: run
  script:
    - bash /tmp/run_suite.sh

将其设置为每个项目的脚本,然后您需要做的就是更新一次 run_suite.sh,所有新项目都会使用它。

恐怕我想没有比这更好的办法了。

答案2

如果我想要一个全局 CI 配置,我会使用系统挂钩。

当然,你会失去 Gitlab CI 的一些(全部)酷炫功能

相关内容