You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dans ce tutoriel, vous apprendrez à créer une action composite.
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.
Warning
Lors de la création de flux de travail et d’actions, vous devez toujours déterminer si votre code pourrait exécuter des entrées non fiables provenant de personnes malveillantes potentielles. 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 « Informations de référence sur l’utilisation sécurisée ».
Actions composites et flux de travail réutilisables
Les actions composites vous permettent de collecter une série d’étapes de tâche de flux de travail en une seule action que vous pouvez ensuite exécuter en tant qu’étape de tâche unique dans plusieurs flux de travail. Les flux de travail réutilisables offrent un autre moyen d’éviter la duplication, en vous permettant d’exécuter un flux de travail complet à partir d’autres flux de travail. Pour plus d’informations, consultez « Réutilisation des configurations de flux de travail ».
Prérequis
Note
Cet exemple explique comment créer une action composite dans un référentiel distinct. Toutefois, il est possible de créer une action composite dans le même référentiel. Pour plus d’informations, consultez « Création d’une action composite ».
Avant de commencer, vous allez créer un dépôt sur GitHub.
Créez un dépôt public sur GitHub. 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é envoyé (push) vers GitHub. Pour plus d’informations, consultez « Création d’un dépôt ».
Clonez votre dépôt sur votre ordinateur. Pour plus d’informations, consultez « Clonage d’un dépôt ».
À partir de votre terminal, remplacez les répertoires par votre nouveau dépôt.
cd hello-world-composite-action
Dans le dépôt hello-world-composite-action, créez un fichier nommé goodbye.sh avec l’exemple de code :
echo"echo Goodbye"> goodbye.sh
À partir de votre terminal, rendez goodbye.sh exécutable.
chmod +x goodbye.sh
chmod +x goodbye.sh
git add --chmod=+x -- goodbye.sh
À partir de votre terminal, validez votre fichier goodbye.sh.
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 « Référence syntaxique des métadonnées ».
name: 'Hello World'description: 'Greet someone'inputs:
who-to-greet: # id of inputdescription: 'Who to greet'required: truedefault: 'World'outputs:
random-number:
description: "Random number"value: ${{ steps.random-number-generator.outputs.random-number }}runs:
using: "composite"steps:
- name: Set Greetingrun: echo "Hello $INPUT_WHO_TO_GREET."shell: bashenv:
INPUT_WHO_TO_GREET: ${{ inputs.who-to-greet }}
- name: Random Number Generatorid: random-number-generatorrun: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUTshell: bash
- name: Set GitHub Pathrun: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATHshell: bashenv:
GITHUB_ACTION_PATH: ${{ github.action_path }}
- name: Run goodbye.shrun: goodbye.shshell: 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.
À 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 ».
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 du flux de travail dans un fichier .github/workflows/main.yml dans un autre référentiel, en remplaçant OWNER et SHA par le propriétaire du référentiel et le SHA du commit que vous voulez utiliser, respectivement. Vous pouvez également remplacer l’entrée who-to-greet par votre nom.
on: [push]jobs:
hello_world_job:
runs-on: ubuntu-latestname: A job to say hellosteps:
- uses: actions/checkout@v6
- id: foouses: OWNER/hello-world-composite-action@SHAwith:
who-to-greet: 'Mona the Octocat'
- run: echo random-number "$RANDOM_NUMBER"shell: bashenv:
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.
Création d’une action composite dans le même référentiel
Créez un sous-dossier appelé hello-world-composite-action, il peut être placé dans n’importe quel sous-dossier dans le référentiel. Toutefois, il est recommandé de le placer dans le sous-dossier .github/actions pour faciliter l’organisation.
Dans le dossier hello-world-composite-action, effectuez les mêmes étapes pour créer le script goodbye.sh
Dans le dossier hello-world-composite-action, créez le fichier action.yml en fonction des étapes décrites dans Création d’une action composite.
Lorsque vous utilisez l’action, utilisez le chemin d’accès relatif au dossier où se trouve le fichier action.yml de l’action composite dans la clé uses. L’exemple ci-dessous suppose qu’il se trouve dans le dossier .github/actions/hello-world-composite-action.
on: [push]jobs:
hello_world_job:
runs-on: ubuntu-latestname: A job to say hellosteps:
- uses: actions/checkout@v6
- id: foouses: ./.github/actions/hello-world-composite-actionwith:
who-to-greet: 'Mona the Octocat'
- run: echo random-number "$RANDOM_NUMBER"shell: bashenv:
RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}
Création d’une action composite
Dans ce tutoriel, vous apprendrez à créer une action composite.
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-numberet 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.
Warning
Lors de la création de flux de travail et d’actions, vous devez toujours déterminer si votre code pourrait exécuter des entrées non fiables provenant de personnes malveillantes potentielles. 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 « Informations de référence sur l’utilisation sécurisée ».
Actions composites et flux de travail réutilisables
Les actions composites vous permettent de collecter une série d’étapes de tâche de flux de travail en une seule action que vous pouvez ensuite exécuter en tant qu’étape de tâche unique dans plusieurs flux de travail. Les flux de travail réutilisables offrent un autre moyen d’éviter la duplication, en vous permettant d’exécuter un flux de travail complet à partir d’autres flux de travail. Pour plus d’informations, consultez « Réutilisation des configurations de flux de travail ».
Prérequis
Note
Cet exemple explique comment créer une action composite dans un référentiel distinct. Toutefois, il est possible de créer une action composite dans le même référentiel. Pour plus d’informations, consultez « Création d’une action composite ».
Avant de commencer, vous allez créer un dépôt sur GitHub.
Créez un dépôt public sur GitHub. Vous pouvez choisir n’importe quel nom de dépôt ou utiliser l’exemple
hello-world-composite-actionsuivant. Vous pouvez ajouter ces fichiers une fois que votre projet a été envoyé (push) vers GitHub. Pour plus d’informations, consultez « Création d’un dépôt ».Clonez votre dépôt sur votre ordinateur. Pour plus d’informations, consultez « Clonage d’un dépôt ».
À partir de votre terminal, remplacez les répertoires par votre nouveau dépôt.
cd hello-world-composite-actionDans le dépôt
hello-world-composite-action, créez un fichier nommégoodbye.shavec l’exemple de code :À partir de votre terminal, rendez
goodbye.shexécutable.À partir de votre terminal, validez votre fichier
goodbye.sh.git add goodbye.sh git commit -m "Add goodbye script" git pushgit add goodbye.sh git commit -m "Add goodbye script" git pushgit commit -m "Add goodbye script" git pushCréation d’un fichier de métadonnées d’action
Dans le dépôt
hello-world-composite-action, créez un fichier nomméaction.ymlet ajoutez l’exemple de code suivant. Pour plus d’informations sur cette syntaxe, consultez « Référence syntaxique des métadonnées ».Ce fichier définit l’entrée
who-to-greet, mappe le nombre généré aléatoirement à la variable de sortierandom-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 scriptgoodbye.shpendant l’exécution ) et exécute le scriptgoodbye.sh.Pour plus d’informations sur la gestion des sorties, consultez « Référence syntaxique des métadonnées ».
Pour plus d’informations sur l’utilisation de
github.action_path, consultez « Référence des contextes ».À partir de votre terminal, validez votre fichier
action.yml.git add action.yml git commit -m "Add action" git pushÀ 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 ».git tag -a -m "Description of this release" v1 git push --follow-tagsTester 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 du flux de travail dans un fichier
.github/workflows/main.ymldans un autre référentiel, en remplaçantOWNERetSHApar le propriétaire du référentiel et le SHA du commit que vous voulez utiliser, respectivement. Vous pouvez également remplacer l’entréewho-to-greetpar votre nom.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.
Création d’une action composite dans le même référentiel
Créez un sous-dossier appelé
hello-world-composite-action, il peut être placé dans n’importe quel sous-dossier dans le référentiel. Toutefois, il est recommandé de le placer dans le sous-dossier.github/actionspour faciliter l’organisation.Dans le dossier
hello-world-composite-action, effectuez les mêmes étapes pour créer le scriptgoodbye.shgit add goodbye.sh git commit -m "Add goodbye script" git pushgit add goodbye.sh git commit -m "Add goodbye script" git pushgit commit -m "Add goodbye script" git pushDans le dossier
hello-world-composite-action, créez le fichieraction.ymlen fonction des étapes décrites dans Création d’une action composite.Lorsque vous utilisez l’action, utilisez le chemin d’accès relatif au dossier où se trouve le fichier
action.ymlde l’action composite dans la cléuses. L’exemple ci-dessous suppose qu’il se trouve dans le dossier.github/actions/hello-world-composite-action.