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

Lite om 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 push, pull requests eller på ett schema.

Förutom standard GitHub kan du använda GitHub Actions i en self-hosted Gitea-server.

github actions flow

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