Ketika menggunakan adnanh/webhook untuk mengatur auto-deploy aplikasi melalui GitLab, Anda mungkin menemui error:"Error occurred while evaluating hook rules".Error ini menunjukkan adanya masalah dalam konfigurasi hooks.json atau aturan trigger. Artikel ini akan membahas penyebab umum dan cara memperbaiki error tersebut.
Penyebab dan Solusi Umum
1. Periksa Sintaks JSON
Kesalahan umum terjadi karena sintaks JSON yang tidak valid. Pastikan file hooks.json memiliki format yang benar. Cara Memeriksa:Gunakan JSONLint atau tool sejenis untuk memvalidasi sintaks JSON.
Contoh hooks.json yang Benar:
[
{
"id": "deploy-webhook",
"execute-command": "/etc/webhook/deploy.sh",
"command-working-directory": "/var/www/your-app",
"response-message": "Deploy in progress...",
"trigger-rule": {
"match": {
"type": "payload-hmac-sha256",
"secret": "your-secret-token",
"parameter": {
"source": "header",
"name": "X-Gitlab-Token"
}
}
}
}
]
2. Cek Format Trigger Rule
Aturan trigger (trigger-rule) yang salah juga bisa menyebabkan error. Pastikan parameter yang digunakan sesuai dengan yang dikirim oleh GitLab.
GitLab mengirim token melalui header X-Gitlab-Token.
Jika tidak menggunakan HMAC, aturan trigger bisa disederhanakan.
Contoh Tanpa HMAC (Token Sederhana):
"trigger-rule": {
"match": {
"type": "value",
"value": "your-secret-token",
"parameter": {
"source": "header",
"name": "X-Gitlab-Token"
}
}
}
3. Logging Error untuk Debugging
Agar error lebih mudah dilacak, tambahkan logging pada service webhook.
Edit Service Systemd:
sudo nano /etc/systemd/system/webhook.service
Modifikasi ExecStart agar output diarahkan ke file log:
ExecStart=/usr/local/bin/webhook -hooks /etc/webhook/hooks.json -verbose >> /var/log/webhook.log 2>&1
Restart Service:
sudo systemctl daemon-reload
sudo systemctl restart webhook
Cek Log Error:
tail -f /var/log/webhook.log
4. Testing Manual dengan Curl
Jalankan webhook secara manual untuk memastikan tidak ada error pada hooks.json
.
Jalankan Webhook Manual:
webhook -hooks /etc/webhook/hooks.json -verbose
Kirim Request Manual:
curl -X POST http://localhost:9000/hooks/deploy-webhook -H "X-Gitlab-Token: your-secret-token"
Periksa yang Harus Dicek:
- Pastikan path skrip deploy (
deploy.sh
) benar. - Token rahasia sesuai dengan yang dikirim oleh GitLab.
5. Debugging Trigger Rule
Jika aturan trigger-rule
menjadi masalah, hapus sementara aturan tersebut untuk memastikan webhook berjalan.
Hapus Sementara Trigger Rule:
"trigger-rule": {}
Jika webhook berjalan tanpa aturan ini, tambahkan aturan secara bertahap untuk menemukan penyebab error.
6. Periksa Izin File dan Direktori
Pastikan file dan direktori memiliki izin yang benar agar webhook dapat mengakses dan menjalankan skrip deploy.
Pastikan Skrip Dapat Dieksekusi:
sudo chmod +x /etc/webhook/deploy.sh
Berikan Akses ke Direktori Proyek:
sudo chown -R www-data:www-data /var/www/your-app
Penutup
Dengan mengikuti langkah-langkah di atas, error "Error occurred while evaluating hook rules" pada adnanh/webhook bisa diatasi dengan mudah. Pastikan untuk selalu memeriksa log dan melakukan validasi JSON agar webhook berjalan dengan lancar. Jika error masih berlanjut, periksa kembali konfigurasi secara menyeluruh atau lakukan debugging dengan metode eliminasi.