SysAdmin12 Jan 2025

Mengatasi "Error occurred while evaluating hook rules" pada adnanh/webhook

Ketika menggunakan adnanh/webhook untuk mengatur auto-deploy aplikasi melalui GitLab, Anda mungkin menemui error:"Error occurred while evaluating hook rules"

Ahmad Sanusi

Ahmad Sanusi

3 min read · 1,347 views

Mengatasi "Error occurred while evaluating hook rules" pada adnanh/webhook

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.

Ahmad Sanusi

Written by

Ahmad Sanusi

Senior Full-Stack Developer with 15+ years of experience in building scalable digital solutions.

Responses

No responses yet. Be the first to share your thoughts.

All articles