Memanfaatkan API GitHub untuk mengubah pengaturan branch repo

Dalam sebuah proyek di GitHub, ada kalanya kita harus mengubah pengaturan repo di branch tertentu. Kalau hanya satu-dua repo sih mungkin tidak ada masalah, tapi ketika harus mengubah pengaturan ratusan repo, kepala puyeng juga. Untunglah GitHub memiliki API yang cukup lengkap.

Jadi ceritanya, kami kembali mendapatkan tugas untuk mengubah pengaturan branch Tambora di seluruh paket Blankon di GitHub. Total ada 304 repo yang harus diubah pengaturannya, terutama di bagian Branch protection. Sebagai pemalas, tentu saja membuka ratusan repo cukup melelahkan, sehingga harus dicari jalan termudah untuk menyelesaikan task ini. Setelah mengubek dokumentasi API GitHub, ternyata ada cara yang lebih mudah.

Oh iya, spoiler alert, tulisan di blog ini hanya sekadar catatan saja supaya saya tidak lupa, kalau-kalau di kemudian hari harus kembali mengurus ratusan repo GitHub (syukur-syukur API-nya belum berubah). Begini caranya.

Dari hasil ubek-ubek laman dokumentasi API GitHub, untuk mengecek pengaturan proteksi branch ada di bagian ini.

Artinya, untuk melihat pengaturan repo gnome-software di branch Tambora, jadinya seperti ini:

Tapi sayang beribu sayang, hasilnya tidak memuaskan, karena dari percobaan di Postman, didapat keluaran begini:

Dari hasil ubek-ubek lagi, ternyata ada masalah di perizinan. Jadi tidak sembarang orang yang dapat mengakses laman tersebut. Hanya orang-orang terpilihlah yang dapat mengakses laman tersebut. Untuk itu diperlukan kode akses agar laman tersebut dapat dibuka. Di sini, kita gunakan token. Karena itu, buat dulu tokennya jika belum ada dengan mengakses laman ini dan buat token baru dengan mengeklik tombol Generate new token.

generate new token

generate new token

Jika sudah, menggunakan Postman, kita coba lagi mengakses laman pengaturan repo gnome-software di atas menggunakan auth tipe Basic (menggunakan username dari akun GitHub kita dan password berupa token yang dikasih GitHub):

akses API lewat postman

akses API lewat postman

Dari gambar di atas bisa dilihat bahwa kita sukses mengakses pengaturan branch protection (ada status code 200 OK). Langkah selanjutnya adalah bagaimana kita mengubah pengaturannya, menggunakan metode PUT. Sesuai contoh di sini, kita tinggal membuat data berbentuk json yang isinya parameter apa saja yang akan diatur. Contohnya seperti di bawah:

Oh iya, sebelumnya saya membuat skrip python yang menyimpan daftar repo dan disimpan dalam berkas berbentuk csv (tadinya mau diunggah ke Google Drive namun tidak jadi). Data itu saya simpan di berkas hasil.csv dan hasil2.csv. Skripnya kurang lebih seperti ini:

Dari berkas hasil2.csv kita olah lagi dengan mengakses kolom terakhir untuk mendapatkan url API restriction. Di sini kita gunakan token yang didapat dari GitHub tadi, dan diolah untuk kemudian disisipkan di bagian header. Karena GitHub menggunakan sistem auth basic, maka username GitHub dan token itu diubah bentuknya menjadi format Authorization Basic tokenHasilolahandariTokenGitHub. Cara encode tokennya bisa dibaca di sini. Tapi saya sih tak mau repot, jadi cukup contek hasil encode dari postman :D. Nanti headernya jadi begini:

Lalu di mana si data parameter disimpan? Kita buat variabel baru bernama payload, bentuknya kira-kira begini (lagi-lagi ini hasil contekan dari postman. terpujilah wahai pembuat postman):

Skrip lengkapnya kira-kira begini:

Simpanlah 3 fungsi terakhir, misalnya di berkas app.py, lalu jalankan di terminal:

Tunggulah sebentar atau dua bentar (tergantung koneksi internet), lalu sambil ngopi kita bisa melihat API bekerja*)

*) mencontek mentah-mentah dari judul buku Aan Mansyur berjudul Melihat Api Bekerja

Ada komentar?

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: