Beralih ke konten utama
CI/CD

Bangun otomatis Capacitor Android dengan aksi GitHub

Cara mengatur pipeline CI/CD untuk aplikasi Android Capacitor Anda menggunakan fastlane dan GitHub Actions dalam 5 menit

Automatic Capacitor build Android dengan GitHub aksi

Mengatur CI/CD untuk aplikasi Capacitor dapat sangat kompleks dan memakan waktu lama. Berikut beberapa hal yang perlu Anda ketahui:

Dianjurkan untuk Pembangunan Baru: Gunakan __CAPGO_KEEP_0__ Pembangunan Bangun dengan Capgo menggunakan Capgo CLI. Capacitor Pembangunan dengan __CAPGO_KEEP_1__ __CAPGO_KEEP_2__ untuk pembangunan native Capacitor. Petunjuk Fastlane ini disimpan untuk tim yang menjaga pipeline GitHub yang sudah ada, tetapi pembangunan Android baru harus menggunakan Capgo CLI sehingga Anda tidak perlu menjaga Fastlane, pengguna Gradle, kunci keamanan, dan skrip unggah sendiri.

Prerequisites

Sebelum memulai, Anda perlu mengatur:

  • Akun GitHub dengan akses admin
  • Aplikasi Anda sudah dipublikasikan di Google Play Store dengan tanda tangan yang tepat
  • Kunci dan file keamanan Android
  • Project Google Cloud Console dengan API Play Store diaktifkan
  • Akun layanan dengan hak akses yang tepat
  • Pengertian GitHub Actions workflow
  • Pengetahuan konfigurasi Fastlane
  • Waktu untuk menjaga dan memperbaiki pipeline

Capgo Build untuk CI/CD oleh Capgo

Lebih baik menghindari perawatan Fastlane, Gradle runner, keystore, dan upload-script. Capgo Build Menghasilkan tautan Android native yang ditandatangani dari pipeline CI/CD yang sudah ada Anda.

  • Menggunakan pipeline Anda: Aktifkan Capgo Build dari GitHub Actions, GitLab CI, Jenkins, atau skrip lokal setelah membangun web Anda dan npx cap sync.
  • Menggunakan rahasia CI untuk tanda tangan: Simpan keystore Android, alias kunci, kata sandi, dan akun layanan Play Console di rahasia CI Anda sendiri.
  • Tidak perlu perawatan runner native: Capgo Build menyediakan lingkungan pembangunan Android yang dipelihara, sehingga Anda tidak perlu mengelola SDK gambar, masalah cache Gradle, atau jalur Fastlane.
  • Artikel dan pengiriman: Unduh artikel yang ditandatangani untuk QA atau kirimkan rilis melalui Capgo CLI.

Harga

  • Rencana Capgo mulai dari $12/bulan
  • Menggunakan pembaruan OTA dan sekitar 15 build asli per bulan
  • Menit tambahan pembangunan akan dikenakan biaya per menit melalui kredit

Atur Capgo Build di CI/CD

Konfigurasi __CAPGO_KEEP_0__ Build di CI/CD

Panduan Pengaturan Manual

GitHub Actions Pricing

GitHub Actions Pricing

GitHub Aksi GitHub menawarkan menit gratis berdasarkan jenis repositori Anda:

  • Repositori publik: 2.000 menit/bulan
  • Repositori pribadi: 2.000 menit/bulan (pengguna Linux)

Untuk proyek pribadi, biaya sekitar $0.008/menit. Waktu pembangunan biasanya memakan 3-5 menit.

Langkah-Langkah Konfigurasi Manual

  1. Buat Keystore Android
  2. Konfigurasi Akun Layanan Google Play
  3. Konfigurasi Fastlane
  4. Konfigurasi Rahasia GitHub
  5. Buat Alur Kerja GitHub

1. Buat Keystore Android

Sebelum Anda dapat menandatangani dan menerbitkan aplikasi Android Anda, Anda perlu membuat file keystore. Ini adalah langkah satu kali.

