Github Actions,自托管运行程序:可以向“ docker create”添加选项吗?

时间:2020-07-30 11:46:40

标签: docker github-actions github-actions-runners

摘要:

GitHub上的自托管运行器操作在docker容器中执行,该容器以一堆选项启动,这些选项由action / runner软件预先确定。如何为docker createdocker run添加自定义选项?

详细信息和说明

当我在自托管运行器上运行github action工作流时,该过程如下所示:

  • 设置工作
  • 初始化容器
    • 检查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指定其他选项,因此,想象一下我需要此list中的任何选项。假设--cap-add

我该怎么做?我已经想到了一些选择:

  • 我可以破解跑步者,但他们正在自动更新,我不想重复这样做。
  • 我还可以将/ usr / bin / docker移到其他位置,并替换为智能bash脚本,修改选项,然后调用docker。但这会使该系统上所有用户的docker陷入困境。

还有其他想法吗?

1 个答案:

答案 0 :(得分: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
(...)