Cheat Sheet GitHub Actions – standardowa struktura i lista najbardziej przydatnych akcji

Kilka słów o typowych działaniach GitHub Actions i ich strukturze.

Page content

GitHub Actions jest platformą automatyzacji i CI/CD w ramach GitHub, używaną do budowania, testowania i wdrażania kodu na podstawie zdarzeń, takich jak push, żądania pull request lub harmonogram.

Oprócz standardowego GitHub możesz używać GitHub Actions na samodzielnie hostowanym serwerze Gitea.

github actions flow

Akcje obejmują narzędzia oficjalne, społecznościowe i сторонnie, wspierając automatyzację od budowania i testowania po wdrażanie, zarządzanie wydaniem, kontrolę jakości (QA) oraz powiadomienia.


To podsumowanie obejmuje strukturę GitHub Actions, krótki opis oraz najczęściej używane akcje w przepływach pracy open source i komercyjnych. Jest to część przewodnika Narzędzia dla programistów: Kompletny przewodnik po nowoczesnych przepływach pracy.

Podstawowa struktura konfiguracji

Przepływy pracy (Workflows) GitHub Actions są zdefiniowane w plikach YAML znajdujących się w katalogu .github/workflows wewnątrz repozytorium.

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
  • Blok on określa zdarzenia wyzwalające (triggery).
  • Każda praca (job) wykonuje się na własnym runnerze.
  • steps mogą wykonywać polecenia powłoki (shell) lub wywoływać ponownie używalne akcje.

Podstawowe składniki przepływu pracy

Składnik Opis
Workflow Zautomatyzowany proces (YAML) wyzwalany przez zdarzenie
Event Działanie wyzwalające przepływ pracy (push, pull_request itp.)
Job Seria kroków wykonywanych na runnerze, mogą być uruchamiane sekwencyjnie lub równolegle
Step Każde polecenie lub akcja w ramach jobu
Runner VM lub kontener, na którym wykonywane są joby
Action Ponownie używalne rozszerzenie/add-on enkapsulujące zadanie

Zdarzenia wyzwalające

  • push
  • pull_request
  • schedule (używając składni cron)
  • workflow_dispatch (ręczne wyzwalanie, pozwala na parametry wejściowe)
  • release, issue itp.

Przykład:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string

Przydatne wbudowane akcje

Akcja Cel Typowe parametry
actions/checkout Pobranie kodu z repozytorium ref, token, submodules, persist-credentials
actions/setup-node Konfiguracja środowiska Node.js node-version, cache, architecture, check-latest
actions/setup-python Konfiguracja środowiska Python python-version, architecture
actions/cache Buforowanie zależności path, key, restore-keys
docker/build-push-action Budowanie i wysyłanie obrazów Docker context, file, platforms, tags, push, build-args
actions/upload-artifact Wysyłanie artefaktów budowania name, path, if-no-files-found
actions/download-artifact Pobieranie artefaktów name, path
github/email-actions Wysyłanie powiadomień e-mail to, subject, content, attachments
peter-evans/create-pull-request Tworzenie PRów przez workflow branch, title, body, labels, base
actions/github-script Uruchamianie dowolnego JavaScriptu w workflow script, github-token

Parametry akcji

Ogólne parametry dla dowolnego wywołania akcji:

- 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: argumenty przekazywane do akcji (zobacz dokumentację akcji dla wszystkich opcji)
  • env: zmienne środowiskowe dla kroku
  • if: warunkowe wykonanie
  • run: polecenia powłoki (jeśli nie używa się akcji)
  • shell: powłoka używana do wykonania kroku
  • continue-on-error: kontynuuj nawet jeśli krok nie powiódł się

Definiowanie własnych parametrów wejściowych

W metadanych akcji (action.yml):

inputs:
  example-input:
    description: 'An example input'
    required: false
    default: 'default-value'

Podczas użycia w przepływie pracy:

- uses: my/action@v1
  with:
    example-input: 'custom-value'

Dostępne jako zmienna środowiskowa INPUT_EXAMPLE_INPUT podczas uruchamiania akcji.

Przykład: Przepływ pracy z ręcznymi parametrami

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 }}"

Rynek akcji (Action Marketplace)

  • Tysiące ponownie używalnych akcji jest dostępnych na Rynku GitHub.
  • Kategorie obejmują: wdrożenia w chmurze, narzędzia powiadomień, ramy testowe, analizę kodu i wiele więcej.
  • Przeglądaj: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact i wiele innych.

