75

当我创建 GitHub Actions 工作流文件时,示例 YAML 文件包含runs-on: ubuntu-latest. 根据文档,我只有几个版本的 Ubuntu、Windows Server 和 macOS X 之间的选项。

我认为 GitHub Actions 在 Docker 内部运行。如何选择我的 Docker 镜像?

4

2 回答 2

90

GitHub 操作配置了一个虚拟机——正如你所提到的,Ubuntu、Windows 或 macOS——并在其中运行你的工作流程。然后,您可以使用该虚拟机在容器内运行工作流。

使用说明container在容器内运行步骤。请务必runs-on为您的容器指定适当的主机环境(ubuntu-latest对于 Linux 容器,windows-latest对于 Windows 容器)。例如:

jobs:
  vm:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo This job does not specify a container.
          echo It runs directly on the virtual machine.
        name: Run on VM
  container:
    runs-on: ubuntu-latest
    container: node:10.16-jessie
    steps:
      - run: |
          echo This job does specify a container.
          echo It runs in the container instead of the VM.
        name: Run in container
于 2019-10-23T11:20:35.933 回答
50

作业(作为工作流的一部分)在虚拟机内运行。您选择他们提供的环境之一(例如ubuntu-latestwindows-2019)。

一项工作由一个或多个步骤组成。一个步骤可能是一个简单的 shell 命令,使用run。但它也可能是一个动作,使用使用

name: CI

on: [push]

jobs:
  myjob:
    runs-on: ubuntu-18.04 # linux required if you want to use docker
    steps:
    # Those steps are executed directly on the VM
    - run: ls /
    - run: echo $HOME
    - name: Add a file
      run: touch $HOME/stuff.txt
    # Those steps are actions, which may run inside a container
    - uses: actions/checkout@v1
    - uses: ./.github/actions/my-action
    - uses: docker://continuumio/anaconda3:2019.07
  • run: <COMMAND>使用 OS 的 shell 执行命令
  • uses: actions/checkout@v1actions从存储库checkout( https://github.com/actions/checkout ) 中的用户/组织运行操作,主要版本 1
  • uses: ./.github/actions/my-action运行在此路径下您自己的存储库中定义的操作
  • uses: docker://continuumio/anaconda3:2019.07从 Docker Hub ( https://hub.docker.com/r/continuumio/anaconda3 )运行anaconda3来自用户/组织continuumio、版本的映像2019.07

请记住,如果要使用 Docker,则需要选择 linux 发行版作为环境。

查看使用文档并运行以获取更多详细信息。

还应该注意的是,有一个container选项允许您运行通常在主机上运行的任何步骤以在容器内运行:https ://help.github.com/en/articles/workflow-syntax-for -github-actions#jobsjob_idcontainer

于 2019-08-19T00:56:13.620 回答