Konfigurowanie przepływu pracy funkcji GitHub Actions
W tym miejscu poznasz niektóre typowe konfiguracje w pliku przepływu pracy. Zapoznasz się również z kategoriami typów zdarzeń, wyłączaniem i usuwaniem przepływów pracy oraz przy użyciu określonych wersji akcji w celu uzyskania najlepszych rozwiązań w zakresie zabezpieczeń.
Konfigurowanie przepływów pracy do uruchamiania dla zaplanowanych zdarzeń
Jak wspomniano wcześniej, możesz skonfigurować przepływy pracy tak, aby były uruchamiane po wystąpieniu określonego działania w usłudze GitHub, gdy wystąpi zdarzenie poza usługą GitHub lub w zaplanowanym czasie. Zdarzenie schedule
umożliwia wyzwolenie przepływu pracy w celu uruchomienia o określonych godzinach UTC przy użyciu składni cron POSIX. Ta składnia cron ma pięć *
pól, a każde pole reprezentuje jednostkę czasu.
Jeśli na przykład chcesz uruchomić przepływ pracy co 15 minut, schedule
zdarzenie będzie wyglądać następująco:
on:
schedule:
- cron: '*/15 * * * *'
A jeśli chcesz uruchomić przepływ pracy w każdą niedzielę o godzinie 3:00, schedule
wydarzenie będzie wyglądać następująco:
on:
schedule:
- cron: '0 3 * * SUN'
Możesz również użyć operatorów, aby określić zakres wartości lub wybrać numer w zaplanowanym przepływie pracy. Najkrótszy interwał, który można uruchamiać zaplanowane przepływy pracy, wynosi co pięć minut i jest uruchamiany w najnowszym zatwierdzeniu w gałęzi domyślnej lub podstawowej.
Konfigurowanie przepływów pracy do uruchamiania dla zdarzeń ręcznych
Oprócz zaplanowanych zdarzeń można ręcznie wyzwolić przepływ pracy przy użyciu workflow_dispatch
zdarzenia. To zdarzenie umożliwia uruchomienie przepływu pracy przy użyciu interfejsu API REST usługi GitHub lub wybranie przycisku Uruchom przepływ pracy na karcie Akcje w repozytorium w usłudze GitHub. Za pomocą programu workflow_dispatch
możesz wybrać gałąź, w której ma być uruchamiany przepływ pracy, a także ustawić opcjonalne inputs
, że usługa GitHub będzie prezentować jako elementy formularza w interfejsie użytkownika.
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
Oprócz workflow_dispatch
programu można użyć interfejsu API usługi GitHub do wyzwolenia zdarzenia elementu webhook o nazwie repository_dispatch
. To zdarzenie umożliwia wyzwolenie przepływu pracy dla działania, które występuje poza usługą GitHub, i zasadniczo służy jako żądanie HTTP do repozytorium z prośbą usługi GitHub o wyzwolenie przepływu pracy poza akcję lub element webhook. To zdarzenie ręczne wymaga wykonania dwóch czynności: wysłania POST
żądania do punktu końcowego /repos/{owner}/{repo}/dispatches
usługi GitHub z nazwami zdarzeń elementu webhook w treści żądania i skonfigurowania przepływu pracy do korzystania ze repository_dispatch
zdarzenia.
curl \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/dispatches \
-d '{"event_type":"event_type"}'
on:
repository_dispatch:
types: [opened, deleted]
Konfigurowanie przepływów pracy do uruchamiania dla zdarzeń elementu webhook
Na koniec można skonfigurować przepływ pracy do uruchamiania w przypadku wystąpienia określonych zdarzeń elementu webhook w usłudze GitHub. Większość zdarzeń elementu webhook można wyzwalać z więcej niż jednego działania dla elementu webhook, więc jeśli istnieje wiele działań dla elementu webhook, możesz określić typ działania, aby wyzwolić przepływ pracy. Na przykład można uruchomić przepływ pracy dla check_run
zdarzenia, ale tylko dla rerequested
typów działań lub requested_action
.
on:
check_run:
types: [rerequested, requested_action]
Używanie słów kluczowych warunkowych
W pliku przepływu pracy można uzyskiwać dostęp do informacji kontekstowych i oceniać wyrażenia. Mimo że wyrażenia są często używane ze słowem kluczowym warunkowym if
w pliku przepływu pracy w celu określenia, czy krok powinien zostać uruchomiony, czy nie, można użyć dowolnego obsługiwanego kontekstu i wyrażenia do utworzenia warunkowego. Ważne jest, aby wiedzieć, że w przypadku korzystania z warunkowych w przepływie pracy należy użyć określonej składni ${{ <expression> }}
, która nakazuje usłudze GitHub obliczenie wyrażenia, a nie traktowanie go jako ciągu.
Na przykład przepływ pracy, który używa warunkowego if
do sprawdzania, czy github.ref
element (gałąź lub tag ref, który wyzwolił przebieg przepływu pracy) jest zgodny refs/heads/main
z następującymi krokami w przepływie pracy, będzie wyglądać następująco:
name: CI
on: push
jobs:
prod-check:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
...
Zwróć uwagę, ${{ }}
że w tym przykładzie brakuje w składni . W przypadku niektórych wyrażeń, podobnie jak w przypadku warunkowego if
, można pominąć składnię wyrażenia. Usługa GitHub automatycznie ocenia niektóre z tych typowych wyrażeń, ale zawsze można je uwzględnić w przypadku zapomnienia, które wyrażenia są automatycznie obliczane przez usługę GitHub.
Aby uzyskać więcej informacji na temat składni i wyrażeń przepływu pracy, zapoznaj się ze składnią przepływu pracy dla funkcji GitHub Actions.
Wyłączanie i usuwanie przepływów pracy
Po dodaniu przepływu pracy do repozytorium może wystąpić sytuacja, w której chcesz tymczasowo wyłączyć przepływ pracy. Możesz zatrzymać wyzwalanie przepływu pracy bez konieczności usuwania pliku z repozytorium w usłudze GitHub lub za pośrednictwem interfejsu API REST usługi GitHub. Jeśli chcesz ponownie włączyć przepływ pracy, możesz to łatwo zrobić przy użyciu tych samych metod.
Wyłączenie przepływu pracy może być przydatne w niektórych sytuacjach, na przykład:
- Błąd w przepływie pracy powoduje generowanie zbyt wielu lub nieprawidłowych żądań wpływających negatywnie na usługi zewnętrzne.
- Chcesz tymczasowo wstrzymać przepływ pracy, który nie jest krytyczny i zużywa zbyt wiele minut na koncie.
- Chcesz wstrzymać przepływ pracy wysyłający żądania do usługi, która nie działa.
- Pracujesz nad rozwidleniem i nie potrzebujesz wszystkich funkcji niektórych przepływów pracy, które zawiera (na przykład zaplanowanych przepływów pracy).
Możesz również anulować przebieg przepływu pracy, który jest w toku w interfejsie użytkownika usługi GitHub, na karcie Akcje lub przy użyciu punktu końcowego interfejsu DELETE /repos/{owner}/{repo}/actions/runs/{run_id}
API usługi GitHub. Pamiętaj, że po anulowaniu przebiegu przepływu pracy usługa GitHub anuluje wszystkie jego zadania i kroki w ramach tego uruchomienia.
Korzystanie z szablonowego przepływu pracy organizacji
Jeśli masz przepływ pracy używany przez wiele zespołów w organizacji, zamiast ponownie tworzyć ten sam przepływ pracy dla każdego repozytorium, możesz podwyższyć spójność w całej organizacji przy użyciu szablonu przepływu pracy zdefiniowanego w repozytorium organizacji .github
. Każdy członek w organizacji może używać przepływu pracy szablonu organizacji, a dowolne repozytorium w tej organizacji ma dostęp do tych przepływów pracy szablonów.
Te przepływy pracy można znaleźć, przechodząc do karty Akcje repozytorium w organizacji, wybierając pozycję Nowy przepływ pracy, a następnie znajdując sekcję szablonu przepływu pracy organizacji zatytułowaną "Przepływy pracy utworzone według nazwy organizacji". Na przykład organizacja o nazwie Mona ma przepływ pracy szablonu, jak pokazano poniżej.
Używanie określonych wersji akcji
Podczas odwoływania się do akcji w przepływie pracy zalecamy odwoływanie się do określonej wersji tej akcji, a nie tylko samej akcji. Odwołując się do określonej wersji, umieszczasz zabezpieczenie przed nieoczekiwanymi zmianami wypchniętymi do akcji, która może potencjalnie przerwać przepływ pracy. Poniżej przedstawiono kilka sposobów odwołowania się do określonej wersji akcji:
steps:
# Reference a specific commit
- uses: actions/setup-node@c46424eee26de4078d34105d3de3cc4992202b1e
# Reference the major version of a release
- uses: actions/setup-node@v1
# Reference a minor version of a release
- uses: actions/setup-node@v1.2
# Reference a branch
- uses: actions/setup-node@main
Niektóre odwołania są bezpieczniejsze niż inne. Na przykład odwoływanie się do określonej gałęzi spowoduje uruchomienie tej akcji poza najnowszymi zmianami z tej gałęzi, które mogą być lub nie są potrzebne. Odwołując się do określonego numeru wersji lub zatwierdzenia skrótu SHA, bardziej szczegółowe informacje na temat wersji uruchomionej akcji. Aby uzyskać większą stabilność i bezpieczeństwo, zalecamy użycie zatwierdzenia sha akcji wydanej w przepływach pracy.