Szybkie wskazówki

  • Umieść pliki przepływów pracy w .github/workflows.
  • Użyj workflow_dispatch z inputs do ręcznych i parametrizowanych uruchomień.
  • Użyj akcji cache, aby przyspieszyć instalację zależności.
  • Użyj macierzy (matrix) jobów do testowania wielu wersji systemów operacyjnych i środowisk uruchamiania.
  • Użyj sekretów (secrets) dla danych wrażliwych, odwoływanych jako ${{ secrets.SECRET_NAME }}.

Ten skrypt obejmuje podstawy używania, konfigurowania i rozszerzania GitHub Actions dla automatyzacji, CI/CD i więcej. Dla więcej szczegółów i aktualizacji zawsze sprawdzaj oficjalną dokumentację GitHub i repozytoria akcji.

Popularne akcje GitHub

Oto praktyczna lista często używanych akcji GitHub, które pomagają w automatyzacji CI/CD, testowaniu, budowaniu, wdrażaniu i zadaniach przepływu pracy:

Podstawowe oficjalne akcje

Akcja Cel Kluczowe przykładowe parametry
actions/checkout Pobiera kod z repozytorium ref, submodules
actions/setup-node Konfiguruje środowisko Node.js node-version, cache
actions/setup-python Konfiguruje środowisko Python python-version
actions/setup-java Konfiguruje JDK Java distribution, java-version
actions/cache Buforuje zależności i wyniki budowania path, key, restore-keys
actions/upload-artifact Wysyła artefakty budowania name, path
actions/download-artifact Pobiera artefakty z przepływu pracy name, path
actions/github-script Uruchamia JavaScript używając kontekstu i API GitHub script
actions/create-release Tworzy wydanie na GitHub tag_name, release_name
actions/upload-release-asset Wysyła zasoby do wydania upload_url, asset_path
actions/labeler Automatycznie przypisuje etykiety do issue/PR repo-token, configuration-path

Popularne akcje społecznościowe i сторонnie

Akcja Cel
docker/build-push-action Budowanie i wysyłanie obrazów Docker
actions/setup-go Konfiguruje środowisko Go
super-linter/super-linter Uniwersalne automatyczne lintowanie kodu
trufflesecurity/trufflehog Skanowanie pod kątem sekretów i poświadczeń
peaceiris/actions-gh-pages Wdrażanie statycznych stron na GitHub Pages
JamesIves/github-pages-deploy-action Wdrażanie projektów na GitHub Pages
peter-evans/create-pull-request Automatyczne tworzenie żądań pull request
softprops/action-gh-release Tworzenie i wysyłanie wydań na GitHub
ad-m/github-push-action Wysyłanie zmian z powrotem do repozytorium
actions/setup-dotnet Konfiguruje SDK .NET
azure/login Autoryzacja w Azure
google-github-actions/auth Autoryzacja w Google Cloud

Akcje do testowania, QA i raportowania

Akcja Cel
actions/setup-ruby Konfiguruje środowisko Ruby
codecov/codecov-action Wysyłanie raportów o pokryciu kodu do Codecov
coverallsapp/github-action Wysyłanie wyników pokrycia do Coveralls
dorny/test-reporter Dołączanie wyników testów do GitHub Checks
stefanzweifel/git-auto-commit-action Automatyczne commitowanie i push zmian

Akcje do wdrażania i powiadomień

Akcja Cel
appleboy/scp-action Wysyłanie plików używając SCP
SamKirkland/FTP-Deploy-Action Wdrażanie plików przez FTP/FTPS
cypress-io/github-action Uruchamianie testów end-to-end Cypress
slackapi/slack-github-action Wysyłanie wiadomości do Slack
dawidd6/action-send-mail Wysyłanie e-maili podczas wykonania workflow

Narzędzia i zarządzanie przepływem pracy

Akcja Cel
peter-evans/repository-dispatch Wyzwalanie zewnętrznych przepływów
fregante/setup-git-user Ustawianie poświadczeń użytkownika Git
andymckay/labeler Etykietowanie issue i PR na podstawie ścieżek
actions/configure-pages Konfigurowanie publikacji na GitHub Pages
EndBug/add-and-commit Dodawanie i commitowanie plików w workflow
dangoslen/changelog-enforcer Sprawdzanie aktualizacji changelog dla PRów

Jak znaleźć więcej

Istnieje wiele akcji GitHub, które umożliwiają automatyzację przepływów pracy, takich jak automatyzacja testów, wdrożenia na produkcję, powiadomienia i integracje z innymi usługami. Rynek GitHub wymienia tysiące akcji w kategoriach takich jak testowanie, bezpieczeństwo, wdrażanie, powiadomienia, jakość kodu i integracje. Kuratorowane listy, takie jak “Awesome Actions”, są również świetne do inspiracji i odkrywania nowych rozwiązań.

Przydatne linki