Automatisera testning och byggsteg i din utvecklingsprocess genom GitHub Actions. Du lär dig skapa ett arbetsflöde som kör när du pushar kod, t.ex. för att testa eller bygga en Docker-image.
| Term | Förklaring |
|---|---|
| CI – Continuous Integration | Varje gång du pushar kod körs tester och kontroller automatiskt |
| CD – Continuous Delivery/Deployment | Din kod byggs och kan distribueras vidare (t.ex. till Docker Hub eller en server) |
GitHub Actions låter dig köra kod direkt i GitHub – t.ex. testa, bygga och publicera när något sker (t.ex. push eller pull_request).
Arbetsflöden (workflows) definieras i YAML-filer under .github/workflows/.
Gå till din projektmapp (t.ex. Node.js/Docker-projekt).
Skapa en mapp:
mkdir -p .github/workflows
Skapa filen ci.yml:
# .github/workflows/ci.yml
name: Testa och bygg Node.js-app
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Klona repot
uses: actions/checkout@v3
- name: Installera Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Installera beroenden
run: npm install
- name: Kör tester
run: npm test
- name: Bygg Docker-image
run: docker build -t node-docker-app .
Tips: Lägg till ett enkelt test i
package.jsonmed"test": "echo \"OK\""om du inte har riktiga tester.
För att automatiskt pusha Docker-images behöver du:
1.5 Gå in på Github->Settings->Secret and Variables->Secrets
Skapa två Repository secrets GitHub Secrets:
DOCKER_USERNAMEDOCKER_PASSWORDLägg till steg i workflow:
- name: Logga in i Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Pusha image
run: |
docker tag node-docker-app ${{ secrets.DOCKER_USERNAME }}/node-docker-app:latest
docker push ${{ secrets.DOCKER_USERNAME }}/node-docker-app:latest
.github/workflows/ci.yml till main:git add .
git commit -m "Lägg till CI-workflow"
git push origin main
.github/workflows/ci.yml i ditt Docker-projekt.package.json.Du har nu ett arbetsflöde där kod:
lint, formatter, code coverage i CIdocker-compose och flera tjänster i CI