Generate Keystore dengan keytool

Jalankan perintah ini di terminal Anda:

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

Anda akan diminta untuk:

  • Kata sandi Keystore: Pilih kata sandi yang kuat (anda akan membutuhkannya sebagai KEYSTORE_STORE_PASSWORD)
  • Pilih kata sandi utama: Pilih kata sandi yang kuat (anda akan membutuhkannya sebagai KEYSTORE_KEY_PASSWORD)
  • Nama Anda, organisasi, dll.: Isi detail Anda

Catatan Penting

  • Simpan nilai-nilai ini dengan aman:

    • Lokasi file keystore (misalnya, my-release-key.keystore)
    • Alias kunci (misalnya, my-key-alias) - Anda akan membutuhkannya sebagai KEYSTORE_KEY_ALIAS
    • Kata sandi keystore - Anda akan membutuhkannya sebagai KEYSTORE_STORE_PASSWORD
    • Kata sandi kunci - Anda akan membutuhkannya sebagai KEYSTORE_KEY_PASSWORD
  • Simpan file keystore dengan aman: If you lose it, you cannot update your published app

  • Jagalah rahasia: Tidak pernah komit file keystore ke git

  • Simpan dengan aman: Simpan beberapa salinan cadangan di lokasi yang aman

Alternatif: Gunakan Keystore yang Sudah Ada

: Jika Anda telah memublikasikan aplikasi, Anda harus menggunakan keystore yang sama yang digunakan awalnya. Anda dapat menemukannya:

  • Di mesin lokal Anda di mana Anda pertama kali membangun aplikasi
  • Di Console Play → Pengaturan → Penandatanganan Aplikasi (jika menggunakan Penandatanganan Aplikasi Google Play)

2. Atur Akun Layanan Google Play

: Untuk memungkinkan GitHub Actions mengunggah build ke Google Play, Anda memerlukan akun layanan.

Langkah 2.1: Buat Projek Google Cloud

  1. Pergi ke Konsole Google Cloud
  2. Buat projek baru atau pilih salah satu yang sudah ada
  3. Catat ID projek

Langkah 2.2: Aktifkan Pengembang Google Play API

  1. Pada Konsole Google Cloud, pergi ke Pelayanan & API → Perpustakaan
  2. Cari "Pengembang Android Google Play API"
  3. Klik Aktifkan

Langkah 2.3: Buat Akun Layanan

  1. Ke Penggunaan dan Administrasi → Akun Layanan
  2. Klik Buat Akun Layanan
  3. Masukkan detail:
    • Nama: github-actions-uploader
    • Deskripsi: "Akun layanan untuk GitHub Aksi untuk mengunggah build"
  4. Klik Buat dan Lanjutkan
  5. Lebihkan pengaturan peran untuk sekarang (klik Teruskan, kemudian Done)

Langkah 2.4: Buat Kunci Akun Layanan

  1. Klik pada akun layanan yang baru dibuat
  2. Pergi ke Pergi ke Tab
  3. Kunci Tambah Kunci → Buat kunci baru
  4. Pilih JSON format
  5. Klik Buat
  6. Sebuah file JSON akan diunduh - Simpan hal ini dengan amanKamu akan membutuhkannya nanti

Langkah 2.5: Berikan Akses di Play Console

  1. Pergi ke Google Play Console
  2. Pergi ke Pengaturan → Akses API
  3. Di bawah Akun layanan, klik Berikan akses untuk akun layanan Anda
  4. Pada tab Otorisasi aplikasi tab, berikan otorisasi ini:
  5. Pada tab izin aplikasi Anda tab, grant these permissions:
    • Melihat informasi aplikasi dan mengunduh laporan bulk (hanya baca)
    • Buat, edit, dan hapus aplikasi draft
    • Rilis aplikasi ke jalur pengujian
    • Rilis aplikasi ke produksi, kecuali, dan jalur lainnya
  6. Klik Mengundang pengguna
  7. Klik Mengirim undangan

