3

概括:

自托管运行器上的 GitHub 操作在 docker 容器中执行,这些容器以一系列选项启动,由操作/运行器软件预先确定。如何优雅地为docker createand添加自定义选项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 混淆。

还有其他想法吗?

4

1 回答 1

0

我在这里回答我自己的问题:

可以将选项指定为工作流 yml 的一部分,如下所述:

https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer

.github/workflows/workflow.yml 的示例部分

(...)
    container:
      image: contoso.azurecr.io/bionic-custom:latest
      options: --cap-add=NET_ADMIN
(...)
于 2020-07-30T12:57:53.063 回答