gpt4 book ai didi

gitlab - 如何设置动态 gitlab-ci 文件

转载 作者:行者123 更新时间:2023-12-02 19:56:39 24 4
gpt4 key购买 nike

我正在尝试设置一个动态 gitlab-ci 文件,其中包含基于项目变量所需的 gitlab-ci 文件。

不幸的是,我似乎无法让它工作,我已经阅读了文档并搜索了论坛,但遗憾的是我找不到任何解决方案。

如何实现动态 gitlab-ci 文件?

本质上,我想做类似下面代码片段的事情,但我注意到我无法在文件方法中使用变量(返回“无效配置:文件不存在”。)。

include:
- project: 'tools/gitlab-ci'
file: '/gitlab-ci-$GITLABFILE.yml'
only:
- $GITLABFILE
include:
- project: 'tools/gitlab-ci'
file: '/gitlab-ci.yml'
only:
- $GITLABFILE == null

由于我无法在文件方法中使用变量,因此我尝试了以下配置,但不幸的是它总是加载最后一个文件并忽略唯一的关键字。

include:
- project: 'tools/gitlab-ci'
file: '/gitlab-ci.yml'
except:
variables:
- $GITLABFILE

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-legacy.yml'
only:
variables:
- $GITLABFILE == 'legacy'

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-legacy-nobuild.yml'
only:
variables:
- $GITLABFILE == 'legacy-nobuild'

我期望一个 gitlab-ci 文件可以根据变量检索其他 gitlab-ci 文件。

希望有人可以帮助我或为我指明正确的方向。

最佳答案

感谢 Ivan,我找到了完美的解决方案,我所做的是创建 1 个 gitlab-ci,其中包括所有其他文件,并且在每个特定文件中我使用了 Ivan 建议的唯一关键字。

现在我的文件如下所示:

项目级别上存在的 gitlab-ci(在每个项目中):

include:
- project: 'tools/gitlab-ci'
file: '/selector.yml'

然后我的选择器.yml 文件如下所示:

include:
- project: 'tools/gitlab-ci'
file: '/gitlab-ci-global.yml'

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-nobuild.yml'

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-legacy.yml'

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-multitheme.yml'

- project: 'tools/gitlab-ci'
file: '/gitlab-ci-default.yml'

由于正在读取所有文件,我必须将 before_script 任务移动到每个单独的阶段,否则 gitlab 只会读取最后一个 before_script 声明,因此我为此创建了一个模板/ anchor :

.before_script_template: &before-script-legacy
before_script:
- apt-get update -y && apt-get install -yqqf openssh-client git unzip sshpass rsync --fix-missing

# Is probably already present but just to be sure.
- npm install -g gulp
- npm install -g bower

- echo "You've set the GITLABFILE var to legacy and therefore get this file"

compile_legacy:
stage: build
<<: *before-script-legacy
script:
- #Some stuff here....
only:
variables:
- $GITLABFILE == "legacy" && $SKIP_COMPILE == null

另请注意,每个阶段都必须有唯一的标识符/作业名称!

关于gitlab - 如何设置动态 gitlab-ci 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com