Langkah 2.6: Verifikasi Kunci JSON

File JSON yang diunduh harus seperti ini:

{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "...",
  "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
  "client_email": "github-actions-uploader@your-project-id.iam.gserviceaccount.com",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "..."
}

Anda akan mengonversi ini ke base64 di langkah pengaturan rahasia GitHub.

3. Atur Fastlane

Buat sebuah fastlane folder di root project Anda dan tambahkan sebuah Fastfile dengan konten berikut:

default_platform(:android)

KEYSTORE_KEY_ALIAS = ENV["KEYSTORE_KEY_ALIAS"]
KEYSTORE_KEY_PASSWORD = ENV["KEYSTORE_KEY_PASSWORD"]
KEYSTORE_STORE_PASSWORD = ENV["KEYSTORE_STORE_PASSWORD"]

platform :android do
    desc "Deploy a beta version to the Google Play"
    private_lane :verify_changelog_exists do |version_code: |
      changelog_path = "android/metadata/en-US/changelogs/#{version_code}.txt"
      UI.user_error!("Missing changelog file at #{changelog_path}") unless File.exist?(changelog_path)
      UI.message("Changelog exists for version code #{version_code}")
    end

    private_lane :verify_upload_to_staging do |version_name: |
      UI.message "Skipping staging verification step"
    end
    
    lane :beta do
        keystore_path = "#{Dir.tmpdir}/build_keystore.keystore"
        File.write(keystore_path, Base64.decode64(ENV['ANDROID_KEYSTORE_FILE']))
        json_key_data = Base64.decode64(ENV['PLAY_CONFIG_JSON'])
        
        # Get previous build number and increment
        previous_build_number = google_play_track_version_codes(
            package_name: ENV['DEVELOPER_PACKAGE_NAME'],
            track: "internal",
            json_key_data: json_key_data,
        )[0]
        current_build_number = previous_build_number + 1
        sh("export NEW_BUILD_NUMBER=#{current_build_number}")
        
        # Build the app
        gradle(
          task: "clean bundleRelease",
          project_dir: 'android/',
          print_command: false,
          properties: {
            "android.injected.signing.store.file" => "#{keystore_path}",
            "android.injected.signing.store.password" => "#{KEYSTORE_STORE_PASSWORD}",
            "android.injected.signing.key.alias" => "#{KEYSTORE_KEY_ALIAS}",
            "android.injected.signing.key.password" => "#{KEYSTORE_KEY_PASSWORD}",
            'versionCode' => current_build_number
          })
        
        # Upload to Play Store
        upload_to_play_store(
            package_name: ENV['DEVELOPER_PACKAGE_NAME'],
            json_key_data: json_key_data,
            track: 'internal',
            release_status: 'completed',
            skip_upload_metadata: true,
            skip_upload_changelogs: true,
            skip_upload_images: true,
            skip_upload_screenshots: true,
        )
    end
end

4. Konfigurasi GitHub Rahasia

Sekarang Anda telah memiliki keystore dan JSON akun layanan, Anda perlu menyimpannya secara aman di GitHub.

Langkah 4.1: Akses GitHub Rahasia

  1. Klik ke repository Anda di GitHub
  2. Klik Pengaturan → Rahasia dan variabel → Aksi
  3. Klik Repository Rahasia Baru

Langkah 4.2: Tambahkan Rahasia yang Diperlukan

Tambahkan masing-masing rahasia satu per satu:

Tambahkan rahasia-rahasia ini satu per satu:

  1. Ambil file JSON akun layanan yang Anda download di Langkah 2.4
  2. Konversi ke base64:

Konversi ke base64:

base64 service_account_key.json | pbcopy

Pada Windows (PowerShell):

