Skip to main content

Création d’une action composite

Dans ce guide, vous allez apprendre à générer une action composite.

Platform navigation

Introduction

Dans ce guide, vous allez découvrir les composants de base qui sont nécessaires pour créer et utiliser une action composite empaquetée. Afin de nous concentrer sur les composants nécessaires à l’empaquetage de l’action, nous avons réduit la fonctionnalité du code de l’action à son strict minimum. L’action affiche « Hello World », puis « Goodbye ». Si vous fournissez un nom personnalisé, elle affichera « Hello [who-to-greet] », puis « Goodbye ». L’action mappe également un nombre aléatoire à la variable de sortie random-number et exécute un script nommé goodbye.sh.

Une fois que vous aurez terminé ce projet, vous saurez comment créer votre propre action composite et la tester dans un workflow.

Avertissement : Au moment de la création de workflows et d’actions, vous devez toujours déterminer si votre code peut exécuter une entrée non fiable provenant d’attaquants potentiels. Certains contextes doivent être traités comme des entrées non fiables, car un attaquant peut insérer son propre contenu malveillant. Pour plus d’informations, consultez « Durcissement de la sécurité pour GitHub Actions ».

Prérequis

Avant de commencer, vous allez créer un référentiel sur GitHub.com.

  1. Créez un nouveau référentiel public dans GitHub.com. Vous pouvez choisir n’importe quel nom de dépôt ou utiliser l’exemple hello-world-composite-action suivant. Vous pouvez ajouter ces fichiers une fois que votre projet a été poussé vers GitHub. Pour plus d’informations, consultez « Création d’un dépôt ».

  2. Clonez votre dépôt sur votre ordinateur. Pour plus d’informations, consultez « Clonage d’un dépôt ».

  3. À partir de votre terminal, remplacez les répertoires par votre nouveau dépôt.

    Shell
    cd hello-world-composite-action
    
  4. Dans le dépôt hello-world-composite-action, créez un fichier nommé goodbye.sh avec l’exemple de code :

    Shell
    echo "echo Goodbye" > goodbye.sh
    
  5. À partir de votre terminal, rendez goodbye.sh exécutable.

    Shell
    chmod +x goodbye.sh
    
Shell
chmod +x goodbye.sh
Shell
git add --chmod=+x -- goodbye.sh
  1. À partir de votre terminal, effectuez le check-in de votre fichier goodbye.sh.

    Shell
    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push
    
Shell
git add goodbye.sh
git commit -m "Add goodbye script"
git push
Shell
git commit -m "Add goodbye script"
git push

Création d’un fichier de métadonnées d’action

  1. Dans le dépôt hello-world-composite-action, créez un fichier nommé action.yml et ajoutez l’exemple de code suivant. Pour plus d’informations sur cette syntaxe, consultez « Metadata syntax for GitHub Actions ».

    YAML
    name: 'Hello World'
    description: 'Greet someone'
    inputs:
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
    outputs:
      random-number:
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
    runs:
      using: "composite"
      steps:
        - name: Set Greeting
          run: echo "Hello $INPUT_WHO_TO_GREET."
          shell: bash
          env:
            INPUT_WHO_TO_GREET: ${{ inputs.who-to-greet }}
    
        - name: Random Number Generator
          id: random-number-generator
          run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
          shell: bash
    
        - name: Set GitHub Path
          run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH
          shell: bash
          env:
            GITHUB_ACTION_PATH: ${{ github.action_path }}
    
        - name: Run goodbye.sh
          run: goodbye.sh
          shell: bash
    
    

    Ce fichier définit l’entrée who-to-greet, mappe le nombre généré aléatoirement à la variable de sortie random-number, ajoute le chemin d’accès de l’action au chemin d’accès du système de l’exécuteur (pour localiser le script goodbye.sh pendant l’exécution ) et exécute le script goodbye.sh.

    Pour plus d’informations sur la gestion des sorties, consultez « Metadata syntax for GitHub Actions ».

    Pour plus d’informations sur l’utilisation de github.action_path, consultez « Contextes ».

  2. À partir de votre terminal, effectuez le check-in de votre fichier action.yml.

    Shell
    git add action.yml
    git commit -m "Add action"
    git push
    
  3. À partir de votre terminal, ajoutez une étiquette. Cet exemple utilise une étiquette nommée v1. Pour plus d’informations, consultez « À propos des actions personnalisées ».

    Shell
    git tag -a -m "Description of this release" v1
    git push --follow-tags
    

Tester votre action dans un workflow

Le code de workflow suivant utilise l’action Hello World terminée que vous avez effectuée dans « Création d’une action composite ».

Copiez le code de workflow dans un fichier .github/workflows/main.yml d’un autre dépôt, mais remplacez actions/hello-world-composite-action@v1 par le dépôt et l’étiquette que vous avez créés. Vous pouvez également remplacer l’entrée who-to-greet par votre nom.

YAML
on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v4
      - id: foo
        uses: actions/hello-world-composite-action@v1
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number "$RANDOM_NUMBER"
        shell: bash
        env:
          RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}

Dans votre dépôt, cliquez sur l’onglet Actions, puis sélectionnez la dernière exécution du workflow. La sortie doit inclure : « Hello Mona the Octocat », le résultat de l’exécution du script « Goodbye » et un nombre aléatoire.

Exemples d’actions composites sur GitHub.com

Vous pouvez trouver de nombreux exemples d’actions composites sur GitHub.com.