Pengiriman Berkelanjutan untuk Android menggunakan Fastlane dan GitHub Actions
Prasyarat
Sebelum melanjutkan dengan tutorial ini…
- Pastikan Anda menggunakan GitHub
- Aplikasi Anda sudah diterapkan di Google Play Store
- Keinginan untuk membaca 😆…
Penting tentang harga
https://githubcom/features/actions
Layanan ini ‘gratis’ sampai batas tertentu, tergantung pada mesin yang dipilih Kita akan menggunakan mesin Linux, Anda dapat melihat harga dan batasannya di tangkapan layar (harga pada saat pembuatan tutorial, mungkin akan berubah di masa mendatang)
🔴 Setelah diperingatkan tentang persyaratan dan harga, jika Anda mau, kita lanjutkan
📣 Dalam postingan ini kita berasumsi bahwa kita telah membuat aplikasi di Google Play, kita memiliki kunci penandatanganan dari ekosistem Google
Mari kita mulai 🧑🏽💻
Langkah-langkah yang akan diikuti dalam postingan ini
- Menyalin file Fastline
- Menyimpan rahasia Anda di rahasia terenkripsi GitHub
- Membuat & menyimpan kunci akun layanan Google Play Anda
- Menyimpan kunci penandatanganan Android Anda
- Menyiapkan file yml alur kerja GitHub Actions Anda
1. Menyalin file Fastline
Fastlane adalah pustaka Ruby yang dibuat untuk mengotomatiskan tugas-tugas pengembangan seluler yang umum. Menggunakan Fastlane, Anda dapat mengonfigurasi “lane” kustom yang menggabungkan serangkaian “action” yang melakukan tugas-tugas yang biasanya Anda lakukan menggunakan Android Studio. Anda bisa melakukan banyak hal dengan Fastlane, tetapi untuk tujuan tutorial ini, kita hanya akan menggunakan beberapa action inti.
Buat folder Fastlane di root proyek Anda dan salin file-file berikut: Fastlane
Menyimpan rahasia Anda di rahasia terenkripsi GitHub
Untuk mengautentikasi dengan API Pengembang Google Play, kita akan membutuhkan kunci akun layanan. File kunci akun layanan dianggap sensitif, yang berarti kita perlu menyimpannya dengan aman, tetapi di tempat yang dapat diakses oleh alur kerja GitHub Actions dan Fastfile kita saat diperlukan. Masukkan rahasia terenkripsi GitHub: kita akan menyimpan semua kunci sensitif dalam rahasia repositori, menyimpannya dengan aman sambil membuatnya dapat diakses secara otomatis oleh alur kerja GitHub Actions di repositori.
Membuat & menyimpan kunci akun layanan Google Play Anda
Jika Anda perlu membuat kunci akun layanan baru, ikuti langkah-langkah yang diuraikan di sini. Setelah Anda memiliki file JSON kunci akun layanan, mari kita tambahkan ke rahasia terenkripsi repositori GitHub Anda.
Untuk menambahkan rahasia baru ke rahasia terenkripsi GitHub, pertama-tama navigasikan ke repo Android tempat Anda akan menambahkan alur kerja GitHub Actions. Di sebelah kanan jauh, klik “Settings”
Kemudian, klik “Secrets”,
lalu “Actions” dari daftar di menu sebelah kiri
Ini adalah variabel lingkungan rahasia terenkripsi untuk repositori. Setiap alur kerja yang diatur pada repositori akan memiliki akses ke rahasia repositori ini.
Dari sini, klik “New repository secret” untuk menambahkan rahasia baru:
Ketika Anda mengklik “New repository secret”, Anda akan melihat formulir yang akan meminta Anda untuk memasukkan nama untuk rahasia baru Anda, dan nilainya.
Rahasia GitHub hanya menerima nilai string, jadi untuk kredensial tertentu (file jks atau json misalnya), Anda perlu terlebih dahulu mengonversi file menjadi string yang dikodekan base64 sebelum menambahkannya ke rahasia GitHub. Anda dapat melakukan ini dari baris perintah:
Ini menyalin string yang dihasilkan ke clipboard Anda, sehingga Anda dapat langsung menempelkannya ke rahasia repositori baru di GitHub.Berikut adalah terjemahan teks tersebut ke dalam bahasa Indonesia:
Sebagai contoh:
Mari kita buat rahasia repositori baru sebagai berikut:
- PLAY_CONFIG_JSON: kunci JSON akun layanan yang dikodekan base64
Harap perhatikan bahwa Anda harus menyimpan salinan cadangan rahasia Anda secara aman di lokasi lain (di tempat yang bukan rahasia terenkripsi GitHub), karena Anda tidak akan dapat mengekspor atau mengakses kredensial tersebut lagi dari GitHub setelah Anda menambahkannya
Dengan kunci akun layanan kita yang telah ditambahkan ke rahasia repositori GitHub, kita sekarang dapat mengautentikasi dengan API Google Play Developer dari dalam alur kerja GitHub Actions mana pun yang ditambahkan ke repositori
Menyimpan kunci penandatanganan Android Anda
Untuk menandatangani build rilis Android dengan benar di CI, alur kerja akan membutuhkan akses ke kunci unggah Android atau kunci penandatanganan aplikasi. Aplikasi yang dibuat setelah Agustus 2021 akan menggunakan sistem Play App Signing baru dari Google secara default, di mana kunci unggah yang dikelola pengguna digunakan untuk menandatangani AAB sebelum diunggah, tetapi kunci penandatanganan aplikasi dikelola oleh Google. Jika tim Anda menggunakan Play App Signing Google, maka yang Anda butuhkan untuk pipeline CI hanyalah kunci unggah aplikasi Anda, karena penandatanganan ditunda hingga setelah AAB diunggah ke Play Console. Jika Anda masih perlu membuat kunci unggah dan keystore, ikuti petunjuk yang ada di dokumentasi pengembang Android.
Jika tim Anda belum beralih ke sistem Play App Signing Google, maka Anda perlu membuat kunci penandatanganan aplikasi Anda tersedia untuk alur kerja CI agar dapat menandatangani aplikasi Anda dengan benar sebelum diunggah.
Tambahkan hal berikut sebagai rahasia repositori:
- ANDROID_KEYSTORE_FILE: file
jks
ataukeystore
yang dikodekan base64 yang digunakan untuk menandatangani build Android Anda. Ini akan menjadi file keystore yang terkait dengan kunci unggah Anda (jika menggunakan Play App Signing), atau kunci penandatanganan aplikasi Anda. - KEYSTORE_KEY_PASSWORD: kata sandi yang terkait dengan file keystore
- KEYSTORE_KEY_ALIAS: alias keystore
- KEYSTORE_STORE_PASSWORD: kata sandi kunci pribadi
- DEVELOPER_PACKAGE_NAME: ID aplikasi Android Anda seperti com.example.app
Dengan rahasia ini ditambahkan ke rahasia repositori GitHub, kita siap untuk menyiapkan alur kerja GitHub Actions kita untuk menjalankan build kita.
Siapkan file yml alur kerja GitHub Actions Anda
Sekarang, mari kita siapkan file yml alur kerja GitHub Actions Android kita – ini akan mendefinisikan langkah-langkah yang akan kita jalankan sebagai bagian dari alur kerja kita. Dalam langkah-langkah ini, kita akan memanggil lane Fastlane kita.
Pertama, mari kita buat folder yang diperlukan. Dari direktori root proyek Anda, panggil:
Kemudian, tempelkan kode berikut ke dalam file build-upload-android.yml
yang baru Anda buat:
Alur kerja ini harus dipicu setelah setiap tag GitHub, jika Anda perlu mengotomatisasi tag, silakan lihat Build dan rilis otomatis dengan GitHub actions
Kemudian alur kerja ini akan menarik dependensi Nodejs Anda, menginstalnya, dan membangun aplikasi JavaScript Anda.
Aplikasi Anda tidak perlu menggunakan Ionic, hanya basis Capacitor yang wajib, itu bisa memiliki modul Cordova lama, tetapi plugin JS Capacitor sebaiknya lebih disukai.
Setiap kali Anda mengirim komit baru, rilis akan dibangun di konsol Google Play, saluran beta.
Saya akan meningkatkan blog ini dengan umpan balik Anda, jika Anda memiliki pertanyaan atau saran, silakan beri tahu saya melalui email martin@capgo.app
Pemrosesan Build
Di GitHub Actions, Anda ditagih berdasarkan menit yang Anda gunakan untuk menjalankan alur kerja CI/CD Anda. Dari pengalaman, dibutuhkan sekitar 3-5 menit sebelum build dapat diproses di Google Play Store.
Untuk proyek pribadi, perkiraan biaya per build bisa mencapai $0,008/menit x 5 menit = $0,04.4**, atau lebih, tergantung pada konfigurasi atau dependensi proyek Anda
Untuk proyek Open-source, ini seharusnya tidak menjadi masalah sama sekali. Lihat pricing
Terima Kasih
Blog ini didasarkan pada artikel-artikel berikut:
- Automate publishing app to the Google Play Store with GitHub Actions⚡+ Fastlane🏃
- Getting Started CI/CD for Android Project (Part - 3— GitHub Actions)
- Android Continuous Integration using Fastlane and CircleCI 20 — Part III
- How to set up a CI/CD pipeline for your Android app using Fastlane and GitHub Actions
- Fastlane Documentation
- This GitHub message from @mrogunlana