GitHub Actions Cheatsheet - Standardstruktur och en lista över de mest användbara åtgärderna
Lite om 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 push, pull requests eller på ett schema.
Förutom standard GitHub kan du använda GitHub Actions i en self-hosted Gitea-server.

Denna sammanfattning täcker GitHub Actions struktur, kort beskrivning och de vanligaste åtgärderna som används i öppna källkods- och kommersiella arbetsflöden. Åtgärder omfattar officiella, community- och tredjepartsverktyg, som stöder automatisering från byggande och tester till distribution, versionshantering, QA och notiser.
Grundläggande Konfigurationsstruktur
GitHub Actions Workflows definieras i YAML-filer som finns i katalogen .github/workflows i repositoryt.
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
- Blocket on anger utlösande händelser.
- Varje job körs på sin egen runner.
- steps kan köra shell-kommandon eller kalla återanvändbara åtgärder.
Grundläggande Arbetsflödeskomponenter
| Komponent | Beskrivning |
|---|---|
| Workflow | Automatiserad process (YAML) som utlöses av en händelse |
| Händelse | Aktivitet som utlöser arbetsflöde (push, pull_request, etc.) |
| Job | Serie av steg som körs på en runner, kan köras sekventiellt eller parallellt |
| Step | Varje kommando eller åtgärd i ett jobb |
| Runner | VM eller container där jobb körs |
| Action | Återanvändbar tillägg/utökning som kapslar en uppgift |
Utlösande Hä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: 'Distributionsmiljö'
required: true
default: 'production'
type: string
Användbara Inbyggda Åtgärder
| Åtgärd | Syfte | Vanliga parametrar |
|---|---|---|
| actions/checkout | Checka ut repositorykod | ref, token, submodules, persist-credentials |
| actions/setup-node | Konfigurera Node.js-miljö | node-version, cache, architecture, check-latest |
| actions/setup-python | Konfigurera Python | python-version, architecture |
| actions/cache | Cacha beroenden | path, key, restore-keys |
| docker/build-push-action | Bygga & skicka Docker-bilder | 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öra godtycklig JavaScript i ditt arbetsflöde | script, github-token |
Åtgärdsparametrar
Allmänna parametrar för alla åtgärdskall
- 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 åtgärden (se åtgärdens dokumentation för alla alternativ)
- env: miljövariabler för steget
- if: villkorlig körning
- run: shell-kommandon (om inte en åtgärd används)
- shell: shell som används för att köra steget
- continue-on-error: fortsätt även om steget misslyckas
Definiera Anpassade Åtgärdsinmatningar
I din åtgärdsmetadata (action.yml):
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
När det används i ett arbetsflöde:
- uses: my/action@v1
with:
example-input: 'custom-value'
Åtkomlig som miljövariabel INPUT_EXAMPLE_INPUT när åtgärden körs.
Exempel: Arbetsflöde med Manuella Parametrar
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Distributionsmiljö'
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 }}"
Åtgärdsmarknad
- Tusentals återanvändbara åtgärder finns tillgängliga i GitHub Marketplace.
- Kategorier inkluderar: molndistributioner, notiseringsverktyg, 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 parameteriserade körningar.
- Använd cache åtgärd för att påskynda beroendeinstallationer.
- Använd job matrix för att testa flera OS/körningsversioner.
- Använd hemligheter för känslig data, refererad som
${{ secrets.SECRET_NAME }}.
Denna snabbguide 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 åtgärdsrepository.
Vanliga GitHub Actions
Här är en praktisk lista över vanligt använda GitHub Actions som hjälper till att automatisera CI/CD, testning, byggande, distribution och arbetsflödesuppgifter:
Grundläggande officiella åtgärder
| Åtgärd | Syfte | Nyckelparametrar |
|---|---|---|
| actions/checkout | Checkar ut repositorykod | ref, submodules |
| actions/setup-node | Konfigurerar Node.js-miljö | node-version, cache |
| actions/setup-python | Konfigurerar Python-miljö | python-version |
| actions/setup-java | Konfigurerar Java JDK | distribution, java-version |
| actions/cache | Cachar beroenden och byggresultat | path, key, restore-keys |
| actions/upload-artifact | Laddar upp byggartefakter | name, path |
| actions/download-artifact | Laddar ner artefakter från arbetsflöde | name, path |
| actions/github-script | Kör JavaScript med GitHub-kontext och API | script |
| actions/create-release | Skapar en GitHub-release | tag_name, release_name |
| actions/upload-release-asset | Laddar upp tillägg till en release | upload_url, asset_path |
| actions/labeler | Applicerar automatiskt etiketter på ärenden/PR:s | repo-token, configuration-path |
Populära community- och tredjepartsåtgärder
| Åtgärd | Syfte |
|---|---|
| docker/build-push-action | Bygger och laddar upp Docker-bilder |
| actions/setup-go | Konfigurerar Go-miljö |
| super-linter/super-linter | Universell automatiserad kodkontroll |
| trufflesecurity/trufflehog | Skannar efter hemligheter och autentiseringsuppgifter |
| peaceiris/actions-gh-pages | Distribuerar statiska webbplatser till GitHub Pages |
| JamesIves/github-pages-deploy-action | Distribuerar projekt till GitHub Pages |
| peter-evans/create-pull-request | Skapar pull requests automatiskt |
| softprops/action-gh-release | Skapar och laddar upp GitHub-releases |
| ad-m/github-push-action | Skickar ändringar tillbaka till GitHub-repository |
| actions/setup-dotnet | Konfigurerar .NET SDK |
| azure/login | Autentiserar mot Azure |
| google-github-actions/auth | Autentiserar mot Google Cloud |
Testning, QA och rapporteringsåtgärder
| Åtgärd | Syfte |
|---|---|
| actions/setup-ruby | Konfigurerar Ruby-miljö |
| codecov/codecov-action | Laddar upp kodtäckningsrapporter till Codecov |
| coverallsapp/github-action | Laddar upp täckningsresultat till Coveralls |
| dorny/test-reporter | Fäster testresultat till GitHub Checks |
| stefanzweifel/git-auto-commit-action | Automatisk commit och push av filändringar |
Distributions- och notifieringsåtgärder
| Åtgärd | Syfte |
|---|---|
| appleboy/scp-action | Laddar upp filer med SCP |
| SamKirkland/FTP-Deploy-Action | Distribuerar filer via FTP/FTPS |
| cypress-io/github-action | Kör Cypress slut-till-slut-tester |
| slackapi/slack-github-action | Skickar meddelanden till Slack |
| dawidd6/action-send-mail | Skickar e-post under arbetsflödeskörningar |
Användbarhets- och arbetsflödeshanteringsåtgärder
| Åtgärd | Syfte |
|---|---|
| peter-evans/repository-dispatch | Utlösar externa repositoryarbetsflöden |
| fregante/setup-git-user | Konfigurerar Git-användarautentisering för commits |
| andymckay/labeler | Etiketterar ärenden och PR:s baserat på sökvägar |
| actions/configure-pages | Konfigurerar publicering till GitHub Pages |
| EndBug/add-and-commit | Lägger till & commitar filer inom ett arbetsflöde |
| dangoslen/changelog-enforcer | Kontrollerar om en changelog har uppdaterats för PR:s |
Hur man hittar fler
Det finns många GitHub Actions som möjliggör arbetsflödesautomatisering såsom automatiserad testning, distribution till produktion, notifieringar och integrationer med andra tjänster. GitHub Marketplace listar tusentals åtgärder inom kategorier som testning, säkerhet, distribution, notifieringar, kodkvalitet och integrationer. Kuraterade listor som “Awesome Actions” är också bra 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 Cheatsheet
- Gitea - installation och testning
- Backup och återställning av Gitea-server
- Använda Gitea Actions för att distribuera Hugo-webbplats till AWS S3
- Gitflow: steg, alternativ, fördelar och nackdelar
- DevOps med GitOps - Argo CD, Flux, Jenkins X, Weave GitOps och andra