Web kancaları, gityar depolarınızdaki olaylara yanıt veren entegrasyonlar oluşturmanızı sağlar. Bir olay gerçekleştiğinde (push veya sorun oluşturma gibi), gityar yapılandırılmış URL'ye bir HTTP POST payload gönderir.
push - Depoya Git pushcreate - Branch veya tag oluşturuldudelete - Branch veya tag silindifork - Depo fork'landırelease - Sürüm yayınlandıissues - Sorun açıldı, kapandı, yeniden açıldıissue_comment - Sorun üzerinde yorumpull_request - PR açıldı, kapandı, birleştirildi, senkronize edildiwiki - Wiki sayfası oluşturuldu, düzenlendi, silindiURL: Web kanca payload'larını alacak endpoint
https://your-server.com/webhook
İçerik Türü: Payload formatı
application/json - JSON formatı (önerilir)application/x-www-form-urlencoded - Form encodedSecret: Payload doğrulaması için isteğe bağlı secret
Sunucunuz HMAC-SHA256 kullanarak X-Gitea-Signature başlığını doğrulamalıdır.
SSL Doğrulaması: SSL sertifikalarını doğrula
HTTP Temel Kimlik Doğrulaması: Kimlik doğrulaması ekleyin
username:password
Hangi etkinlikler?:
Aktif: Web kancasını etkinleştirin veya devre dışı bırakın
{
"secret": "your-secret",
"ref": "refs/heads/main",
"before": "6113c5d64f9c8b4e7f2e4a7b3d1c9e5f8a2b4c6d",
"after": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"commits": [
{
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"message": "Yeni özellik ekle",
"url": "http://localhost:3000/user/repo/commit/a1b2c3d4",
"author": {
"name": "John Doe",
"email": "john@example.com"
}
}
],
"repository": {
"id": 1,
"name": "my-repo",
"full_name": "user/my-repo",
"url": "http://localhost:3000/user/my-repo"
},
"pusher": {
"name": "user",
"email": "user@example.com"
}
}
Her zaman web kanca imzalarını doğrulayın:
import hmac
import hashlib
def verify_webhook(payload, signature, secret):
expected = hmac.new(
secret.encode('utf-8'),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
Push'larda build'leri tetikleyin:
from flask import Flask, request
import subprocess
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
# İmzayı doğrula
# Payload'u işle
# Build'i tetikle
subprocess.run(['./build.sh'])
return 'OK', 200
if __name__ == '__main__':
app.run(port=5000)
Slack kanalına mesaj gönderin:
import requests
def notify_slack(message):
url = "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
payload = {
"text": f"Depoya yeni push: {message}"
}
requests.post(url, json=payload)
Harici sistemlerde bilet oluşturun:
def create_jira_issue(payload):
# Sorun bilgilerini çıkar
# Jira'da bilet oluştur
# gityar'a geri bağla
pass
Web kanca tetiklenmiyor:
404 Hatası:
401/403 Hatası:
500 Hatası: