94 votes

Comment utiliser Docker avec les actions GitHub ?

Lorsque je crée un fichier de flux de travail GitHub Actions, le fichier YAML d'exemple contient runs-on: ubuntu-latest . Selon les docs Je n'ai le choix qu'entre quelques versions d'Ubuntu, Windows Server et macOS X.

Je pensais que GitHub Actions fonctionnait avec Docker. Comment choisir mon image Docker ?

110voto

Edward Thomson Points 21899

Les actions GitHub provisionnent une machine virtuelle - comme vous l'avez noté, soit Ubuntu, Windows ou macOS - et exécutent votre flux de travail à l'intérieur de celle-ci. Vous peut puis utiliser cette machine virtuelle pour exécuter un flux de travail dans un conteneur.

Utilice le site container prescripteur pour exécuter une étape à l'intérieur d'un conteneur. Veillez à spécifier runs-on comme environnement hôte approprié pour votre conteneur ( ubuntu-latest pour les conteneurs Linux, windows-latest pour les conteneurs Windows). Par exemple :

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

55voto

soerface Points 4620

A emploi (dans le cadre d'un flux de travail ) s'exécute à l'intérieur d'une machine virtuelle. Vous choisissez l'un des environnements suivants fournis par eux (par exemple ubuntu-latest o windows-2019 ).

Un travail consiste en un ou plusieurs étapes . Une étape peut être une simple commande shell, utilisant exécuter . Mais il peut aussi s'agir d'un action en utilisant utilise

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> exécute la commande avec le shell de l'OS
  • uses: actions/checkout@v1 exécute l'action depuis l'utilisateur / l'organisation actions dans le dépôt checkout ( https://github.com/actions/checkout ), version majeure 1
  • uses: ./.github/actions/my-action exécute l'action qui est définie dans votre propre référentiel sous ce chemin
  • uses: docker://continuumio/anaconda3:2019.07 exécute le anaconda3 image de l'utilisateur / de l'organisation continuumio version 2019.07 à partir du Docker Hub ( https://hub.docker.com/r/continuumio/anaconda3 )

Gardez à l'esprit que vous besoin de sélectionner une distribution linux comme environnement si vous voulez utiliser Docker.

Jetez un coup d'œil à la documentation de utilise y exécuter pour plus de détails.

Il convient également de noter qu'il existe un container qui vous permet d'exécuter toutes les étapes qui seraient normalement exécutées sur l'hôte à l'intérieur d'un conteneur : https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idcontainer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X