GitHub Actions-fuskblad – Standardstruktur och en lista över de mest användbara åtgärderna
En kort presentation av vanliga GitHub Actions och deras struktur.
GitHub Actions är en automatiserings- och CI/CD-plattform inom GitHub, som används för att bygga, testa och distribuera din kod baserat på händelser som pushes, pull requests eller schemalagda tider.
Utöver standard-GitHub kan du använda GitHub Actions i en självärd Gitea-server.

Actions omfattar officiella, community-baserade och tredjepartsverktyg och stödjer automatisering allt från byggprocesser och tester till distribution, versionshantering, QA och notifieringar.
Sammanfattningen täcker GitHub Actions struktur, en kort beskrivning och de vanligaste actions som används i öppna och kommersiella arbetsflöden. Den är en del av [Utvecklarkrav: Den fullständiga guiden till moderna utvecklingsarbetsflöden](https://www.glukhov.org/sv/developer-tools/ “Mastera nödvändiga utvecklarkrav med omfattande guider: Git, Docker, VS Code, bash, Terraform, PostgreSQL, GitHub Actions och Linux-pakethantering. Praktiska felsökningar och arbetsflöden för fullstack-utveckling).
Grundläggande konfigurationsstruktur
GitHub Actions-arbetsflöden definieras i YAML-filer som finns i .github/workflows-katalogen i repositori.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run tests
run: npm test
- on-blocken anger utlösningshändelser.
- Varje job körs på sin egen runner.
- steps kan köra skalldiktor eller anropa återanvändbara actions.
Huvudkomponenter i arbetsflödet
| Komponent | Beskrivning |
|---|---|
| Arbetsflöde | Automatiserad process (YAML) utlöst av en händelse |
| Händelse | Aktivitet som utlöser arbetsflödet (push, pull_request, etc.) |
| Job | En serie steg som körs på en runner, kan köras sekventielt eller parallellt |
| Steg | Varje kommando eller action i ett job |
| Runner | En virtuell maskin eller behållare där jobb körs |
| Action | Återanvändbar extension/tillägg som kapslar in en uppgift |
Utlösningshändelser
- push
- pull_request
- schedule (använder cron-syntax)
- workflow_dispatch (manuell utlösning, tillåter inmatningsparametrar)
- release, issue, etc.
Exempel:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
Användbara inbyggda Actions
| Action | Syfte | Vanliga parametrar |
|---|---|---|
| actions/checkout | Hämta repositories kod | ref, token, submodules, persist-credentials |
| actions/setup-node | Sätt upp Node.js-miljö | node-version, cache, architecture, check-latest |
| actions/setup-python | Sätt upp Python | python-version, architecture |
| actions/cache | Cacha beroenden | path, key, restore-keys |
| docker/build-push-action | Bygg och pusha Docker-images | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | Ladda upp byggartefakter | name, path, if-no-files-found |
| actions/download-artifact | Ladda ner artefakter | name, path |
| github/email-actions | Skicka e-postnotiser | to, subject, content, attachments |
| peter-evans/create-pull-request | Skapa PR via arbetsflöde | branch, title, body, labels, base |
| actions/github-script | Kör godtycklig JavaScript i ditt arbetsflöde | script, github-token |
Action-parametrar
Allmänna parametrar för alla action-anrop:
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: argument som skickas till actionen (se actionens dokumentation för alla alternativ)
- env: miljövariabler för steget
- if: villkorlig exekvering
- run: skalldiktor (om inte en action används)
- shell: skalldator som används för att köra steget
- continue-on-error: fortsätt även om steget misslyckas
Definiera egna action-inmatningar
I din action-metadata (action.yml):
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
När den används i ett arbetsflöde:
- uses: my/action@v1
with:
example-input: 'custom-value'
Åtkomlig som miljövariabel INPUT_EXAMPLE_INPUT när actionen körs.
Exempel: Arbetsflöde med manuella parametrar
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to environment
run: echo "Deploying to ${{ github.event.inputs.environment }}"
Action Marketplace
- Tusentals återanvändbara actions finns tillgängliga i GitHub Marketplace.
- Kategorier inkluderar: molndistribution, notifieringsverktyg, testramverk, kodanalys och mer.
- Utforska: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact och många andra.
Snabba tips
- Placera arbetsflödesfiler i
.github/workflows. - Använd workflow_dispatch med inputs för manuella och parametrerade körningar.
- Använd cache-action för att accelerera beroendeinstallationer.
- Använd job matrix för att testa flera OS-/körningstidsversioner.
- Använd hemligheter för känslig data, refererad som
${{ secrets.SECRET_NAME }}.
Denna felsökning täcker grunderna för att använda, konfigurera och utöka GitHub Actions för automatisering, CI/CD och mer. För mer detaljer och uppdateringar, kontrollera alltid den officiella GitHub-dokumentationen och action-repositories.
Vanliga GitHub Actions
Här är en praktisk lista över ofta använda GitHub Actions som hjälper till att automatisera CI/CD, testning, byggprocesser, distribution och arbetsflödesuppgifter:
Huvudofficiella Actions
| Action | Syfte | Nyckelparametrar |
|---|---|---|
| actions/checkout | Hämta repositories kod | ref, submodules |
| actions/setup-node | Sätt upp Node.js-miljö | node-version, cache |
| actions/setup-python | Sätt upp Python-miljö | python-version |
| actions/setup-java | Sätt upp Java JDK | distribution, java-version |
| actions/cache | Cacha beroenden och byggutdata | path, key, restore-keys |
| actions/upload-artifact | Ladda upp byggartefakter | name, path |
| actions/download-artifact | Hämta artefakter från arbetsflödet | name, path |
| actions/github-script | Kör JavaScript med GitHub-kontext och API | script |
| actions/create-release | Skapa en GitHub-release | tag_name, release_name |
| actions/upload-release-asset | Ladda upp tillgångar till en release | upload_url, asset_path |
| actions/labeler | Tillämpar automatiskt etiketter på frågor/PRs | repo-token, configuration-path |
Populära community- och tredjepartsactions
| Action | Syfte |
|---|---|
| docker/build-push-action | Bygg och pusha Docker-images |
| actions/setup-go | Sätt upp Go-miljö |
| super-linter/super-linter | Universell automatisk kodlinting |
| trufflesecurity/trufflehog | Skanna efter hemligheter och inloggningsuppgifter |
| peaceiris/actions-gh-pages | Distribuera statiska webbplatser till GitHub Pages |
| JamesIves/github-pages-deploy-action | Distribuera projekt till GitHub Pages |
| peter-evans/create-pull-request | Skapa pull requests automatiskt |
| softprops/action-gh-release | Skapa och ladda upp GitHub Releases |
| ad-m/github-push-action | Pusha ändringar tillbaka till GitHub-repository |
| actions/setup-dotnet | Sätt upp .NET SDK |
| azure/login | Autentisera mot Azure |
| google-github-actions/auth | Autentisera mot Google Cloud |
Testning, QA och rapporteringsactions
| Action | Syfte |
|---|---|
| actions/setup-ruby | Sätt upp Ruby-miljö |
| codecov/codecov-action | Ladda upp kodtäckningsrapporter till Codecov |
| coverallsapp/github-action | Ladda upp täckningsresultat till Coveralls |
| dorny/test-reporter | Fäst testresultat till GitHub Checks |
| stefanzweifel/git-auto-commit-action | Auto-commit och pusha filändringar |
Distribution och notifieringsactions
| Action | Syfte |
|---|---|
| appleboy/scp-action | Ladda upp filer med SCP |
| SamKirkland/FTP-Deploy-Action | Distribuera filer via FTP/FTPS |
| cypress-io/github-action | Kör Cypress end-to-end-tester |
| slackapi/slack-github-action | Skicka meddelanden till Slack |
| dawidd6/action-send-mail | Skicka e-post under arbetsflödeskörningar |
Verktyg och arbetsflödeshantering
| Action | Syfte |
|---|---|
| peter-evans/repository-dispatch | Utlöser externa repositories arbetsflöden |
| fregante/setup-git-user | Sätt upp Git-användaruppgifter för commits |
| andymckay/labeler | Etiketterar frågor och PR baserat på sökvägar |
| actions/configure-pages | Konfigurera publicering till GitHub Pages |
| EndBug/add-and-commit | Lägg till och commita filer inom ett arbetsflöde |
| dangoslen/changelog-enforcer | Kontrollera om en ändringslogg uppdaterats för PRs |
Hur man hittar mer
Det finns många GitHub Actions som möjliggör arbetsflödesautomatisering såsom automatisk testning, distribution till produktionsmiljö, notifieringar och integrationer med andra tjänster. GitHub Marketplace listar tusentals actions inom kategorier som testning, säkerhet, distribution, notifieringar, kodkvalitet och integrationer. Kurerade listor som “Awesome Actions” är också utmärkta för inspiration och upptäckt.
Användbara länkar
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT-felsökning
- Gitea - installation och testning
- Backup och återställning av Gitea-server
- Använd Gitea Actions för att distribuera Hugo-webbplats till AWS S3
- Gitflow: Steg, alternativ, för- och nackdelar
- DevOps med GitOps - Argo CD, Flux, Jenkins X, Weave GitOps och andra