Lebih lanjut ke konten utama
Integrasi CI/CD

Automatic Capacitor Android build with GitLab

Cara mengatur pipeline CI/CD untuk aplikasi Android Ionic Anda menggunakan fastlane dan GitLab dalam 5 menit

Kredit Artikel

Martin Donadieu

Pengarang

Valeria

Pengulas

Jordan

Pengedit

Automatic Capacitor Android build with GitLab

Automatic Android Builds dengan GitLab CI

Pengaturan CI/CD untuk aplikasi Capacitor dapat rumit dan memakan waktu. Berikut adalah hal-hal yang perlu Anda ketahui:

Prasyarat

Sebelum memulai, Anda perlu mengatur:

  • Akun GitLab dengan akses admin
  • Aplikasi Anda sudah dipublikasikan di Google Play Store dengan tanda tangan yang tepat
  • Kunci dan file keystore Android
  • Project Google Cloud Console dengan Play Store API diaktifkan
  • Akun layanan dengan izin yang tepat
  • Pemahaman tentang alur kerja GitLab CI/CD
  • Pengenalan konfigurasi Fastlane
  • Waktu untuk memelihara dan mengdebug pipeline

Capgo Pembangunan untuk CI/CD oleh Capgo

Mengabaikan perawatan Fastlane, Gradle runner, keystore, dan skrip unggah. Capgo Pembangunan melakukan pembangunan Android asli yang ditandatangani dari pipeline CI/CD yang ada:

  • Berfungsi dengan pipeline Anda: Aktifkan Capgo Pembangunan dari GitLab CI, GitHub Actions, Jenkins, atau skrip lokal setelah pembangunan web Anda dan npx cap sync.
  • Tanda tangan dari rahasia CI: Simpan keystore Android, alias kunci, kata sandi, dan akun layanan Play Console dalam rahasia CI Anda sendiri.
  • Tidak ada perawatan runner asli: Capgo Pembangunan 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.

Pengaturan Harga

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

Setup Capgo Build di CI/CD

Panduan Setup Manual

Ini yang perlu Anda lakukan:

Langkah-langkah untuk diikuti dalam postingan ini

  1. Mengcopy file Fastlane
  2. Menyimpan rahasia Anda di GitLab rahasia yang dienkripsi
  3. Membuat & menyimpan kunci layanan Google Play
  4. Menyimpan kunci tanda tangan Android
  5. Konfigurasi alur kerja Anda .yml file GitLab

1. Salin file-file Fastlane

Fastlane adalah sebuah library Ruby yang dibuat untuk mengotomatisasi tugas-tugas pengembangan mobile yang umum. Dengan menggunakan Fastlane, Anda dapat mengonfigurasi jalur

yang dapat menggabungkan serangkaian

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'])
				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}")
        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(
					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
    lane :build do
      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}",
        })
    end
    lane :prod_release do
      build_gradle = File.read("../android/app/build.gradle")

      verify_changelog_exists(version_code: build_gradle.match(/versionCode (\d+)/)[1])
      verify_upload_to_staging(version_name: build_gradle.match(/versionName '([\d\.]+)'/)[1])

      supply(
        track_promote_to: 'beta',
        skip_upload_apk: true,
        skip_upload_aab: true,
        skip_upload_metadata: false,
        skip_upload_changelogs: false,
        skip_upload_images: false,
        skip_upload_screenshots: false
      )
    end
end

yang melakukan tugas-tugas yang biasanya Anda lakukan menggunakan Android Studio. Anda dapat melakukan banyak hal dengan Fastlane, tetapi untuk tujuan tutorial ini, kita hanya akan menggunakan beberapa aksi inti.

GitLab provides a way to store encrypted CI/CD variables, similar to GitHub’s repository secrets. To store your sensitive information securely.

  1. Menyimpan Rahasia Anda di Variabel CI/CD GitLab
  2. GitLab menyediakan cara untuk menyimpan variabel CI/CD yang dienkripsi, mirip dengan __CAPGO_KEEP_0__’s repository secrets. Untuk menyimpan informasi sensitif Anda secara aman.
  3. Pergi ke pengaturan proyek GitLab Anda.
  • Navigasikan ke CI/CD > Variabel .jks Tambahkan variabel-variabel berikut: .keystore ANDROID_KEYSTORE_FILE: file yang di-encode menggunakan base64 , yang digunakan untuk menandatangani aplikasi Android Anda. Atau, Anda dapat menggunakan file keystore yang terkait dengan kunci upload Anda (jika Anda menggunakan Play App Signing).
  • KATA SANDI KEYSORE: kata sandi terkait file keystore
  • ALIAS KEYSORE: alias keystore
  • KATA SANDI KEYSORE STORE: kata sandi kunci pribadi
  • Nama Paket Pengembang: ID aplikasi Android Anda seperti com.example.app
  • Konfigurasi JSON Play: kunci akun layanan base64 yang dikodekan.

Membuat Kunci Layanan Google Play

Membuat kunci rahasia, ikuti langkah-langkah berikut: PLAY_CONFIG_JSON Pergi ke

  1. Console Cloud Google Buat proyek baru atau pilih salah satu yang sudah ada
  2. Aktifkan layanan pengembang Android Google Play __CAPGO_KEEP_0__
  3. Enable the Google Play Android Developer API
  4. Membuat akun layanan:
    • Pergi ke “IAM & Admin” > “Akun Layanan”
    • Klik “Buat Akun Layanan”
    • Berikan nama dan deskripsi
    • Klik “Buat dan Lanjutkan”
    • Lebihkan pengaturan peran dan klik “Selesai”
  5. Menghasilkan kunci JSON:
    • Cari akun layanan Anda di daftar
    • Klik menu tiga titik > “Kelola Kunci”
    • Klik “Tambah Kunci” > “Buat kunci baru”
    • Pilih format JSON
    • Klik “Buat”
  6. Berikan akses akun layanan ke aplikasi Anda di Console Play:
    • Pergi ke Console Play
    • Navigasikan ke "Pengguna dan izin"
    • Klik "Undang pengguna baru"
    • Masukkan alamat email akun layanan (berakhir dengan @*.iam.gserviceaccount.com)
    • Berikan izin "Rilis ke produksi"
    • Klik "Undang pengguna"
  7. Mengonversi kunci JSON ke base64:
    base64 -i path/to/your/service-account-key.json | pbcopy
  8. Tambahkan string base64 yang dikodekan sebagai PLAY_CONFIG_JSON variabel di GitLab

Set Up Pipa CI/CD Anda di GitLab

Buat file .gitlab-ci.yml di root project Anda untuk mendefinisikan pipeline CI/CD Anda. Berikut adalah contoh struktur pipeline Anda:


image: mingc/android-build-box:latest

stages:
  - build
  - upload_to_capgo
  - build_and_upload_android

build:
  stage: build
  tags:
    - saas-linux-xlarge-amd64
  cache:
    - key:
        files:
          - bun.lockb
      paths:
        - .node_modules/
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - node_modules/
      - dist/
  only:
    - master

upload_to_capgo:
  stage: upload_to_capgo
  tags:
    - saas-linux-xlarge-amd64
  script:
    - npx @capgo/cli@latest bundle upload -a $CAPGO_TOKEN -c dev
  dependencies:
    - build
  when: manual
  only:
    - master

build_and_upload_android:
  tags:
    - saas-linux-xlarge-amd64
  stage:    build_and_upload_android
  cache:
    - key:
        files:
          - android/gradle/wrapper/gradle-wrapper.properties
      paths:
        - ~/.gradle/caches/
  script:
    - npx cap sync android
    - npx cap copy android
    - bundle exec fastlane android beta # We do create a tag for the build to trigger XCode cloud builds
  dependencies:
    - build
  when: manual
  only:
    - master

Trigger Pipeline

Setiap kali Anda push tag baru ke repository GitLab Anda, GitLab CI/CD akan secara otomatis memicu pipeline yang telah ditentukan, yang akan membangun dan mendeploykan aplikasi Android menggunakan Fastlane.

Pastikan untuk menyesuaikan jalur dan dependensi sesuai dengan struktur dan kebutuhan project Anda. Konfigurasi ini akan membantu Anda mengotomasi pengiriman aplikasi Android di GitLab CI/CD.

Kesimpulan

Dengan mengonfigurasi GitLab CI/CD dengan gambar Docker mingc/android-build-box, Anda dapat mengotomasi proses pembangunan aplikasi Android, membuat alur kerja pengembangan Anda lebih efisien dan dapat diandalkan. Otomatisasi ini akan membebaskan waktu Anda untuk fokus pada aspek inti pengembangan aplikasi, sehingga membantu Anda mengirimkan aplikasi Android berkualitas tinggi lebih efisien.

Teruskan dari Automatic Capacitor Android build dengan GitLab

Jika Anda menggunakan Automatic Capacitor Android build dengan GitLab untuk merencanakan otomatisasi CI/CD, hubungkan dengan Capgo CI/CD untuk alur kerja produk di Capgo CI/CD, Capgo Pembangunan Nadi Asli untuk alur kerja produk dalam Capgo Pembangunan Nadi Asli Capgo Integrasi for the product workflow in Capgo Integrations, untuk alur kerja produk dalam __CAPGO_KEEP_0__ Integrasi Integrasi CI/CD GitHub Actions Integration for the implementation detail in GitHub Actions Integration.

Update Langsung untuk Aplikasi Capacitor

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo tanpa harus menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan update di latar belakang sementara perubahan native tetap dalam jalur review normal.

Pertolongan Manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk menciptakan aplikasi mobile profesional yang sebenarnya.