
GitHub Actions est un puissant outil CI/CD pour exécuter des builds automatisés à partir de votre référentiel GitHub. La dernière étape de ce processus est le déploiement, qui consiste à télécharger les artefacts de build à un endroit où ils sont facilement accessibles. AWS S3 est le stockage de choix pour de nombreuses personnes et est facile à intégrer aux scripts Actions.
Pourquoi utiliser les compartiments AWS S3 pour le déploiement ?
Il convient de noter que GitHub Actions dispose d'un système de stockage d'artefacts de base, cependant, vous ne voudrez pas l'utiliser en production. C'est à des fins d'archivage et de test, et les artefacts des versions terminées expireront après 90 jours.
Il existe également des packages GitHub, qui sont conçus pour remplacer les gestionnaires de packages spécifiques à une langue tels que npm de JavaScript. Cela peut être très utile si vous publiez un package NPM, mais n'est pas aussi utile pour d'autres types de builds.
Pour tous les autres types d'artefacts, les compartiments S3 d'Amazon restent l'un des moyens incontournables de télécharger des fichiers pour la distribution et le déploiement. Ils sont soutenus par le système d'autorisations IAM d'AWS, qui offre une excellente sécurité et est capable d'affiner les contrôles d'accès à votre code source compilé.
Sinon, si vous êtes en utilisant des conteneurs Docker pour le déploiement, vous souhaiterez plutôt utiliser un registre de conteneurs. Heureusement, GitHub dispose d'un registre privé facile à intégrer, et vous pouvez lire notre guide d'utilisation pour en savoir plus.
CONNEXE : Comment démarrer avec le nouveau registre de conteneurs Docker de Github
L'utilisation de S3 est assez simple, et la plupart des étapes présentées ici s'appliqueront également aux solutions de stockage compatibles S3, comme Digital Ocean Spaces ou self -MinIO hébergé, car ils utilisent la même API.
Téléchargement vers AWS S3 à partir des actions GitHub
CONNEXESComment utiliser les actions Github pour automatiser vos constructions de référentiel
Pour commencer, vous devez vous assurer que le reste de votre script de construction GitHub Actions fonctionne et produit une construction valide, comme vous ne le faites généralement pas souhaitez déboguer plusieurs problèmes à la fois.
Si vous n'en avez pas encore, la configuration dépendra de votre chaîne d'outils de build, mais vous pouvez lire notre guide de configuration des builds automatisés pour en savoir plus. Vous pouvez également tester l'artefact qui sera téléchargé à l'aide de l'action upload-artifact intégrée de GitHub, qui publie le contenu d'un répertoire sous forme de bundle.

Vous pouvez ensuite confirmer la création du bundle dans le Résumé > Artefacts.

Une fois que vous avez une version qui n'échoue pas, vous pouvez ajouter le téléchargement S3 à la fin de celle-ci. Il n'y a pas de moyen officiel de le faire facilement, et de nombreuses solutions différentes existent sur le GitHub Actions Marketplace.
Le plus populaire est S3 Sync, qui utilise l'API S3 native pour télécharger des artefacts construits et est facile à configurer. Il existe également des wrappers simples comme s3cmd, qui vous permettent de transmettre des commandes directement à la CLI S3.
Une remarque cependant – la plupart d'entre eux reposent sur des exécuteurs hébergés Linux ou des conteneurs Docker, qui sont livrés avec les dépendances nécessaires au fonctionnement de la CLI S3. La majorité des builds s'exécutent sous Linux, mais si vous devez utiliser Windows pour exécuter vos builds, vous devrez utiliser une action différente. Le multiplateforme que nous avons trouvé efficace est stcalica/s3-upload. Cela utilise un wrapper JavaScript qui installe le package s3cmd et fonctionne très bien sous Windows.
Une chose que vous devrez d'abord faire est de configurer GitHub Secrets pour vos jetons d'authentification AWS. Ceux-ci ne peuvent bien sûr pas être publics et devront être stockés dans les secrets du référentiel et accessibles par leur nom. Cela évite les fuites accidentelles de vos jetons et facilite la gestion des clés.
Vous pouvez lire notre guide sur l'utilisation des secrets GitHub pour en savoir plus à leur sujet, mais la principale chose à faire est de vous diriger vers le référentiel paramètres, puis cliquez sur Secrets > Actions et faire un

Ensuite, à la fin de votre script GitHub Actions, ajoutez un nommé “deploy” et configurez-le pour utiliser l'action s3-sync, ou celle que vous avez choisie. Vous devrez transmettre les secrets de la clé d'accès et de l'ID que vous avez configurés en tant que variables d'environnement.
… – nom : Deploy To S3 – utilise : actions/checkout@master – utilise : jakejarvis/s3-sync-action@master avec : args : –acl public-read –follow-symlinks –delete env : AWS_S3_BUCKET : ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION : 'us-east-1' # facultatif : par défaut us-east-1 SOURCE_DIR : 'bin/Linux/net48' # facultatif : par défaut, l'intégralité du référentiel DEST_DIR : '/' # facultatif : par défaut, la racine du compartiment
Avec ce flux de travail en particulier, vous pouvez également transmettre des arguments directement à s3cmd, qui peut être utilisé pour activer les ACL de lecture publique, par exemple. Ici, l'objet est défini sur public et l'ancien contenu de ce répertoire dans le compartiment est effacé, garantissant que tout correspond à la sortie de construction sans anciens fichiers.
Avec cela ajouté, il ne reste plus qu'à valider les modifications du script de construction et éventuellement à réexécuter la construction manuellement si elle ne redémarre pas automatiquement lors d'une nouvelle validation. Vous ne verrez aucune sortie de génération dans GitHub, car elle a été envoyée à S3, mais vous pouvez consulter les journaux de s3cmd sous le “deploy to S3” étape dans le journal de construction :

J'espère que vous verrez une sortie de journal similaire à celui ci-dessus, confirmant que le processus a été exécuté avec succès.
LIRE LA SUITE
- › Comment réparer “Le serveur de récupération n'a pas pu être contacté” Erreur Mac
- &rsaquo ; Windows 11 dit adieu aux anciennes applications ARM
- &rsaquo ; NotebookLM de Google change la donne pour la prise de notes
- › Les applications Microsoft 365 obtiennent une nouvelle police par défaut
- › 1Password accélère votre processus de connexion
- › Google Bard AI a de nouvelles fonctionnalités et des langues prises en charge