← Blog

SMS z GitHub Actions: powiadomienie o błędzie wdrożenia

Zespół Przypominamy.com · · 3 min czytania

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.