web-dev-qa-db-fra.com

Actions Github: exécuter l'étape sur un système d'exploitation spécifique

J'exécute un flux de travail sur tous les systèmes d'exploitation.

Cependant, il y a une étape spécifique que je dois exécuter uniquement sur Ubuntu:

runs-on: ${{ matrix.os }}
strategy:
    matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
    - name: Setup Ubuntu
      run : export DISPLAY="127.0.0.1:10.0"
      if: # --> What should be here? <--

Je n'ai trouvé aucun exemple ni explication sur la façon d'exécuter des étapes sur des systèmes d'exploitation spécifiques.

Quelqu'un peut-il aider?

9
yahavi

Vous pouvez utiliser soit if: matrix.os == 'NAME_FROM_MATRIX' ou if: runner.os == 'OS_TYPE'

Pour vérifier le contexte de la matrice:

if: matrix.os == 'ubuntu-latest'

if: matrix.os == 'windows-latest'

if: matrix.os == 'macOS-latest'

Pour vérifier le contexte du coureur:

if: runner.os == 'Linux'

if: runner.os == 'Windows'

if: runner.os == 'macOS'

Documentation connexe: contexte du coureur

[~ # ~] mise à jour [~ # ~]

GitHub fournit RUNNER_OS variable maintenant, ce qui simplifie les vérifications à l'intérieur d'une seule étape:

- name:  Install
  run:   |
         if [ "$RUNNER_OS" == "Linux" ]; then
              apt install important_linux_software
         Elif [ "$RUNNER_OS" == "Windows ]; then
              choco install important_windows_software
         else
              echo "$RUNNER_OS not supported"
              exit 1
         fi
  Shell: bash

Cela pourrait être une meilleure approche pour les étapes plus complexes, où le système d'exploitation actuel n'est qu'une des nombreuses variables.

10
Samira