Publier dans GitHub Packages et GitHub Container Registry
Ici, vous allez découvrir les principes de base de l’utilisation d’un flux de travail pour publier sur des packages GitHub, ainsi que les étapes nécessaires pour générer, authentifier, baliser et envoyer (push) une image Docker à GitHub Container Registry.
Utiliser un flux de travail pour publier sur des packages GitHub
Les packages GitHub vous permettent de publier et de consommer des packages en toute sécurité, de stocker vos packages en même temps que votre code et de partager vos packages en privé avec votre équipe ou publiquement avec la communauté open source. Vous pouvez également utiliser GitHub Actions pour automatiser vos packages.
Voici un exemple de flux de travail de base qui s’exécute chaque fois qu’une nouvelle version est créée dans un référentiel. Si les tests réussissent, le package est publié sur GitHub Packages.
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
- run: npm ci
- run: npm test
publish-gpr:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Tout d’abord, le fichier de flux de travail doit exister dans le .github/workflows répertoire. Il est courant de nommer un flux de travail qui publie un nouveau package chaque fois qu’une nouvelle version est créée, release-package.ymlafin de faciliter la compréhension de son objectif par les collaborateurs du projet sans accéder au fichier de flux de travail.
Le flux de travail précédent effectue quelques opérations après la création d’une nouvelle version :
- Une tâche nommée
buildexécutenpm ci(« ic » pour l’intégration continue) pour installer les dépendances directement à partir du fichierpackage-lock.json, ainsi que les tests pour le projet. - Une fois la
buildtâche réussie, la tâche nomméepublish-gprpublie le paquet. - Le workflow publie le package sur
registry-url: https://npm.pkg.github.com/à l’aide d’un jeton d’accès pour l’authentification.
Utiliser GitHub Container Registry pour héberger et gérer des images conteneur Docker
Les packages GitHub prennent en charge l’utilisation de conteneurs, Kubernetes et d’autres technologies natives cloud pour gérer tout le cycle de vie de leur application, notamment les opérations de production, le développement, la mise en production et le déploiement. GitHub Packages offre également un registre de conteneurs conçu pour prendre en charge les besoins uniques des images conteneur. Vous pouvez utiliser GitHub Container Registry pour héberger et gérer en toute transparence des images conteneur Docker dans votre organisation GitHub ou votre compte d’utilisateur personnel. GitHub Container Registry vous permet de configurer qui peut gérer et accéder aux packages à l’aide d’autorisations affinées.
Avec le registre de conteneurs, vous pouvez :
- Stockez des images de conteneurs au sein de votre organisation et de votre compte d'utilisateur, plutôt que de les stocker dans un référentiel.
- Définissez des autorisations affinées pour les images conteneur.
- Accéder aux images conteneur publiques de manière anonyme.
Une fois que vous avez créé l’image et authentifiée et connecté au service GitHub Container Registry, ghcr.iovous pouvez ensuite baliser et envoyer (push) la dernière version de l’image au registre de conteneurs à l’aide de ces commandes :
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
Remarque
Pour vous authentifier à l’aide d’un flux de travail GitHub Actions, vous pouvez utiliser un GITHUB_TOKEN :
- Pour les registres de packages sur
PACKAGE-REGISTRY.pkg.github.com. - Pour le registre de conteneurs dans
ghcr.io/OWNER/IMAGE-NAME.