Webhook Events
GitHub Actions’ı “dış dünyadan” bir HTTP isteği ile tetiklemek istiyorsan, repository_dispatch
event’ini kullanırsın. Yani GitHub harici bir sistemden, senin GitHub repo’na özel bir endpoint’e istek atarak, bir iş akışını başlatabilir.
Örnek Workflow:
on.repository_dispatch.types: [webhook]
diyerek,event_type
değeriwebhook
olan dış istekleri yakalıyoruz.GITHUB_EVENT_NAME
gibi değişkenlerle, gelen isteğin türünü veya payload verisini Workflow içinde kullanabiliriz.
HTTP isteği (curl) örneği:
https://api.github.com/repos/{owner}/{repo}/dispatches
GitHub’ın “repository dispatch” endpoint’i.-H "Authorization: token ..."
kısmına, repo’ya yazma izni olan bir Personal Access Token eklememiz gerekiyor.-d '{"event_type": "webhook", ...}'
ile,event_type
değeriniwebhook
(veya istediğin başka bir isim) verip, ek payload gönderebiliyoruz.Bu istek başarıyla yapılırsa, GitHub Actions senin tanımladığın
repository_dispatch
Workflow’unu tetikler.
-d
parametresinde yer alan "client_payload": {"key": "value"}
kısmı, GitHub Actions’a dış dünyadan ek veri (parametre) yollamak içindir. Yani bu sayede repository_dispatch
event’ine istediğin kadar “anahtar-değer” çifti ekleyebilirsin ve GitHub Actions içinde bu verilere ulaşabilirsin.
Workflow Dosyası Örneği,
on.repository_dispatch.types: [webhook]
:event_type
değeri “webhook” olan bir dış çağrı geldiğinde bu Workflow tetiklenecek.github.event.client_payload.*
:repository_dispatch
ile gelen ek parametreleri okuyabileceğimiz yerdir. Örneğin yukarıdaversion
,environment
,anyOtherKey
gibi alanlara değer girersek, Workflow bunları terminale yazacak.
Aşağıdaki komutu kendi terminalinde çalıştırarak (öncesinde PERSONAL_ACCESS_TOKEN
, OWNER
, REPO
değerlerini kendine göre düzenleyerek) bu Workflow’u tetikleyebiliriz:
"event_type": "webhook"
: Buradaki değer, Workflow’datypes: [webhook]
satırıyla eşleştiği için tetikleme gerçekleşir."client_payload": {...}
: Bu alana eklediğin anahtar-değer çiftleri, GitHub Actions içindegithub.event.client_payload
üzerinden okunabilir. Örnekte"version": "1.2.3"
,"environment": "staging"
,"anyOtherKey": "örnek bir değer"
gönderiyoruz.Token Gereksinimi:
PERSONAL_ACCESS_TOKEN
’ın repo’ya yazma (write) erişimi olması gerekir. Aksi takdirderepository_dispatch
event’ini tetikleyemeyiz.
Özetle, "client_payload"
altındaki {"key": "value"}
kısımları tamamen workflow’muza göndermek istediğimiz ek veriyi temsil eder. Bu verileri Actions içinde okuyup istediğin gibi kullanabiliriz.
Last updated
Was this helpful?