[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
  1. On Windows (PowerShell): PLAY_CONFIG_JSON Buat rahasia baru bernama

dan tempelkan string base64

  1. Ubah keystore Anda ke base64:

Pada macOS/Linux:

base64 my-release-key.keystore | pbcopy

Pada Windows (PowerShell):

[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
  1. Buat rahasia baru bernama ANDROID_KEYSTORE_FILE masukkan string base64

ALIAS_KUNCI_KESTORAGE

Buat rahasia baru dengan menggunakan alias kunci yang Anda gunakan ketika menghasilkan keystore (misalnya, my-key-alias)

KUNCI_KESTORAGE

Buat rahasia baru dengan menggunakan kata sandi kunci yang Anda gunakan ketika menghasilkan keystore

KATA_SANDI_KESTORAGE

Buatlah rahasia baru dengan kata sandi keystore yang Anda tetapkan ketika menghasilkan keystore

NAMA_PACKAGES_PENGEMBANG

Buat rahasia baru dengan menggunakan nama paket aplikasi Anda (misalnya, com.example.app)

Anda dapat menemukan nama paket Anda di android/app/build.gradle di bawah applicationId

Langkah 4.3: Verifikasi Semua Rahasia

Pastikan Anda telah mengonfigurasi rahasia-rahasia ini 6:

  • ✅ Konfigurasi JSON PLAY
  • ✅ File Keystore Android
  • ✅ Alias Kunci Keystore
  • ✅ Kata Sandi Kunci Keystore
  • ✅ Kata Sandi Toko Keystore
  • ✅ Nama Paket Pengembang

5. Buat GitHub Workflow Aksi

Buat .github/workflows/build-upload-android.yml:

name: Build and Deploy Android App

on:
  push:
    tags:
      - '*'

jobs:
  build_android:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: npm
          
      - name: Install dependencies
        run: npm ci
        
      - name: Cache Gradle
        uses: actions/cache@v5
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-
            
      - name: Build app
        run: npm run build
        
      - name: Sync Capacitor
        run: npx cap sync
        
      - name: Setup Java
        uses: actions/setup-node@v5
        with:
            distribution: 'zulu'
            java-version: '17'
            
      - name: Setup Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.0'
          bundler-cache: true
          
      - name: Run Fastlane
        uses: maierj/fastlane-action@v3.1.0
        env:
          PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
          ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
          DEVELOPER_PACKAGE_NAME: ${{ secrets.DEVELOPER_PACKAGE_NAME }}
          KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
          KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
          KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
        with:
          lane: android beta
          
      - name: Upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: android-release
          path: ./android/app/build/outputs/bundle/release/app-release.aab
          retention-days: 10

Bagaimana Cara Kerjanya

  1. Buatlah tag Git untuk mengaktifkan alur kerja
  2. GitHub Aksi membangun aplikasi Anda
  3. Fastlane mengunggahnya ke saluran beta Google Play
  4. Aplikasi Anda secara otomatis diperbarui

Waktu dan Biaya Pembangunan

  • Waktu pembangunan: 3-5 menit
  • Biaya untuk repositori pribadi: sekitar $0.04 per build
  • Gratis untuk proyek sumber terbuka

Petunjuk Pengaturan CI/CD

Platform CI/CD Alternatif

Pembaruan Otomatis & Pengembangan

Sumber Daya

Keep going from Automatic Capacitor Android build with GitHub actions

Teruskan dari Pembangunan Otomatis Android __CAPGO_KEEP_0__ dengan Aksi __CAPGO_KEEP_1__ Automatic Capacitor build Android dengan GitHub aksi Untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo CI/CD Capgo CI/CD untuk alur kerja produk di Capgo CI/CD, Capgo Pembangunan Nadi Asli untuk alur kerja produk di Capgo Pembangunan Nadi Asli, Capgo Integrasi untuk alur kerja produk di Integrasi Capgo Integrasi CI/CD untuk alur kerja produk di __CAPGO_KEEP_0__ Integrasi, Integrasi GitHub Aksi Untuk detail implementasi di GitHub Integrasi Aksi.

Pembaruan Langsung untuk Aplikasi Capacitor

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi seluler profesional yang sebenarnya.