如何让 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]
失败并出现名为a
和gitlab-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中如何从一个文件中读文件,然后把另一个文件写入所读文件,最后再储存到另一个文件中