Cheat sheet do GitHub Actions – standardowa struktura i lista najbardziej przydatnych akcji
Skrócona wersja tekstu: ``` Skrócona wersja tekstu: ``` Pełna wersja tekstu: ``` Skrócona wersja tekstu: ```
GitHub Actions to platform automatyzacji i CI/CD w GitHub, który służy do budowania, testowania i wdrażania kodu na podstawie zdarzeń takich jak pushy, żądania pull, czy harmonogramy.
Oprócz standardowego GitHuba można używać GitHub Actions w samodzielnie hostowanym serwerze Gitea.
Ten przegląd obejmuje strukturę GitHub Actions, krótki opis oraz najczęściej używane działania w przepływach pracy open source i komercyjnych. Dziaania obejmują oficjalne, społecznościowe i narzędzia trzecich stron, wspierające automatyzację od budowania i testowania po wdrażanie, zarządzanie wersjami, QA i powiadomienia.
Podstawowa Struktura Konfiguracji
Przepływy pracy GitHub Actions są zdefiniowane w plikach YAML znajdujących się w katalogu .github/workflows
w repozytorium.
name: Nazwa Przepływu Pracy
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Konfiguracja Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Uruchom testy
run: npm test
- on określa wyzwalacze zdarzeń.
- Każdy job uruchamia się na własnym runnerze.
- steps mogą uruchamiać polecenia shell lub wywoływać ponownie używane działania.
Główne Komponenty Przepływu Pracy
Komponent | Opis |
---|---|
Przepływ pracy | Automatyczny proces (YAML) wyzwalany przez zdarzenie |
Zdarzenie | Aktywność wyzwalająca przepływ pracy (push, pull_request, itp.) |
Praca | Seria kroków wykonywanych na runnerze, mogą być wykonywane sekwencyjnie lub równolegle |
Krok | Każde polecenie lub działanie w pracy |
Runner | Wirtualna maszyna lub kontener, w którym są wykonywane prace |
Działanie | Odtwarzalna rozszerzenie/add-on opakowujące zadanie |
Zdarzenia Wyzwalające
- push
- pull_request
- schedule (używając składni cron)
- workflow_dispatch (ręczne wyzwalanie, umożliwia parametry wejściowe)
- release, issue, itp.
Przykład:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Środowisko wdrażania'
required: true
default: 'production'
type: string
Przydatne Wbudowane Dziaania
Działanie | Cel | Typowe Parametry |
---|---|---|
actions/checkout | Sprawdzenie kodu repozytorium | ref, token, submodules, persist-credentials |
actions/setup-node | Konfiguracja środowiska Node.js | node-version, cache, architecture, check-latest |
actions/setup-python | Konfiguracja Pythona | python-version, architecture |
actions/cache | Caching zależności | path, key, restore-keys |
docker/build-push-action | Budowanie i przesyłanie obrazów Docker | context, file, platforms, tags, push, build-args |
actions/upload-artifact | Przesył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 przez przepływ pracy | branch, title, body, labels, base |
actions/github-script | Uruchamianie dowolnego JavaScript w przepływie pracy | script, github-token |
Parametry Dziaania
Ogólne Parametry Dla Każdego Wywołania Dziaania:
- name: Niektóre Dziaanie lub Krok
uses: owner/repo@ref
with:
param1: wartość
param2: wartość
env:
ENV_VAR: wartość
if: ${{ warunek }}
run: polecenie_do_wykonania
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: argumenty przekazywane do działania (patrz dokumentacja działania dla wszystkich opcji)
- env: zmienne środowiskowe dla kroku
- if: wykonywanie warunkowe
- run: polecenia shell (jeśli nie używane działanie)
- shell: shell używany do wykonania kroku
- continue-on-error: kontynuuj nawet jeśli krok się nie powiedzie
Definiowanie Niestandardowych Wejść Dziaania
W metadanych działania (action.yml):
inputs:
example-input:
description: 'Przykładowy wejście'
required: false
default: 'wartość_domyślna'
Kiedy używane w przepływie pracy:
- uses: my/action@v1
with:
example-input: 'wartość_własna'
Dostępne jako zmienna środowiskowa INPUT_EXAMPLE_INPUT
podczas działania.
Przykład: Przepływ Pracy z Parametrami Ręcznymi
name: Wdrażanie
on:
workflow_dispatch:
inputs:
environment:
description: 'Środowisko wdrażania'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Sprawdzenie kodu
uses: actions/checkout@v4
- name: Wdrażanie do środowiska
run: echo "Wdrażanie do ${{ github.event.inputs.environment }}"
Rynku Dziań
- Tysiące ponownie używanych działań dostępnych w GitHub Marketplace.
- Kategorie obejmują: wdrażanie w chmurze, narzędzia powiadomień, frameworki testowe, analizę kodu i wiele więcej.
- Eksploruj: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, i wiele innych.
Szybkie Wskazówki
- Umieszczaj pliki przepływu pracy w
.github/workflows
. - Używaj workflow_dispatch z inputs do ręcznych i parametryzowanych uruchomień.
- Używaj działania cache do przyspieszenia instalacji zależności.
- Używaj macierzy job do testowania wielu wersji systemu operacyjnego / środowiska uruchomieniowego.
- Używaj sekretów do danych wrażliwych, odnosząc się do nich jako
${{ sekrety.NAZWA_SEKRETA }}
.
Ten arkusz pomaga obejmuje podstawy korzystania, konfigurowania i rozszerzania GitHub Actions do automatyzacji, CI/CD i wiele więcej. Dla szczegółów i aktualizacji zawsze sprawdzaj oficjalną dokumentację GitHub i repozytoria działań.
Powszechne GitHub Actions
Oto praktyczna lista często używanych GitHub Actions, które pomagają automatyzować CI/CD, testowanie, budowanie, wdrażanie i zadania przepływu pracy:
Oficjalne Podstawowe Dziaania
Działanie | Cel | Kluczowe Przykładowe Parametry |
---|---|---|
actions/checkout | Sprawdza kod repozytorium | ref, submodules |
actions/setup-node | Konfiguruje środowisko Node.js | node-version, cache |
actions/setup-python | Konfiguruje środowisko Pythona | python-version |
actions/setup-java | Konfiguruje JDK Java | distribution, java-version |
actions/cache | Cachuje zależności i wyniki budowania | path, key, restore-keys |
actions/upload-artifact | Przesyła artefakty budowania | name, path |
actions/download-artifact | Pobiera artefakty z przepływu pracy | name, path |
actions/github-script | Uruchamia JavaScript za pomocą kontekstu GitHub i API | script |
actions/create-release | Tworzy wersję GitHub | tag_name, release_name |
actions/upload-release-asset | Przesyła pliki do wersji | upload_url, asset_path |
actions/labeler | Automatycznie dodaje etykiety do problemów/PR | repo-token, configuration-path |
Popularne Dziaania Społecznościowe i Trzecich Stron
Działanie | Cel |
---|---|
docker/build-push-action | Budowanie i przesyłanie obrazów Docker |
actions/setup-go | Konfiguruje środowisko Go |
super-linter/super-linter | Uniwersalna automatyczna analiza kodu |
trufflesecurity/trufflehog | Skanowanie sekretów i poświadczeń |
peaceiris/actions-gh-pages | Wdrażanie stron statycznych na GitHub Pages |
JamesIves/github-pages-deploy-action | Wdrażanie projektów na GitHub Pages |
peter-evans/create-pull-request | Tworzenie żądań pull automatycznie |
softprops/action-gh-release | Tworzenie i przesyłanie wersji GitHub |
ad-m/github-push-action | Przesyłanie zmian z powrotem do repozytorium GitHub |
actions/setup-dotnet | Konfiguruje .NET SDK |
azure/login | Autoryzacja w Azure |
google-github-actions/auth | Autoryzacja w Google Cloud |
Testowanie, QA i Raportowanie Dziań
Działanie | Cel |
---|---|
actions/setup-ruby | Konfiguruje środowisko Ruby |
codecov/codecov-action | Przesyła raporty pokrycia kodu do Codecov |
coverallsapp/github-action | Przesyła wyniki pokrycia do Coveralls |
dorny/test-reporter | Dołącza wyniki testów do GitHub Checks |
stefanzweifel/git-auto-commit-action | Automatyczne dodawanie i przesyłanie zmian plików |
Wdrażanie i Powiadomienia Dziań
Działanie | Cel |
---|---|
appleboy/scp-action | Przesyła pliki za pomocą SCP |
SamKirkland/FTP-Deploy-Action | Wdraża pliki przez FTP/FTPS |
cypress-io/github-action | Uruchamia testy end-to-end z Cypress |
slackapi/slack-github-action | Wysyła wiadomości do Slack |
dawidd6/action-send-mail | Wysyła e-mail podczas uruchamiania przepływu pracy |
Użyteczność i Zarządzanie Przepływem Pracy
Działanie | Cel |
---|---|
peter-evans/repository-dispatch | Wyzwalanie przepływów pracy w zewnętrznych repozytoriach |
fregante/setup-git-user | Ustawienie poświadczeń użytkownika Git dla commitów |
andymckay/labeler | Etykietowanie problemów i PR na podstawie ścieżek |
actions/configure-pages | Konfiguracja publikowania na GitHub Pages |
EndBug/add-and-commit | Dodawanie i commitowanie plików w przepływie pracy |
dangoslen/changelog-enforcer | Sprawdza, czy changelog został zaktualizowany dla PR |
Jak Znaleźć Więcej
Istnieje wiele GurHub Actions, które umożliwiają automatyzację przepływów pracy takich jak automatyczne testowanie, wdrażanie do produkcji, powiadomienia i integracje z innymi usługami. Rynku GitHub lista tysięcy działań w kategoriach takich jak testowanie, bezpieczeństwo, wdrażanie, powiadomienia, jakość kodu i integracje. Zakurowane listy takie jak “Awesome Actions” są również świetne do inspirowania się i odkrywania.
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
- GIT Cheatsheet
- Gitea - instalacja i testowanie
- Backup i odzyskiwanie Gitea serwera
- Użycie Gitea Actions do wdrażania strony Hugo na AWS S3
- Gitflow: Krok po kroku, Alternatywy, Zalety i Wady
- DevOps z GitOps - Argo CD, Flux, Jenkins X, Weave GitOps i inne