Remarque : GitHub Packages est actuellement en version bêta pour GitHub AE.
À propos de GitHub Packages avec GitHub Actions
GitHub Actions vous aide à automatiser vos workflows de développement logiciel au même endroit où vous stockez le code et collaborez sur les demandes de tirage et les problèmes. Vous pouvez écrire des tâches individuelles, appelées actions, et les combiner pour créer un workflow personnalisé. Avec GitHub Actions, vous pouvez créer des fonctionnalités d’intégration continue (CI) et de déploiement continu (CD) de bout en bout directement dans votre dépôt. Pour plus d’informations, consultez « À propos de GitHub Actions ».
Vous pouvez étendre les fonctionnalités CI et CD de votre dépôt en publiant ou en installant des packages dans le cadre de votre workflow.
Pour s’authentifier auprès des registres de packages sur GitHub AE, nous recommandons d’utiliser GITHUB_TOKEN
que GitHub AE crée automatiquement pour votre dépôt quand vous activez GitHub Actions. Vous devez définir les autorisations de ce jeton d’accès dans le fichier de workflow afin d’octroyer l’accès en lecture pour l’étendue contents
et l’accès en écriture pour l’étendue packages
. Pour les duplications, GITHUB_TOKEN
reçoit un accès en lecture pour le dépôt parent. Pour plus d’informations, consultez « Authentification avec GITHUB_TOKEN ».
Vous pouvez référencer le GITHUB_TOKEN
de votre fichier de workflow à l’aide du contexte {{secrets.GITHUB_TOKEN}}
. Pour plus d’informations, consultez « Authentification avec GITHUB_TOKEN ».
À propos des autorisations et de l’accès aux packages
Lorsque vous activez GitHub Actions, GitHub installe une application GitHub sur votre dépôt. Le secret GITHUB_TOKEN
est un jeton d’accès d’installation d’application GitHub. Vous pouvez utiliser le jeton d’accès d’installation pour vous authentifier au nom de l’application GitHub installée sur votre dépôt. Les autorisations du jeton sont limitées au dépôt qui contient votre workflow. Pour plus d’informations, consultez « Autorisations pour le secret GITHUB_TOKEN ».
GitHub Packages vous permet d’envoyer (push) et d’extraire des packages via le secret GITHUB_TOKEN
disponible pour un workflow GitHub Actions.
Publication d’un package à l’aide d’une action
Vous pouvez utiliser GitHub Actions pour publier automatiquement des packages dans le cadre de votre flux d’intégration continue (CI). Cette approche du déploiement continu (CD) vous permet d’automatiser la création de nouvelles versions de package si le code répond à vos normes de qualité. Par exemple, vous pourriez créer un workflow qui exécute des tests de CI chaque fois qu’un développeur envoie du code à une branche particulière. Si les tests réussissent, le workflow peut publier une nouvelle version de package sur GitHub Packages.
Les étapes de configuration varient selon le client de package. Pour des informations générales sur la configuration d’un workflow pour GitHub Actions, consultez « Configuration d’un workflow ».
L’exemple suivant montre comment utiliser GitHub Actions pour générer votre application and test, puis créer automatiquement une image Docker et la publier sur GitHub Packages.
Créez un fichier de workflow dans votre dépôt (par exemple .github/workflows/deploy-image.yml
), puis ajoutez le YAML suivant :
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.
# GitHub recommande d’épingler les actions à un SHA de commit.
# Pour obtenir une version plus récente, vous devez mettre à jour le SHA.
# Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement.
name: Create and publish a Docker image
on:
push:
branches: ['release']
jobs:
run-npm-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: npm install and build webpack
run: |
npm install
npm run build
- uses: actions/upload-artifact@v2
with:
name: webpack artifacts
path: public/
run-npm-test:
runs-on: ubuntu-latest
needs: run-npm-build
strategy:
matrix:
os: [ubuntu-latest]
node-version: [12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- uses: actions/download-artifact@v2
with:
name: webpack artifacts
path: public
- name: npm install, and test
run: |
npm install
npm test
env:
CI: true
build-and-push-image:
runs-on: ubuntu-latest
needs: run-npm-test
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Log in to GitHub Docker Registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: docker.YOUR-HOSTNAME.com
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
tags: |
docker.YOUR-HOSTNAME.com/${{ github.repository }}/octo-image:${{ github.sha }}
Les paramètres pertinents sont expliqués dans le tableau suivant. Pour des informations complètes sur chaque élément d’un workflow, consultez « Syntaxe de workflow pour GitHub Actions ».
```yaml on: push: branches: ['release'] ``` |
Configure le workflow Create and publish a Docker image pour qu’il s’exécute chaque fois qu’une modification est envoyée (push) à la branche nommée release .
|
|
Ce travail installe NPM et l’utilise pour générer l’application. |
|
Ce travail utilise npm test pour tester le code. La commande needs: run-npm-build rend ce travail dépendant du travail run-npm-build .
|
```yaml build-and-push-image: runs-on: ubuntu-latest needs: run-npm-test ``` |
Ce travail publie le package. La commande needs: run-npm-test rend ce travail dépendant du travail run-npm-test .
|
```yaml permissions: contents: read packages: write ``` |
Définit les autorisations accordées au secret GITHUB_TOKEN pour les actions de ce travail.
|
```yaml - name: Log in to GitHub Docker Registry uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: docker.YOUR-HOSTNAME.com username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} ``` |
Crée une étape nommée Log in to GitHub Docker Registry , qui se connecte au Registre à l’aide du compte et du mot de passe qui publieront les packages. Une fois publiés, les packages appartiennent au compte défini ici.
|
```yaml - name: Build and push Docker image ``` |
Crée une étape nommée Build and push Docker image . Cette étape s’exécute dans le cadre du travail build-and-push-image .
|
```yaml uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc ``` |
Utilise l’action Docker build-push-action pour générer l’image, en fonction du Dockerfile de votre dépôt. Si la build réussit, elle envoie (push) l’image à GitHub Packages.
|
```yaml with: ``` |
Envoie les paramètres requis à l’action build-push-action . Ceux-ci sont définis dans les lignes suivantes.
|
```yaml push: true ``` | Envoie (push) cette image au Registre s’il est généré avec succès. |
```yaml tags: | docker.YOUR-HOSTNAME.com/${{ github.repository }}/octo-image:${{ github.sha }} ``` | Étiquette l’image avec le SHA de la validation qui a déclenché le workflow. |
Ce nouveau workflow s’exécute automatiquement chaque fois que vous envoyez une modification à une branche nommée release
dans le dépôt. Vous pouvez visualiser la progression sous l’onglet Actions.
Quelques minutes après la fin du workflow, le nouveau package sera visible dans votre dépôt. Pour trouver vos packages disponibles, consultez « Affichage des packages d’un dépôt ».
Installation d’un package à l’aide d’une action
Vous pouvez installer des packages dans le cadre de votre flux de CI en utilisant GitHub Actions. Par exemple, vous pourriez configurer un workflow de façon à ce que, chaque fois qu’un développeur envoie (push) du code à une demande de tirage, le workflow résolve les dépendances en téléchargeant et en installant des packages hébergés par GitHub Packages. Ensuite, le workflow peut exécuter des tests de CI qui nécessitent les dépendances.
L’installation de packages hébergés par GitHub Packages via GitHub Actions nécessite une configuration minimale ou une authentification supplémentaire lorsque vous utilisez le secret GITHUB_TOKEN
.
Les étapes de configuration varient selon le client de package. Pour des informations générales sur la configuration d’un workflow pour GitHub Actions, consultez « Configuration d’un workflow ».