Sådan forbinder du GitHub med Shopify Flow
GitHub sender en Webhook, hver gang der sker noget i et repository eller en organisation - et push, en udgivelse, en issue, en pull request eller en arbejdsgang. Workflow Webhooks omdanner dette kald til en Shopify Flow-udløser, så din butik kan reagere på det: mærke en kunde, tilføje en ordrebemærkning, sende en intern e-mail, opdatere et metafelt - alt, hvad Shopify Flow kan gøre.
Denne vejledning beskriver hele forløbet - GitHub sender, Workflow Webhooks modtager og verificerer, Shopify Flow udfører handlingen - hvor GitHubs HMAC-signatur kontrolleres ved hver eneste anmodning, så kun GitHub kan igangsætte din arbejdsgang.
Hvad du kan bygge
- Send en e-mail til dit merchandising-team, når der udsendes en opdatering, der ændrer produktdataene.
- Skriv den aktuelle build- eller temaversion ind i et metafelt i webshoppen ved hver udgivelse.
- Giv personalet besked, når en planlagt arbejdsgang mislykkes, ved hjælp af den samme Shopify Flow, som du allerede bruger til andre hændelser.
Typiske hændelser, der skal sendes: push, release (offentliggjort), issues (åbnet, lukket), workflow_run (afsluttet).
Før du går i gang
- Workflow Webhooks installeret på din Shopify-butik.
- Shopify Flow installeret, som kan hentes gratis fra App Store på Shopify.
- En konto på GitHub med tilladelse til at oprette webhooks.
Trin 1 - Opret webhook på Workflow Webhooks
- Åbn Workflow Webhooks -> Webhooks -> Opret en webhook, og giv den et navn, du kan genkende i Shopify Flow, f.eks.
GitHub events. - Vælg HMAC under »Godkendelse«.
- Vælg GitHub under »Signaturudbyder«. Appen udfylder automatisk overskriften, algoritmen, den signerede payload og replay-vinduet for dig - der er ikke andet, du skal konfigurere.
- Lad feltet »Secret« være tomt foreløbig, og klik på »Gem«. Kopier den webhook-URL, der vises på siden.
Se Godkendelse for de øvrige godkendelsesmetoder og Kortlægning af payload og strømningsvariabler for at vælge, hvilke felter der skal sendes til Shopify Flow.
Trin 2 - Tilføj endpointet i GitHub
I repositoriet (eller organisationen) skal du åbne Indstillinger -> Webhooks -> Tilføj webhook, indsætte URL’en som Payload-URL, indstille indholdstypen til »application/json« og udfylde feltet »Secret«.
Sådan finder du din GitHub-signeringsnøgle
Den hemmelige nøgle, du har angivet i GitHub-webhooken (Indstillinger → Webhooks → Hemmelig nøgle).
GitHubs egen dokumentation om webhook-signaturer indeholder den nøjagtige ordlyd og skærmbilleder, der gælder for din konto.
Indsæt den hemmelighed i feltet »Secret« for webhooken på Workflow Webhooks og gem. Fra det øjeblik bliver hver eneste GitHub-levering verificeret, før den når frem til Shopify Flow.
Hvad dette kontrollerer
| Hvad | Værdi |
|---|---|
| Signaturhoved | X-Hub-Signature-256 |
| Hvor underskriften er placeret | Værdien i overskriften, efter præfikset sha256= |
| Hvad der er underskrevet | {body} |
| Underskrift | HMAC-SHA256, hex-kodet |
| Tidspunkt | Bruges ikke af denne afsender |
| Beskyttelse mod gentagelse | Ingen - denne afsender underskriver ikke et tidsstempel, så alle gyldige underskrifter forbliver gyldige |
| Hemmeligheden | Bruges som almindelig tekst. Indsæt den nøjagtigt, som afsenderen har angivet den |
I den signerede payload er {body} den rå anmodningstekst, byte for byte.
En anmodning, der ikke opfylder et af disse kriterier, afvises med fejlmeddelelsen »401«, registreres i »Historik og fejlfinding« og udløser aldrig en arbejdsgang.
Trin 3 - Opret arbejdsgangen »Shopify Flow«
- I »Shopify Flow« skal du oprette en arbejdsgang og vælge udløseren »Workflow Webhooks«.
- Tryk på »Optag begivenheder«, og send derefter en testbegivenhed fra GitHub (eller brug funktionen »Send test« i Workflow Webhooks), så Shopify Flow kan lære dine datas struktur at kende.
- Hver eneste webhook, du ejer, udløser den samme Shopify Flow-trigger, så tilføj en første betingelse baseret på webhook-id’et for at sikre, at denne arbejdsgang kun omfatter GitHub. Id’et vises på webhook-siden.
- Tilføj dine handlinger - tag en kunde, tilføj en note, send en intern e-mail, opdater et metafelt.



Trin 4 - Test det fra start til slut
Udløs en reel begivenhed i GitHub. Under »Workflow Webhooks« → »History« bør du kunne se opkaldet med status »Success«. Hvis signaturen var forkert, får du i stedet en fejlmeddelelse med årsagen, og på Bekræftelse af signerede webhooks finder du en forklaring på signaturtestværktøjet, der viser dig præcis, hvilket trin der mislykkedes.

Underskriften stemmer ikke overens▾
I denne ordre: hemmeligheden (den mest almindelige årsag - et ekstra mellemrum eller en nøgle fra det forkerte miljø), om afsenderen bruger en anden endpoints hemmelighed, og om noget mellem GitHub og appen omskriver brødteksten. Signaturerne dækker de rå bytes, så en proxy, der omformaterer JSON, ødelægger dem. Signaturtesteren på webhook-siden viser den nøjagtige tekst, der blev signeret.
Jeg får en 401-fejl ved hver eneste forespørgsel▾
Kontroller, at webhookens godkendelse er indstillet til HMAC med GitHub valgt som udbyder, at den hemmelige nøgle er udfyldt, og at GitHub sender til URL’en nøjagtigt som angivet i appen, inklusive koden i slutningen.
Der vises intet under »Historik«▾
Anmodningen blev aldrig modtaget. Tjek URL’en på GitHub igen, og se i GitHubs egen leveringslog, hvilket svar der blev modtaget. En fejlmeddelelse som »404« betyder, at webhooken er forkert eller er blevet slettet, mens en fejlmeddelelse som »429« betyder, at du har overskredet dit abonnements grænse for antallet af kald - se Planer og anvendelse.
Arbejdsgangen kører for de forkerte begivenheder▾
Hver eneste webhook i din butik udløser den samme Shopify Flow-trigger. Tilføj en betingelse baseret på webhook-id’et som det første trin i arbejdsgangen, eller indsnæv de begivenheder, du sender fra GitHub.
Relateret
- Bekræftelse af signerede webhooks - alle udbydere, vi verificerer, og hvordan man beskriver en, vi ikke verificerer.
- Kortlægning af payload og strømningsvariabler - at udtrække de rigtige felter fra payloadet og overføre dem til Shopify Flow.
- Beskyttelse mod dobbeltlevering - hvad der sker, når GitHub forsøger at sende en levering igen.
- Historik og fejlfinding - loggen over alle anmodninger, med mulighed for afspilning.

