摘要:
自托管运行程序上的GitHub操作在docker容器中执行,这些容器由操作/运行程序软件预先确定的一组选项启动。如何优雅地为docker create
和docker run
添加自定义选项?
详细信息&解释
当我在自托管的运行程序上运行github操作工作流时,流程开始如下:
- 设置作业
- 初始化容器
- 正在检查docker版本
- 清理以前作业中的资源
- 创建本地容器网络
- 启动作业容器和这里它变得有趣
作业容器是用这样的命令启动的,正如我在日志中看到的:
/usr/bin/docker create --name da928aa7e61a4a44bd8e525...ea --label d36a64 --workdir /__w/xyz/xyz --network github_network_187...1631 -e "HOME=/github/home" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" etc. pp.
现在,作为CI构建的一部分,我有一些非常特殊的测试要在该容器中运行。为此,我需要为/usr/bin/docker create
指定额外的选项,所以想象一下我需要这个列表中的任何选项。比方说--cap-add
。
我该怎么做?我已经想到了一些选择:
- 我可以破解跑步者,但他们是自动更新的,我不想重复这样做
- 我还可以将/usr/bin/docker移到另一个位置,并用智能bash脚本替换,修改选项,然后调用docker。但这将扰乱该系统上所有用户的docker
还有其他想法吗?
我在这里回答我自己的问题:
选项可以指定为工作流yml的一部分,如下所述:
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer
github/workloads/workflow.yml 的示例部分
(...)
container:
image: contoso.azurecr.io/bionic-custom:latest
options: --cap-add=NET_ADMIN
(...)