Skip to main content

Publication et gestion des actions

Vous pouvez tirer parti de l’automatisation et des bonnes pratiques open source pour la mise en production et la gestion des actions.

Introduction

Après avoir créé une action, vous souhaiterez probablement publier d’autres fonctionnalités tout en utilisant les contributions de la communauté. Ce tutoriel décrit un exemple de processus que vous pouvez suivre pour publier et gérer des actions open source. L'exemple :

  • Tire parti de GitHub Actions pour l’intégration continue, les mises à jour des dépendances, la gestion des mises en production et l’automatisation des tâches.
  • Garantit la confiance grâce aux tests automatisés et aux badges de build.
  • Indique comment l’action peut être utilisée, idéalement dans le cadre d’un workflow plus étendu.
  • Signale le type de contributions de la communauté qui sont les bienvenues. (par exemple : problèmes, demandes de tirage (pull request) ou rapports sur les vulnérabilités)

Pour obtenir un exemple d’application de ce processus, consultez github-developer/javascript-action.

Développement et publication des actions

Dans cette section, nous allons aborder un exemple de processus de développement et de publication d’actions, et nous verrons comment utiliser GitHub Actions pour automatiser le processus.

À propos des actions JavaScript

Les actions JavaScript sont des dépôts Node.js contenant des métadonnées. Toutefois, les actions JavaScript ont des propriétés supplémentaires par rapport aux projets Node.js traditionnels :

  • Les packages dépendants sont commités en même temps que le code, généralement dans un format compilé et minifié. Cela signifie que les builds automatisées et les contributions sécurisées de la communauté sont importantes.
  • Les versions étiquetées peuvent être publiées directement dans GitHub Marketplace et consommées par les workflows dans GitHub.
  • De nombreuses actions utilisent les API de GitHub et les API tierces. Nous encourageons donc à effectuer des tests robustes de bout en bout.

Configuration des workflows GitHub Actions

Pour prendre en charge le processus de développement dans la section suivante, ajoutez deux workflows GitHub Actions à votre dépôt :

  1. Ajoutez un workflow qui se déclenche lorsqu’un commit est poussé (push) à une branche de fonctionnalité ou à main, ou lorsqu’une demande de tirage (pull request) est créée. Configurez le workflow pour exécuter vos tests unitaires et vos tests d’intégration. Pour obtenir un exemple, consultez ce workflow.
  2. Ajoutez un workflow qui se déclenche lorsqu’une version est publiée ou modifiée. Configurez le workflow de sorte que les étiquettes sémantiques soient en place. Vous pouvez utiliser une action comme JasonEtco/build-and-tag-action pour compiler et regrouper le fichier JavaScript et les métadonnées, et pour pousser les étiquettes sémantiques des versions majeures, mineures et correctives. Pour obtenir un exemple, consultez ce workflow. Pour plus d’informations sur les étiquettes sémantiques, consultez « À propos de la gestion sémantique de version ».

Exemple de processus de développement

Voici un exemple de processus que vous pouvez suivre pour exécuter automatiquement des tests, créer une version , la publier dans GitHub Marketplace, puis publier votre action.

  1. Effectuez le travail relatif aux fonctionnalités dans les branches de chaque flux GitHub. Pour en savoir plus, consultez « Flux GitHub ».

    • Chaque fois qu’un commit est poussé vers la branche de fonctionnalité, votre workflow de test exécute automatiquement les tests.
  2. Créez des demandes de tirage pour la branche main afin de lancer une discussion et une révision, et d’effectuer une fusion lorsque vous êtes prêt.

    • Lorsqu’une demande de tirage est effectuée à partir d’une branche ou d’une duplication (fork), votre workflow de test réexécute les tests, cette fois avec le commit de fusion.

    • Remarque : Pour des raisons de sécurité, les workflows déclenchés par pull_request à partir de duplications ont des autorisations GITHUB_TOKEN limitées et n’ont pas accès aux secrets. Si vos tests ou d’autres workflows déclenchés lors de la demande de tirage nécessitent un accès aux secrets, utilisez un autre événement comme un déclencheur manuel ou un pull_request_target. En savoir plus ici.

  3. Créez une version étiquetée sémantiquement. Vous pouvez également publier dans GitHub Marketplace avec une simple case à cocher. Pour plus d’informations, consultez « Gestion des versions dans un dépôt » et « Publication d’actions dans GitHub Marketplace ».

    • Lorsqu’une version est publiée ou modifiée, votre workflow de version s’occupe automatiquement de la compilation et de l’ajustement des étiquettes.

    • Nous vous recommandons de créer des versions à l’aide d’étiquettes versionnées sémantiquement (par exemple v1.1.3) et de maintenir à jour les étiquettes des versions majeures (v1) et mineures (v1.1) à l’aide du dernier commit approprié. Pour plus d’informations, consultez « À propos des actions personnalisées » et « À propos du versioning sémantique ».

Résultats

Contrairement à d’autres stratégies automatisées de gestion des mises en production, ce processus choisit intentionnellement de ne pas commiter les dépendances dans la branche main, mais seulement les commits des versions étiquetées. Ainsi, vous encouragez les utilisateurs de votre action à référencer des étiquettes nommées ou des sha, et vous contribuez à garantir la sécurité des demandes de tirage tierces en effectuant la génération vous-même lors du processus de publication.

Avec l’utilisation des versions sémantiques, les utilisateurs de vos actions peuvent épingler leurs workflows à une version et savoir ainsi qu’ils continueront à recevoir les dernières fonctionnalités stables et non cassantes, selon leur niveau de confort :

Collaborer avec la communauté

GitHub fournit des outils et des guides qui vous aideront à travailler avec la communauté open source. Voici quelques outils que nous vous recommandons de configurer pour une bonne communication bidirectionnelle. En envoyant les signaux suivants à la communauté, vous encouragez les autres à utiliser, modifier et contribuer à votre action :

Pour aller plus loin

Voici quelques exemples où des modèles similaires sont utilisés :