Meilleurs pots instantanés de 2020
2 octobre 2020
Le 8 meilleur four à convection de comptoir à acheter 2020
2 octobre 2020

Logo GitHub.

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

Nouveau registre de conteneurs de GitHub

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

Registre de conteneurs GitHub.

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

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

Comment configurer des builds automatiques sur des 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 du GHCR est:

ghcr.io/username/repository/image:version

Mettez en place un repo, puis cliquez sur «Actions» pour créer une nouvelle action. Sous "Plus de flux de travail d'intégration continue", cliquez sur "Publier le conteneur Docker".

Configurez votre repo.

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

Remplacez la variable IMAGE_NAME par le nom de votre image.

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

run: echo "$ {{secrets.CR_PAT}}" | connexion au 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 un meilleur correctif pour l'avenir, mais en attendant, si vous souhaitez utiliser GHCR à partir d'un flux de travail GitHub Actions, vous devrez stocker un PAT dans les Secrets de votre référentiel, car évidemment, il suffit de coller ce serait horrible ici.

Tout d'abord, vous devez vous rendre dans Paramètres> Paramètres du développeur> Jetons d'accès personnels et créer un nouveau jeton. Ce jeton a besoin écrire: packages et supprimer: packages réglages. Notez que pour une raison quelconque, la sélection des packages d'écriture sélectionne automatiquement «Contrôle total des référentiels», que vous devez décocher.

Créez un nouveau jeton avec les paramètres write: packages et delete: packages.

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

Créez un nouveau secret appelé CR_PAT.

Revenez à l'action et cliquez sur «Démarrer la validation» pour la pousser vers le référentiel.

Cliquez sur

Une fois validé, il déclenchera 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 l'onglet «Actions». 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.

Surveillez l'état de tous les workflows en cours d'exécution sous le

Une fois l'opération réussie, vous devriez voir le conteneur dans le registre, sous "Packages" sur la page principale du référentiel, ou sous les packages sur votre profil.

Une compilation réussie.

//]]>