如何让 gitlab-runner 从指定文件中读取而不是 .gitlab-ci.yml?

Posted

技术标签:

【中文标题】如何让 gitlab-runner 从指定文件中读取而不是 .gitlab-ci.yml?【英文标题】:How to make gitlab-runner read from a specified file instead .gitlab-ci.yml? 【发布时间】:2018-02-23 15:04:57 【问题描述】:

我在本地使用gitlab-runner,在包含.gitlab-ci.yml 的存储库的根目录中使用sudo gitlab-runner exec docker [job name]。是否可以从.gitlab-ci.yml以外的其他文件中读取运行器配置?

我知道我可以在同一个.gitlab-ci.yml 中管理不同作业中的不同配置。

我知道 gitlab-runner exec 已被弃用,并计划仅替换它,但尚未实现(有关详细信息,请参阅 https://gitlab.com/gitlab-org/gitlab-runner/issues/2797),因此我也感谢有关继任者的建议。

我在名为main 的作业中使用名为a 的YAML 创建了https://gitlab.com/krichter/gitlab-runner-local-different-name,其中包含“Hello world”-echo,我想将其作为示例运行,而无需重命名a.gitlab-ci.yml

使用sudo gitlab-runner exec docker main --env CI_CONFIG_PATH=a 运行失败,原因是

WARNING: Since GitLab Runner 10.0 this command is marked as DEPRECATED and will be removed in one of upcoming releases 
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
FATAL: open .gitlab-ci.yml: no such file or directory

【问题讨论】:

【参考方案1】:

真的不能:.gitlab-ci.yml 被硬编码到 gitlab-runner exec 代码中。我创建了issue about this problem。如果它仍然与您相关,请点赞。

【讨论】:

【参考方案2】:

你可以gitlab-runner exec docker job --env CI_CONFIG_PATH=[pathtoyml]

见: https://gitlab.com/gitlab-org/gitlab-runner/issues/312

另请参阅: https://docs.gitlab.com/ce/ci/variables/README.html

【讨论】:

gitlab-runner exec shell job --env CI_CONFIG_PATH=[pathtoyml] 失败并出现名为agitlab-runner 10.5.0 的有效GitLab CI Yaml。 任何具体错误? sudo gitlab-runner exec docker [job name] --env CI_CONFIG_PATH=a 也失败了?您是否尝试在 Gitlab 项目中设置变量? 我在问题中添加了一个示例项目,并输出了您建议的命令。在项目中设置变量(我假设您指的是 CI 设置中的秘密输入变量)无效。 gitlab runner 如何看到 git repo?你用音量挂载它吗? 它不起作用,因为路径是在gitlab-runner exec 代码中硬编码的。

以上是关于如何让 gitlab-runner 从指定文件中读取而不是 .gitlab-ci.yml?的主要内容,如果未能解决你的问题,请参考以下文章

java中如何从一个文件中读文件,然后把另一个文件写入所读文件,最后再储存到另一个文件中

如何从 centos 中完全删除/卸载 gitlab-runner

如何从gitlab-runner执行滚动更新

如何在 gitlab-runner 中发布端口?

c++中读文件时如何read函数读入其他数据类型的数据

使用多个 docker 守护进程运行 gitlab-runner