Jak połączyć serwis GitHub z platformą Shopify Flow
Połącz GitHub z Shopify Flow przez Workflow Webhooks, weryfikuj podpisy HMAC i uruchamiaj przepływy po zdarzeniach push, release, issues lub workflow_run.
GitHub wysyła webhook za każdym razem, gdy w repozytorium lub organizacji ma miejsce jakieś zdarzenie - operacja „push”, wydanie, zgłoszenie, prośba o wciągnięcie kodu (pull request) czy uruchomienie przepływu pracy. Workflow Webhooks przekształca to wywołanie w wyzwalacz Shopify Flow, dzięki czemu Państwa sklep może na nie zareagować: oznaczyć klienta, dodać notatkę do zamówienia, wysłać wewnętrzną wiadomość e-mail, zaktualizować metapole - czyli wykonać dowolną czynność, do której umożliwia Shopify Flow.
W niniejszym przewodniku opisano cały proces - GitHub wysyła dane, usługa Workflow Webhooks je odbiera i weryfikuje, a Shopify Flow podejmuje odpowiednie działania - przy czym w każdym żądaniu sprawdzany jest podpis HMAC serwisu GitHub, dzięki czemu wyłącznie GitHub może uruchomić Państwa przepływ pracy.
Co można zbudować
- Prosimy o wysłanie wiadomości e-mail do zespołu ds. merchandisingu w momencie opublikowania aktualizacji zmieniającej dane produktu.
- Przy każdej aktualizacji proszę zapisać aktualną wersję kompilacji lub motywu w polu meta sklepu.
- Powiadamiaj pracowników w przypadku niepowodzenia zaplanowanego uruchomienia przepływu pracy, korzystając z tego samego Shopify Flow, z którego korzystają Państwo już w przypadku innych zdarzeń.
Typowe zdarzenia, które należy wysyłać: push, release (opublikowane), issues (otwarte, zamknięte), workflow_run (zakończone).
Zanim zaczną Państwo
- Webhooki Workflow Webhooks zainstalowane w Państwa sklepie Shopify.
- Zainstalowano aplikację Shopify Flow, którą można pobrać bezpłatnie ze sklepu Shopify App Store.
- Konto na GitHubie z uprawnieniami do tworzenia webhooków.
Krok 1 - Utwórz webhook w sekcji Workflow Webhooks
- Otwórz sekcję Workflow Webhooks → Webhooks → Utwórz webhook i nadaj mu nazwę, którą rozpoznasz w Shopify Flow, na przykład
GitHub events. - W sekcji Uwierzytelnianie proszę wybrać opcję HMAC.
- W sekcji Dostawca podpisu proszę wybrać GitHub. Aplikacja automatycznie wypełni pola dotyczące nagłówka, algorytmu, podpisanej treści oraz okna powtórki - nie ma potrzeby konfigurowania niczego więcej.
- Na razie proszę pozostawić pole „secret” puste i kliknąć Zapisz. Proszę skopiować adres URL webhooka wyświetlony na stronie.
Informacje na temat pozostałych trybów uwierzytelniania można znaleźć w sekcji Uwierzytelnianie, a informacje dotyczące wyboru pól, które mają zostać przesłane do Shopify Flow - w sekcji Mapowanie danych użytkowych i zmienne w Shopify Flow.
Krok 2 - Dodaj punkt końcowy w serwisie GitHub
W repozytorium (lub organizacji) proszę otworzyć opcję Ustawienia → Webhooki → Dodaj webhook, wkleić adres URL w polu „Adres URL ładunku”, ustawić typ zawartości na application/json oraz wpisać klucz tajny.
Jak znaleźć swój sekret podpisowy w serwisie GitHub
Klucz tajny, który ustalili Państwo w ustawieniach webhooków serwisu GitHub (Ustawienia → Webhooki → Klucz tajny).
W dokumentacji serwisu GitHub dotyczącej podpisów webhooków znajdą Państwo dokładne sformułowania oraz zrzuty ekranu dotyczące Państwa konta.
Wklej ten klucz tajny w polu Secret webhooka w sekcji Workflow Webhooks i zapisz zmiany. Od tego momentu każda dostawa z serwisu GitHub będzie weryfikowana, zanim dotrze do Shopify Flow.
Co to sprawdza
| Co | Wartość |
|---|---|
| Nagłówek podpisu | X-Hub-Signature-256 |
| Miejsce umieszczenia podpisu | Wartość nagłówka, po przedrostku sha256= |
| Co zostało podpisane | {body} |
| Podpis | HMAC-SHA256, zakodowany w systemie szesnastkowym |
| Sygnatura czasowa | Nie jest używane przez tego nadawcę |
| Ochrona przed ponownym odtworzeniem | Brak - ten nadawca nie podpisuje znacznika czasu, więc każdy ważny podpis zachowuje swoją ważność |
| Sekret | Należy użyć jako zwykły tekst. Proszę wkleić go dokładnie tak, jak przedstawił go nadawca |
W podpisanej treści żądania {body} stanowi surową treść żądania, bajt po bajcie.
Żądanie, które nie spełnia któregokolwiek z tych warunków, jest odrzucane z kodem błędu 401, rejestrowane w sekcji Historia i rozwiązywanie problemów i nigdy nie uruchamia przepływu pracy.
Krok 3 - Utwórz proces w Shopify Flow
- W Shopify Flow proszę utworzyć przepływ pracy i wybrać wyzwalacz Workflow Webhooks.
- Proszę kliknąć opcję Rejestruj zdarzenia, a następnie wysłać zdarzenie testowe z serwisu GitHub (lub skorzystać z opcji Wyślij test w sekcji Workflow Webhooks), aby usługa Shopify Flow mogła rozpoznać strukturę Państwa danych.
- Każdy posiadany przez Państwa webhook uruchamia ten sam wyzwalacz w Shopify Flow, dlatego prosimy o dodanie pierwszego warunku opartego na identyfikatorze webhooka, aby ten przepływ pracy dotyczył wyłącznie serwisu GitHub. Identyfikator ten jest widoczny na stronie webhooka.
- Proszę dodać swoje działania - oznaczyć klienta, dodać notatkę, wysłać wewnętrzną wiadomość e-mail, zaktualizować metapole.



