Closed BgbgL13 closed 4 years ago
Beau travail en ajoutant le script entrypoint.sh
.
Dans entrypoint.sh
, tout ce que nous faisons c'est d'afficher un message "Bonjour Monde" en utilisant une variable d'environnement appelée MON_NOM
.
Ensuite, nous allons définir un flux de tâches worklow
qui utilise l'action GitHub.
Enfin, nous créerons le fichier action.yml
qui contient les métadonnées de notre action.
Toutes les actions nécessitent un fichier de métadonnées qui utilise la syntaxe YAML. Les données du fichier de métadonnées définissent les «entrées», les «sorties» et le «point d'entrée» principal de ton action.
Nous utiliserons un paramètre input
pour lire la valeur de MON_NOM
.
action.yml
Dans le cadre de cette branche et demande d'extraction pull request
, crée un fichier intitulé action-a/action.yml
. Tu peux le faire en utilisant ce lien rapide ou manuellement.
Ajoute le contenu suivant au fichier action.yml
:
name: "Bonjour Actions"
description: "Saluer quelqu'un"
author: "octocat@github.com"
inputs:
MON_NOM:
description: "Qui saluer?"
required: true
default: "Monde"
runs:
using: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
Mets en scène et valide les modifications
Pousse les modifications vers GitHub
Ensuite, nous allons définir un flux de tâches workflow
qui utilise l'action GitHub.
workflow
Les flux de tâches sont définis dans des fichiers spéciaux dans le répertoire .github/workflows
, nommé main.yml
.
Les flux de taches peuvent s'exécuter en fonction de l'événement que tu as choisi. Pour ce laboratoire, nous utiliserons l'événement push
.
Nous décomposerons chaque ligne du flux de taches à l'étape suivante.
Tout d'abord, nous allons ajouter la structure du flux de tâches.
.github/workflows/main.yml
. Tu peux le faire en utilisant ce lien rapide ou manuellement:
- Dans le cadre de cette branche et de la demande d'extraction pull request
, crée un répertoire workflows
contenu dans le répertoire .github
.
- Dans le nouveau répertoire .github/workflows/
, crée un fichier intitulé main.yml
main.yml
:
name: Un flux de taches pour mon fichier Bonjour Monde
on: push
Bon travail! :tada: Tu as ajouté un flux de tâches workflow
!
Voici ce que cela signifie:
name: un flux de taches pour mon fichier Bonjour Monde
donne un nom à ton flux de tâches. Ce nom apparaît sur toute demande d'extraction pull request
ou dans l'onglet Actions
. Le nom est particulièrement utile lorsqu'il existe plusieurs fulx de tâches workflows
dans ton référentiel.on: push
indique que ton flux de tâches s'exécutera à chaque fois que du code est poussé vers ton référentiel, en utilisant l'événement push
.Ensuite, nous devons spécifier une ou plusieurs tâches jobs
à exécuter.
Le flux de tâches workflow
regroupent des tâches job
et les tâches regroupent des étapes steps
. Nous allons maintenant créer une tâche qui exécute une action. Les actions peuvent être utilisées à partir du même référentiel, de tout autre référentiel publique ou d'une image de conteneur Docker
publiée. Nous utiliserons une action que nous définirons dans ce référentiel.
Nous allons ajouter le bloc maintenant et le décomposer à l'étape suivante.
workflow
Ajoutons l'action attendue au flux de tâches.
.github/workflows/main.yml
pour ajouter le contenu suivant:
jobs:
build:
name: Action Bonjour Monde
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MON_NOM: "Mona"
Bien, tu viens d'ajouter un bloc d'action à ton fichier de flux de tâches! Voici quelques détails importants sur pourquoi chaque partie du bloc existe et ce que fait chaque partie.
jobs:
est le composant de base d'une exécution de workflux de tâchesbuild:
est l'identifiant que nous attachons à ce travailname:
est le nom de la tâche, il est affiché sur GitHub lorsque le flux de tâches est en cours d'exécutionsteps:
la séquence linéaire des opérations qui composent une tâcheuses: actions/checkout@v1
utilise une action de la communauté appelée checkout
pour permettre au flux de tâches d'accéder au contenu du référentieluses: ./action-a
fournit le chemin relatif de l'action que nous avons créée dans le répertoire action-a
du référentielwith:
est utilisé pour spécifier les variables d'entrées qui seront disponibles pour ton action dans l'environnement d'exécution. Dans ce cas, la variable d'entrée est MON_NOM
, et elle est actuellement initialisée à "Mona"
.Ton référentiel contient désormais une action (définie dans le dossier /action-a/
) et un flux de tâches (défini dans le fichier ./github/workflows/main.yml
).
Cette action s'exécutera à chaque fois qu'une nouvelle soumission commit
est créée ou envoyée au référentiel distant. Puisque tu viens de créer une soumission commit
, le flux de tâches workflow
devrait être déclenché. Cela peut prendre quelques minutes car il s'agit de la première exécution dans ce référentiel.
Le statut de ton action est indiqué ici dans les demandes d'extraction pull requests
(recherche All checks have passed ci-dessous), ou tu peux cliquer sur l'onglet Actions
dans ton référentiel. De là, tu verras les actions qui ont été exécutées et tu peux cliquer sur le lien log
de l'action pour afficher les détails.
workflow
Les actions peuvent durer une ou deux minutes. Parfois, je réponds aussi trop vite pour que la page soit mise à jour! Si tu ne vois pas de réponse à ton action, attends quelques secondes et actualise la page.
Beau travail, tu as soumis un
Dockerfile
. Tu remarqueras qu'à la fin duDockerfile
, nous faisons référence à un script de point d'entréeENTRYPOINT
.Le script
entrypoint.sh
sera exécuté dansDocker
, et il définira ce que l'action va réellement faire.Étape 2: ajoute un script de point d'entrée
Un script de point d'entrée doit exister dans notre référentiel pour que
Docker
ait quelque chose à exécuter.:keyboard: Activité: ajoute un script de point d'entrée et soumets le à ta branche
Dans le cadre de cette branche et de la demande d'extraction
pull request
, crée un fichier dans le répertoire/action-a/
intituléentrypoint.sh
. Tu peux le faire avec ce lien rapideAjoute le contenu suivant au fichier
entrypoint.sh
:Mets en scène et soumets les modifications
Pousse les modifications vers GitHub
Je répondrai lorsque je détecte une nouvelle soumission commit sur cette branche.