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