GitHub Actions-fuskblad – Standardstruktur och en lista över de mest användbara åtgärderna

En kort presentation av vanliga GitHub Actions och deras struktur.

Sidinnehåll

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.

github actions flow

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