Comment configurer des builds automatiques pour les images Docker sur GitHub

0
180

GitHub dispose d'une fonctionnalité appelée GitHub Actions qui exécute des builds automatiques, des tests et d'autres scripts chaque fois que vous apportez des modifications à un référentiel. Un cas d'utilisation pratique consiste à créer et à transférer automatiquement des conteneurs Docker vers un registre de conteneurs.

GitHub’s New Container Registry

< p>Le nouveau registre de conteneurs GitHub, appelé GitHub Container Registry, est un peu différent de la plupart des registres comme Docker Hub. Il fonctionne comme une extension de GitHub Packages, un système de stockage de packages qui associe les packages à leurs référentiels de code source. Les packages peuvent être générés et poussés à partir du référentiel, souvent automatiquement à l'aide d'un pipeline GitHub Actions.

GitHub Container Registry ajoute simplement une compatibilité spécifique à Docker aux packages GitHub, le faisant fonctionner comme un registre de conteneurs pour l'exécution de docker pull et d'autres commandes CLI.

Vous n'avez pas besoin de publier dans le registre de conteneurs GitHub, vous pouvez toujours publier sur Docker Hub à partir d'une action avec une certaine configuration. Les actions prédéfinies fonctionnent avec GHCR prêtes à l'emploi, donc c'est beaucoup plus simple à configurer.

Comment configurer les builds automatiques pour Packages GitHub

Pour commencer, vous aurez besoin d'un référentiel. Même si vous ne publiez que des packages, vous aurez toujours besoin d'un dépôt, car le format de GHCR est :

ghcr.io/username/repository/image:version Advertisement

Configurez un dépôt, puis cliquez sur “Actions” pour créer une nouvelle action. Sous “Flux de travail d'intégration continue,” cliquez sur “Publier le conteneur Docker.”

Cela génère un modèle de démarrage , qui nécessite quelques modifications pour fonctionner. Tout d'abord, la variable IMAGE_NAME doit être remplacée par le nom de votre image.

Ensuite, à la ligne 39, vous trouverez où il se connecte à GHCR.

exécutez : echo “${{ secrets.CR_PAT }}” | connexion docker https://ghcr.io -u ${{ github.actor }} –password-stdin

Actuellement, le seul schéma d'authentification pris en charge est les jetons d'accès personnels (PAT), ce qui n'est pas idéal pour la sécurité car ils accordent un accès à l'ensemble du compte. GitHub le sait et travaille sur une meilleure solution pour l'avenir, mais en attendant, si vous souhaitez utiliser GHCR à partir d'un workflow GitHub Actions, vous devrez stocker un PAT dans les secrets de votre référentiel, car évidemment le coller ici serait horrible.

Tout d'abord, vous devrez vous rendre dans Paramètres > Paramètres du développeur > Jetons d'accès personnels et créez un nouveau jeton. Ce jeton nécessite les paramètres write:packages et delete:packages. Notez que pour une raison quelconque, la sélection de packages d'écriture sélectionne automatiquement “Contrôle total des référentiels,” que vous devez décocher.

Ensuite, accédez aux paramètres du référentiel et créez un nouveau secret appelé CR_PAT, pour correspondre à l'action.

Publicité

Retournez à l'action et cliquez sur “Démarrer la validation” pour le pousser vers le référentiel.

Une fois qu'il est validé, il se déclenche un workflow pour exécuter et créer le package. Vous pouvez surveiller l'état de tous les workflows en cours d'exécution sous les “Actions” languette. Ici, cela a échoué car les actions par défaut s'attendent à ce qu'il y ait des tests à exécuter, ce que cette image n'avait pas.

Une fois que c'est réussi, vous devriez voir le conteneur dans le registre, sous “Packages” sur la page principale du référentiel ou sous les packages de votre profil.