4.1 GitHub actions voor Ci Cd - ChristopheYuStudent/IT-Landscape2 GitHub Wiki
Hier mee willen we jou laten zien welke acties je gaat moeten ondernemen om van een repository moeten opzetten naar een Docker image moet gaan.
Na deze uitleg zou jou een repository kunnen maken en deze terug vinden in jou DockerHub.
Voorbereiding
Voor aleer we een pipeline kunnen opzetten moeten we nog wat dingen klaarzetten:
- DockerFile: De file waar al je instrucies staan voor het aanmaken van je Docker image.
- Docker Hub Account: De plaats waar je al je Docker-images gaat hosten.
- GitHub Account: Voor het beheren van je repository en workflow.
- GitHub Repository: De repository waar je code in gaat komen en je DockerFile.
- GitHub Secrets: Je inloggegevens voor Docker hub komen hier in.
Uitvoering
Nu gaan we stapsgewijs aan de slag voor de opzetting hier van. We gaan eerst een clone maken van je GitHub Repository en in Visual Studio Code verder.
Het eerste dat we gaan doen is een Dockerfile aanmaken en daar in het volgende zetten.
FROM node:23-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
Dit is een simpele manier voor het aanmaken van een Docker Image. Deze bouwt dan een image met versie 23 van node.js. Het project zal nu dit kopiëren naar de container.
Nu gaan we beginnen met een workflow aan maken. Dit gaan een nieuwe directory aanmaken genaamd .github/workflows in je project en daar in je .yml file, het maakt niet uit hoe je dit noemt maar omdat het voor het deployment is nu ik het deploy.yml.
Het volgedne komt in je .yml file en vergeet niet je naam te veranderen naar je inlog van GitHub
name: GitHub actions voor Ci Cd
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build Docker Image
run: docker build -t christopheyustudent/getting-started:latest -f Dockerfile .
- name: Push Docker Image
run: docker push christopheyustudent/getting-started:latest
Deze workflow zorgt er voor dat elke keer er een wijziging in de main komt je Docker image wordt geüpdate met je laatste comit. En met de docker push komt dit rechtstreeks in Docker hub zodat elke wijziging je doet direct beschikbaar is voor de mensen op Docker hub.
Nu je wachtwoord en gebruikersnaam wil je liever niet online gooien en daar is ook een oplossing voor door te werken met Github secrets.
Daarom zetten we dit in sectres.
In Docker hub kan je access tokens maken.
- Met access tokens kan je het risico op misbruik beperken door te bepalen wat er zichtbaar mag zijn. Je kan deze rechten ook afpakken.
- Je kan zo ook meerdere tokens maken als je meerdere images gaat maken en je wil niet dat al je images dezelfde beveiliging hebben.
Nu dat alles klaarstaat gaan we de Workflow commiten en puchen. Eerst gaan we een build en run doen
docker build -t christopheyustudent:latest .
docker run -dp 3000:3000 christopheyustudent
nu is je set up klaar en gaat elke verandering in je Docker Hub terecht komen