SMS z GitHub Actions: powiadomienie o błędzie wdrożenia
Nie każdy nieudany test zasługuje na SMS. Ten kanał przydaje się przy błędzie wdrożenia produkcyjnego, kiedy dyżurująca osoba powinna szybko sprawdzić logi. Lokalna akcja Przypominamy.com pozwala dodać taki krok do istniejącego workflow, bez instalowania aplikacji z Marketplace.
1. Dodaj akcję do repozytorium
Skopiuj action.yml i send.mjs do .github/actions/przypominamy-sms/. Runner musi mieć Bash oraz Node.js 18 lub nowszy. Przed użyciem lokalnej akcji wykonaj checkout repozytorium. Instrukcję przechowuj razem z README integracji.
W sekretach repozytorium zapisz PRZYP_API_KEY z zakresem send oraz PRZYP_SMS_TO z numerem odbiorcy. Dla pierwszej próby użyj konta testowego i numeru zweryfikowanego w panelu.
2. Dodaj krok po wdrożeniu
Poniższy fragment należy do listy steps, po checkout i kroku wdrożenia. Warunek reaguje na wcześniejszy błąd w jobie; jeśli ma dotyczyć tylko konkretnego wdrożenia, doprecyzuj go na podstawie wyniku tego kroku.
- name: SMS o błędzie wdrożenia
if: failure()
uses: ./.github/actions/przypominamy-sms
with:
api-key: ${{ secrets.PRZYP_API_KEY }}
to: ${{ secrets.PRZYP_SMS_TO }}
text: 'Wdrozenie nie powiodlo sie. Sprawdz GitHub Actions.'
idempotency-key: 'deploy-failed-${{ github.repository_id }}-${{ github.run_id }}'
dry-run: 'true'3. Oddziel próbę konfiguracji od prawdziwego SMS
Przy dry-run: true akcja sprawdza parametry, ale nie wywołuje API. Po sprawdzeniu workflow ustaw false i wywołaj kontrolowany błąd w środowisku testowym. Klucz testowy nie oznacza symulacji: wysyła prawdziwy SMS na dozwolony numer. Dopiero po udanej próbie podłącz klucz produkcyjny.
Treść jest przekazywana przez zmienne środowiskowe i kodowana jako JSON. Nie wklejaj sekretu w YAML ani w polecenie powłoki. Nie udostępniaj sekretów workflow wykonującemu niezaufany kod pull requestu. W SMS podaj krótki komunikat operacyjny, bez fragmentów logów, danych klientów i tokenów.
Ponowienie workflow i koszt powiadomień
Identyfikator używa run_id, a nie run_attempt, więc ponowienie tego samego uruchomienia zachowuje klucz. Dla osobnych powiadomień dodaj różne prefiksy. Zachowaj również tę samą treść: nie dodawaj bieżącego czasu do każdego retry. Po timeoutcie sprawdź historię przed utworzeniem nowej operacji, a po upływie 24 godzin nie zakładaj, że odpowiedź nadal będzie odtworzona.
Koszt zależy od stawki konta i liczby części SMS. Długi stack trace szybko podniesie koszt i utrudni czytanie. Ustal jednego odbiorcę dyżurnego oraz zdarzenia wymagające telefonu. Ograniczenie alertów w workflow jest równie ważne jak techniczna konfiguracja wysyłki.
Jak ocenić wynik akcji
Akcja udostępnia wyjście message-id dla przyjętej wiadomości. Odrzucenie przez API lub błąd żądania kończą krok błędem. Status przyjęcia nie jest dowodem doręczenia — sprawdź wiadomość w panelu lub przez GET /v1/messages/{id}. Przed produkcją wykonaj próbę poprawnego SMS, błędnego numeru i ponowienia tego samego runa.
Najczęstsze pytania
Czy dry-run zużywa saldo SMS?
Nie. W tej akcji dry-run nie wysyła żądania do API.
Czy akcja zastępuje monitoring?
Nie. Wysyła powiadomienie ze wskazanego kroku workflow. Reguły alarmowania i dyżury pozostają po stronie zespołu.
Dokumentacja narzędzia
Interfejs i dostępność funkcji sprawdzaj na swoim koncie narzędzia.