Cuando creo un archivo de flujo de trabajo de GitHub Actions, el archivo YAML de ejemplo contiene runs-on: ubuntu-latest . Según los documentos , solo tengo las opciones entre un par de versiones de Ubuntu, Windows Server y macOS X.
Pensé que GitHub Actions se ejecuta dentro de Docker. ¿Cómo elijo mi imagen de Docker?
Un trabajo (como parte de un flujo de trabajo) se ejecuta dentro de una máquina virtual. Usted elige uno de los entornos proporcionados por ellos (por ejemplo ubuntu-latest o windows-2019 ).
Un trabajo consta de uno o más pasos . Un paso puede ser un simple comando de shell, usando run . Pero también puede ser una acción , usando usos
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.07run: <COMMAND> ejecuta el comando con el shell del sistema operativouses: actions/checkout@v1 ejecuta la acción de las actions de usuario/organización en el repositorio de checkout ( https://github.com/actions/checkout ), versión principal 1uses: ./.github/actions/my-action ejecuta la acción que está definida en su propio repositorio en esta rutauses: docker://continuumio/anaconda3:2019.07 ejecuta la imagen anaconda3 del usuario/organización continuumio , versión 2019.07 , desde Docker Hub ( https://hub.docker.com/r/continuumio/anaconda3 )Tenga en cuenta que debe seleccionar una distribución de Linux como entorno si desea utilizar Docker.
Echa un vistazo a la documentación de usos y corre para obtener más detalles.
También se debe tener en cuenta que hay una opción de container , que le permite ejecutar cualquier paso que normalmente se ejecutaría en el host para que se ejecute dentro de un contenedor: https://help.github.com/en/articles/workflow-syntax- para-github-acciones#jobsjob_idcontainer
Las acciones de GitHub aprovisionan una máquina virtual, como notó, ya sea Ubuntu, Windows o macOS, y ejecuta su flujo de trabajo dentro de eso. Luego puede usar esa máquina virtual para ejecutar un flujo de trabajo dentro de un contenedor.
Utilice el especificador de container para ejecutar un paso dentro de un contenedor. Asegúrese de especificar runs-on como el entorno de host adecuado para su contenedor ( ubuntu-latest para contenedores de Linux, windows-latest para contenedores de Windows). Por ejemplo:
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