Memicu Fungsi Azure dengan peristiwa GitHub

Selesai

Peristiwa Gollum GitHub memungkinkan Anda mendengarkan pembaruan wiki. Ketika peristiwa ini terjadi, fungsi HttpTrigger Azure Anda dipicu, dan Anda dapat mengurai payload untuk mengambil dan memproses data yang dikirim.

Anda telah menunjukkan kepada departemen IT bahwa Anda dapat mendengarkan peristiwa Gollum di repositori GitHub perusahaan, dengan menyiapkan webhook di GitHub. Anda juga telah menunjukkan bagaimana Azure Functions memungkinkan Anda menjalankan kode saat fungsi menerima permintaan webhook.

Di unit ini, kami akan memeriksa muatan dari peristiwa Gollum sehingga kami dapat memperbarui fungsi kami untuk menguraikannya dengan benar.

Payload peristiwa Gollum

Payload untuk peristiwa Gollum berisi item berikut:

  • halaman yang diperbarui. Setiap halaman menyertakan informasi berikut:
    • page_name Nama halaman.
    • title Judul halaman saat ini.
    • action Tindakan yang dilakukan pada halaman - dibuat atau diedit.
    • html_url Halaman wiki HTML.
  • informasi repositori tentang repositori yang berisi halaman wiki, termasuk:
    • name Nama repositori.
    • owner Rincian pemilik repositori.
    • html_url Alamat repositori.
  • Informasi pengirim tentang pengguna yang mengangkat peristiwa yang menyebabkan webhook diaktifkan.

Misalnya, payload mungkin terlihat seperti kode berikut.

"pages": [
    {
        "page_name": "Home",
        "title": "Home",
        "summary": null,
        "action": "edited",
        "sha": "562362bc141b9e2db1fb971e1ecb4fd0b7457f68",
        "html_url": "https://github.com/testrepo/Hello-World/wiki/Home"
    }
],
"repository": {
    ...
    "name": "testrepo",
    ...
    "owner": {
        ...
    },
    "html_url": "https://github.com/...",
    ...
},
"sender": {
    "login": "..."
    ...
}

Informasi ini diteruskan sebagai isi permintaan HTTP POST. Kami perlu memperbarui logika fungsi untuk mengurai dan memproses informasi ini dengan benar.

Memilah informasi dari peristiwa Gollum

Ingatlah bahwa webhook dijalankan ketika peristiwa tertentu terjadi. Webhook kemudian mengirim permintaan ke URL tempat kode Azure Functions Anda disiapkan untuk mendengarkan, menggunakan URL untuk fungsi Anda. Payload diteruskan ke Fungsi Azure. Fungsi Anda dapat memilah isi permintaan untuk mengekstrak bidang dari payload, dan mengambil tindakan yang sesuai.

Contoh berikut mengambil nama repositori dari payload. Jenis peristiwa tersedia di header permintaan x-github-event. Data ini adalah output dalam respons fungsi berikut.

if (req.body.repository.name){
    context.res = {
        body: "Repository is: " + req.body.repository.name + ", Event Type is: " + req.headers['x-github-event']
    };
}

Pada latihan berikutnya, kami akan memperbarui kode fungsi Anda agar dapat menangani peristiwa Gollum yang masuk.