Cheat Sheet GitHub Actions – standardowa struktura i lista najbardziej przydatnych akcji
Kilka słów o typowych działaniach GitHub Actions i ich strukturze.
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.

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
- 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
- Skróty Git
- Gitea - instalacja i testowanie
- Kopia zapasowa i przywracanie serwera Gitea
- Używanie Gitea Actions do wdrażania strony Hugo na AWS S3
- Gitflow: Kroki, alternatywy, zalety i wady
- DevOps z GitOps - Argo CD, Flux, Jenkins X, Weave GitOps i inne