Krok 4 - Przeprowadź test od początku do końca
Wywołaj rzeczywiste zdarzenie w serwisie GitHub. W sekcji Workflow Webhooks → History powinno być widoczne wywołanie o statusie Success. Jeśli podpis był nieprawidłowy, pojawi się zamiast tego wpis o niepowodzeniu wraz z podaną przyczyną, a Weryfikacja podpisanych webhooków zawiera wyjaśnienie dotyczące narzędzia do weryfikacji podpisu, które wskazuje dokładnie, który etap zakończył się niepowodzeniem.

Podpis nie jest zgodny
W następującej kolejności: klucz tajny (najczęstsza przyczyna - dodatkowa spacja lub klucz z niewłaściwego środowiska), czy nadawca korzysta z klucza tajnego innego punktu końcowego oraz czy coś pomiędzy serwisem GitHub a aplikacją zmienia treść wiadomości. Podpisy obejmują surowe bajty, więc serwer proxy, który zmienia formatowanie JSON, powoduje ich uszkodzenie. Narzędzie do sprawdzania podpisów na stronie webhooka wyświetla dokładny tekst, który został podpisany.
Przy każdym żądaniu otrzymuję kod błędu 401
Proszę sprawdzić, czy w ustawieniach uwierzytelniania webhooka wybrano opcję HMAC oraz dostawcę GitHub, czy wpisano klucz tajny, a także czy GitHub wysyła dane na adres URL dokładnie taki, jak wyświetla go aplikacja, łącznie z kodem na końcu.
W historii nie ma żadnych wpisów
Żądanie nigdy nie dotarło. Proszę ponownie sprawdzić adres URL w serwisie GitHub oraz zapoznać się z dziennikiem dostarczania serwisu GitHub, aby sprawdzić, jaką odpowiedź otrzymał. Kod 404 oznacza nieprawidłowy lub usunięty webhook, a kod 429 oznacza przekroczenie limitu wywołań przewidzianego w Państwa planie - zobacz Plany i sposób użytkowania.
Proces jest uruchamiany dla niewłaściwych zdarzeń
Każdy webhook w Państwa sklepie uruchamia ten sam wyzwalacz w Shopify Flow. Proszę dodać warunek oparty na identyfikatorze webhooka jako pierwszy krok przepływu pracy lub zawęzić zakres zdarzeń wysyłanych z serwisu GitHub.
Powiązane
- Weryfikacja podpisanych webhooków - każdy dostawca, którego weryfikujemy, oraz sposób opisania dostawcy, którego nie weryfikujemy.
- Mapowanie danych użytkowych i zmienne w Shopify Flow - pobieranie odpowiednich pól z danych przesyłanych i wprowadzanie ich do Shopify Flow.
- Ochrona przed podwójną dostawą - co się dzieje, gdy serwis GitHub ponawia próbę dostarczenia.
- Historia i rozwiązywanie problemów - dziennik wszystkich żądań wraz z możliwością odtworzenia.
