Skip to main content

Prévention de la duplication

Vous pouvez utiliser des flux de travail réutilisables ou des actions composites pour éviter de dupliquer le contenu des flux de travail.

À propos des flux de travail réutilisables et des actions composites

Les flux de travail réutilisables et les actions composites sont deux moyens d'éviter la duplication du contenu des flux de travail.

Les flux de travail réutilisables vous permettent de réutiliser un flux de travail entier, y compris l'ensemble de ses tâches et étapes. Ceci est particulièrement utile lorsque vous avez un processus CI/CD complet que vous souhaitez utiliser sur plusieurs référentiels. Les flux de travail réutilisables peuvent être gérés de manière centralisée, en un seul emplacement, mais utilisés dans de nombreux référentiels au sein de votre organisation.

Les actions composites vous permettent de combiner plusieurs étapes en une seule action. Vous pouvez ensuite exécuter ce groupe d'étapes comme une seule étape dans le cadre d'un flux de travail. Cela est utile si vous avez une séquence d'étapes qui sera utilisée dans plus d'un flux de travail. Les actions composites vous permettent de refactoriser de longs fichiers de flux de travail YAML en fichiers beaucoup plus petits et d'éviter les copier-coller entre les fichiers de flux de travail.

Les flux de travail réutilisables et les actions composites résolvent des problèmes similaires, mais présentent quelques différences importantes. La plupart du temps, vous pouvez utiliser l'une ou l'autre solution. Mais dans certains cas, vous devrez utiliser l'une ou l'autre, comme décrit plus loin dans cet article.

Pour plus d'informations sur la création et l'utilisation de flux de travail réutilisables et d'actions composites, consultez « Réutilisation des workflows » et « Création d’une action composite ».

Comparaison des flux de travail réutilisables et des actions composites

  • Travaux de flux de travail – Les actions composites contiennent une série d'étapes qui sont exécutées en tant qu'étape unique dans le flux de travail de l'appelant. Contrairement aux flux de travail réutilisables, ils ne peuvent pas contenir de tâches.
  • Journalisation – Lorsqu'une action composite est exécutée, le journal n'affiche que l'étape du flux de travail de l'appelant qui a exécuté l'action composite, et non les étapes individuelles de l'action composite. Avec les flux de travail réutilisables, chaque tâche et chaque étape sont journalisées séparément.
  • Spécification des exécutants – Les flux de travail réutilisables contiennent un ou plusieurs travaux. Comme pour tous les travaux de flux de travail, les travaux d'un flux de travail réutilisable spécifient le type de machine sur laquelle le travail sera exécuté. Par conséquent, si les étapes doivent être exécutées sur un type de machine qui peut être différent de la machine choisie pour le travail de flux de travail appelant, vous devez utiliser un flux de travail réutilisable, et non une action composite.
  • Transfert des résultats aux étapes – Une action composite est exécutée en tant qu'étape au sein d'une tâche de flux de travail, et vous pouvez avoir plusieurs étapes avant ou après l'étape qui exécute l'action composite. Les workflows réutilisables sont appelés directement au sein d’un travail, et non à partir d’une étape de travail. Il n'est pas possible d'ajouter des étapes à une tâche après avoir appelé un flux de travail réutilisable, de sorte que vous ne pouvez pas utiliser GITHUB_ENV pour transférer des valeurs aux étapes suivantes du flux de travail de l'appelant.

Principales différences entre les flux de travail réutilisables et les actions composites

Workflows réutilisablesActions composites
Un fichier YAML, très similaire à n'importe quel fichier de flux de travail standardUne action contenant un ensemble d'étapes du flux de travail
Chaque flux de travail réutilisable est un fichier unique dans le répertoire .github/workflows d'un référentiel.Chaque action composite est un référentiel distinct, ou un répertoire, contenant un fichier action.yml et, éventuellement, d'autres fichiers
Appelé en référençant un fichier YAML spécifiqueAppelé en référençant un référentiel ou un répertoire dans lequel l’action est définie
Appelé directement dans une tâche, pas à partir d’une étapeExécuter en tant qu’étape dans une tâche
Peut contenir plusieurs tâchesNe contient pas de tâches
Chaque étape est journalisée en temps réelJournalisé en une seule étape, même s’il contient plusieurs étapes
Peut connecter un maximum de quatre niveaux de flux de travailPeut être imbriqué pour avoir jusqu’à 10 actions composites dans un flux de travail
Peut utiliser des secretsNe pas utiliser des secrets
Peut utiliser des conditionnels if:Ne peut pas utiliser des conditionnels if: