Upload apk dari Gitlab ke Slack dan Telegram

Khanifun Nizar
Binar Academy
Published in
4 min readMar 2, 2018

Notifikasi status build yang ada di Gitlab sudah semakin mudah diterapkan dengan adanya webhook. Setiap kali ada push, Merge Request / Pull Request, event yang ada di pipeline, ataupun yang lain, kita bisa mengirimkan notifikasi ke grup di Slack ataupun email. Dari situ kita bisa tahu langsung apa yang sedang terjadi dan sudah terjadi dengan repository atau build kita.

Pengalaman saya selama develop aplikasi pada umumnya memiliki alur yang sama atau mirip.

  1. Developer push ke feature branch
  2. MR / PR feature branch ke develop branch
  3. Merge MR / PR
  4. Trigger automated build
  5. Build done
  6. Notify status build apk ke group / email
  7. QA mengambil apk dari Gitlab

7 langkah tersebut merupakan langkah yang kami pakai di tim pada awal mulanya. Dari langkah 6 dan 7 kita bisa meringkasnya lagi dengan cara upload apk yang sudah jadi ke group Slack atau Telegram.

Untuk upload build apk ke group Slack dan Telegram, kami menggunakan bot dari Slack dan Telegram.

Slack

Untuk membuat uploader bot di Slack, kami membuat Slack app melalui https://api.slack.com/slack-apps.

Pilih Development Slack Workspace dimana kita akan upload apk kita.

Setelah itu kita akan masuk ke Basic Information dari app yang dibuat. Pada Add features and functionality pilih Bots, lalu buat bot baru dari menu tersebut dan Add Bot User, dan itu kembali lagi ke Basic Information.

Setelah membuat bot, kita perlu install App yang kita buat ke workspace kita. Expand Install your app to your workspace lalu tekan button Install App to Workspace dan Authorize.

Setelah App di authorize, bot akan mendapatkan OAuth Tokens yang akan kita gunakan ketika kita upload ataupun mengirim pesan ke group di Slack.

Oauth Tokens

Yang akan kita gunakan adalah Bot UserOAuth Access Token (xoxb-xxxxxxxxxxx). Dan setup bot sudah selesai, tinggal menggunakanya saja (phew..).

Setelah itu kita membutuhkan ID channel dimana kita akan upload apk, dokumentasinya bisa dilihat di https://api.slack.com/methods/channels.list.

Contoh : https://slack.com/api/channels.list?token=xoxb-xxxxxxxxxxxxxx

Untuk upload, dokumentasinya bisa kita lihat di https://api.slack.com/methods/files.upload.

Contoh : curl -F file=@app-staging-debug.apk -F channels=ABC0123 -F token=xxxx-xxxxxxxxx-xxxx https://slack.com/api/files.upload

Lalu agar build apk kita otomatis upload ke Slack setelah selesai build, kita tambahkan perintah di atas ke .gitlab-ci.yml. Kita bisa menambahkanya ke after_script, agar perintah di atas dijalankan setelah proses build selesai.

Agar lebih mudah untuk mengatur path dan menyembunyikan token dan id dari channel, kita bisa menaruhnya di Secret Variables.

Telegram

Cara upload apk ke Telegram tidak jauh beda dari cara upload apk ke Slack, yang berbeda hanyalah cara pembuatan bot.

Untuk membuat bot, kita akan menggunakan service yang disediakan oleh Telegram melalui https://telegram.me/botfather. Botfather merupakan bot yang berfungsi membuat bot untuk kita gunakan, untuk lebih jelasnya bisa dilihat di https://core.telegram.org/bots.

Untuk membuat bot, kirim pesan ke botfather dan input /start untuk memulai service. Lalu input /newbot, setelah itu masukan nama bot kita. Jika nama bot tersedia dan berhasil dibuat, kita akan mendapatkan token untuk akses API.

Setelah itu invite bot ke dalam group Telegram. Untuk mendapatkan chat id dari group, kita perlu trigger history untuk bot dengan cara mengirim chat ke group, lalu lihat update dari bot kita dengan cara akses : https://api.telegram.org/bot<token_bot>/getUpdates

Dari situ kita akan mendapakan response JSON yang berisi list chat id baik private chat maupun group. Untuk chat id group biasanya ditandai dengan tanda negatif, misalnya -123456.

Token dan chat id yang kita dapat, akan kita gunakan untuk upload apk. Upload apk akan menggunakan endpoint sendDocument (https://core.telegram.org/bots/api#senddocument), endpoint tersebut memerlukan chat_id dan document sebagai parameter.

Contoh :

curl -F chat_id=-01234456 -F document=@app-staging-debug.apk https://api.telegram.org/botXXXXXX:XXXXXXXXXXXXXXXXXX/sendDocument

Dan kita tinggal menambahkan perintah di atas ke .gitlab-ci.yml di bagian after_script.

Dengan cara ini tim kami bisa mendapatkan notifikasi sekaligus build apk terbaru.

Semoga bermanfaat… :)

--

--