Automatische builds instellen voor Docker-afbeeldingen op GitHub

0
153

GitHub heeft een functie genaamd GitHub Actions die automatische builds, tests en andere scripts wanneer u wijzigingen aanbrengt in een repository. Een handig gebruik hiervan is het automatisch bouwen en pushen van Docker-containers naar een containerregister.

GitHub's nieuwe containerregister

< p>Het nieuwe containerregister van GitHub, GitHub Container Registry genaamd, is een beetje anders dan de meeste registers zoals de Docker Hub. Het functioneert als een uitbreiding van GitHub Packages, een pakketopslagsysteem dat pakketten associeert met hun broncoderepository's. Pakketten kunnen vanuit de repository worden gebouwd en gepusht, vaak automatisch met behulp van een GitHub Actions-pipeline.

GitHub Container Registry voegt simpelweg Docker-specifieke compatibiliteit toe aan GitHub-pakketten, waardoor het functioneert als een containerregister voor het uitvoeren van docker pull en andere CLI-opdrachten.

U hoeft niet te publiceren naar het containerregister van GitHub. U kunt nog steeds publiceren naar de Docker Hub vanuit een actie met enige configuratie. De kant-en-klare acties werken echter direct met GHCR, dus het is een stuk eenvoudiger om in te stellen.

Automatische builds instellen om GitHub-pakketten

Om te beginnen heb je een repository nodig. Zelfs als je alleen pakketten publiceert, heb je nog steeds een repo nodig, omdat het formaat voor GHCR is:

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

Stel een opslagplaats in en klik vervolgens op “Acties” om een ​​nieuwe actie aan te maken. Onder “Meer continue integratieworkflows,” klik op “Publiceer Docker-container.”

< p>Dit genereert een startsjabloon, die een paar wijzigingen nodig heeft om te werken. Eerst moet de variabele IMAGE_NAME worden gewijzigd in uw afbeeldingsnaam.

Dan vind je op regel 39 waar het inlogt op GHCR.

uitvoeren: echo “${{ secrets.CR_PAT }}” | docker-login https://ghcr.io -u ${{ github.actor }} –password-stdin

Momenteel is het enige ondersteunde authenticatieschema Personal Access Tokens (PAT's), wat niet geweldig is voor de beveiliging omdat ze accountbrede toegang verlenen. GitHub weet dit en werkt aan een betere oplossing voor de toekomst, maar in de tussentijd, als je GHCR wilt gebruiken vanuit een GitHub Actions-workflow, moet je een PAT opslaan in de Secrets voor je repository, want uiteraard gewoon hier plakken zou verschrikkelijk zijn.

Eerst moet je naar Instellingen > Ontwikkelaarsinstellingen > Persoonlijke toegangstokens en maak een nieuw token aan. Dit token heeft de instellingen write:packages en delete:packages nodig. Merk op dat om de een of andere reden het selecteren van schrijfpakketten automatisch “Volledig beheer van opslagplaatsen,” die u moet uitschakelen.

Ga dan naar de instellingen van de repository en maak een nieuw geheim aan met de naam CR_PAT, passend bij de actie.

Advertentie

Ga terug naar de actie en klik op “Start Commit” om het naar de repository te pushen.

Zodra het 8217 is ;s commit, zal het een workflow activeren om het pakket uit te voeren en te bouwen. U kunt de status van alle lopende workflows volgen onder de “Acties” tabblad. Hier mislukte het omdat de standaardacties verwachten dat er tests worden uitgevoerd, wat deze afbeelding niet had.

Zodra het is gelukt, zou u de container in het register moeten zien, onder “Packages” op de hoofdpagina van de repository, of onder de pakketten op uw profiel.