4.2 CI CD Aanpak - dkmattiUCLL/IT-Landscape GitHub Wiki

image

CI/CD in GitHub aanpak

Selecteer een project

Ik heb een generiek node project gemaakt voor deze opdracht. Dit bevat een .js file, een .json file, een Dockerfile en een docker-image.yml file. De docker-image.yml file zit in de folder "workspace". De folder workspace zit in de folder ".github". De folder ".github" en alle inhoud is de essentie van het project. Dit is de workflow en gaat ervoor zorgen dat wij de connectie kunnen leggen.



image

Maak je Dockerfile

We maken een Dockerfile zoals we dat in dit hoofdstuk ook deden.

image

Maak je .yml file

Dit is waar het ingewikkeld wordt. Dit is de file die communiceert met de github en de workflow beschrijft.

image

name

Dit is de naam van de workflow.

on: push: paths: - ".js" - ".json" - "Dockerfile"

on: wilt weten waar hij naar moet luisteren om de jobs uit te voeren. Hier moet hij luisteren naar push:. push: zegt tegen on: dat er gepusht moet worden, maar wilt zelf weten naar welke pushes er geluisterd moet worden. paths: zegt dat er enkel naar push moet geluisterd worden als het en .js, .json of Dockerfile push is.

jobs: build:

jobs: zegt wat er moet uitgevoerd worden. In dit geval is dat maar één job, build:. build: is geen vast gekozen naam, maar de naam die wij hebben gekozen voor de job die we gaan uitvoeren.

permissions:

Zegt wat de workflow wel of niet mag. contents:read betekent dat de workflow mag lezen wat er op de github staat. packages:write betekent dat de workflow images en packages mag maken en publiceren.

runs-on:ubuntu-latest

Zegt dat de runner ubuntu-latest moet gebruiken. runners zijn virtual machines die github beschikbaar stelt om workflows uit te voeren.

steps:

steps: is een reeks acties die uitgevoerd moeten worden.

name: Checkout uses: actions/checkout@v4

Checked je broncode uit je github repository.

name: Login to GHCR uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }}

Dit is een technisch ingewikkelde stap, maar in essentie logt deze stap je in, en zorgt ervoor dat je deze workflow kan pushen. Je logt in naar de GitHub Container Registry (GHCR). Dit is de plek waar al je images die je pusht opgeslagen worden. Dit staat los van je repository.

docker build & docker push$

build en push doen exact wat je zou denken dat ze doen. build maakt de image die we daarnet geschreven hebben, en push pusht deze naar de GHCR.

Is alles gelukt?

Als alles gelukt is, zou je nu een scherm gelijkaardig aan de onderstaande afbeelding moeten zien.

image

image

⚠️ **GitHub.com Fallback** ⚠️