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: ```

Page content

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.

github actions flow

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