Lebih cepat ke konten

Pengelolaan Kredensial

Manajemen kredit pembangunan iOS dan Android Anda secara lokal untuk memudahkan pembangunan cloud.

Capgo CLI menyimpan kredit pembangunan Anda di mesin Anda – tidak pernah di server Capgo . Dengan default mereka hidup di satu file global, bersamaan dengan semua proyek Anda. Pass ~/.capgo-credentials/credentials.jsonuntuk menjaganya --local __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ per-project di .capgo-credentials.json sebaliknya. Ketika Anda menjalankan build, kredit yang disimpan digunakan secara otomatis dan dikirimkan dengan aman ke Capgo, kemudian dihapus setelah build selesai.

Cara termudah untuk bekerja dengan kredensial yang disimpan adalah manajer interaktif. Ia membuka TUI (sama yang digunakan) di mana Anda dapat menjelajahi apa yang disimpan, melihat apa yang dikonfigurasi per aplikasi dan platform, mengexport file yang siap digunakan dalam CI/CD, atau menghapus kredensial platform: build init Jendela Terminal .env Salin ke clipboard

__CAPGO_KEEP_0__
bunx @capgo/cli@latest build credentials manage
OpsiPengenalan
--appId <appId>Aplikasi untuk mengelola (mengajak Anda memilih jika diabaikan)
--platform <ios|android>Platform untuk mengelola (mengajak jika diabaikan)
--localGunakan per-proyek .capgo-credentials.json daripada file global

Lebih suka perintah tunggal, dapat dieksekusi secara skrip? Gunakan perintah-perintah individu di bawah.

Simpan kredensial pembangun Anda secara lokal untuk penggunaan otomatis:

Tampilan jendela terminal
bunx @capgo/cli@latest build credentials save --platform <ios|android> [options]

Perbarui sebagian kredensial yang sudah ada tanpa harus menyediakan semuanya lagi:

Tampilan jendela terminal
bunx @capgo/cli@latest build credentials update --platform <ios|android> [options]

Kredensial update Perintah menggunakan penyatuan tambahan untuk profil penyediaan — profil baru disatukan dengan profil yang sudah ada. Untuk mengganti seluruh peta profil penyediaan, tambahkan --overwrite-ios-provisioning-map.

Contoh — tambahkan profil ekstensi ke kredensial yang sudah ada:

Tampilan jendela terminal
bunx @capgo/cli@latest build credentials update \
--platform ios \
--ios-provisioning-profile "com.example.app.widget=./widget_profile.mobileprovision"

Perintah update menerima opsi yang sama seperti save tetapi semua adalah opsional — hanya bidang yang Anda berikan saja yang diperbarui.

Lihat kredensial yang disimpan saat ini (kata sandi disembunyikan):

Jendela Terminal
bunx @capgo/cli@latest build credentials list
# List credentials for a specific app
bunx @capgo/cli@latest build credentials list --appId com.example.app

Hapus kredensial yang disimpan dari mesin lokal Anda:

Jendela Terminal
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Clear credentials for a specific app + platform
bunx @capgo/cli@latest build credentials clear --appId com.example.app --platform ios

Migrasikan format tunggal profil ke format multi-target baru:

Tampilan Jendela Terminal
bunx @capgo/cli@latest build credentials migrate --platform ios

Perintah migrasi mendeteksi kredensial lama, mengubahnya ke kredensial baru, dan menghapus kunci legasi. Lihat BUILD_PROVISION_PROFILE_BASE64 Migration dari Profil Tunggal CAPGO_IOS_PROVISIONING_MAPuntuk informasi lebih lanjut. Menyimpan Kredensial iOS Judul Bagian: Menyimpan Kredensial iOS

Convert legacy single-profile format to the new multi-target format:

Migrasi dari Profil Tunggal
Jendela Terminal
bunx @capgo/cli@latest build credentials save \
--platform ios \
--certificate ./cert.p12 \
--p12-password "YourP12Password" \
--ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
--apple-key ./AuthKey_ABC1234567.p8 \
--apple-key-id "ABC1234567" \
--apple-issuer-id "00000000-0000-0000-0000-000000000000" \
--apple-team-id "TEAM123456"
OpsiPengenalanWajib
--certificate <path>Jalur ke file sertifikat .p12Ya (rilis)
--p12-password <password>Kata sandi untuk sertifikat .p12Ya (rilis)
--ios-provisioning-profile <mapping>Peta profil pengaturan (bundleId=pathUlangi untuk aplikasi multi-target. Jika hanya satu profil dan tidak ada prefix bundleId, CLI secara otomatis diinfer dari profil.Ya (rilis)
--apple-key <path>Jalur ke App Store Connect API .p8 keyLihat catatan¹
--apple-key-id <id>App Store Connect API ID AplikasiSee note¹
--apple-issuer-id <id>App Store Connect API Penerbit ID (UUID)See note¹
--apple-team-id <id>ID Tim App Store ConnectYes
--apple-id <email>Alamat email ID Apple untuk mengunggah kata sandi aplikasi (alternatif dari API key)See note²
--apple-app-specific-password <password>Kata sandi aplikasi (xxxx-xxxx-xxxx-xxxx)See note²
--apple-app-id <id>ID Aplikasi App Store Connect numerik (misalnya 1234567890)See note²
--ios-distribution <mode>Distribusi mode: app_store (default) atau ad_hocTidak
--output-uploadaktifkan tautan download sementara selama Capgo untuk artefak buildTidak (default:) false)
--output-retention <seconds>Berapa lama untuk menjaga keluaran build (misalnya 3600s)Tidak (default:) 3600s)
--skip-build-number-bumpLebihkan otomatis nomor buildTidak

Ketika Anda menyimpan kredential iOS, CLI:

  1. Membaca file sertifikat dan profil pengembangan
  2. Mengubahnya ke encoding base64
  3. Menghematnya ke ~/.capgo-credentials/credentials.json (atau .capgo-credentials.json dengan --local)
  4. Menyimpan kata sandi dan ID sebagai teks biasa (hanya file lokal)

Struktur file yang disimpan:

{
"ios": {
"BUILD_CERTIFICATE_BASE64": "...",
"CAPGO_IOS_PROVISIONING_MAP": "{\"com.example.app\":{\"profile\":\"...\",\"name\":\"match AppStore com.example.app\"}}",
"APPLE_KEY_CONTENT": "...",
"P12_PASSWORD": "...",
"APPLE_KEY_ID": "ABC1234567",
"APPLE_ISSUER_ID": "...",
"APP_STORE_CONNECT_TEAM_ID": "TEAM123456",
"CAPGO_IOS_DISTRIBUTION": "app_store"
}
}
Jendela Terminal
bunx @capgo/cli@latest build credentials save \
--platform android \
--keystore ./release.keystore \
--keystore-alias "my-key-alias" \
--keystore-key-password "KeyPassword123" \
--keystore-store-password "StorePassword123" \
--play-config ./play-store-service-account.json
PilihanDeskripsiWajib
--keystore <path>Alamat file .keystore atau .jksYa (rilis)
--keystore-alias <alias>Alias kunci di keystoreYa (rilis)
--keystore-key-password <password>Kata sandi untuk alias kunciYa (rilis)
--keystore-store-password <password>Kata sandi untuk keystoreYa (rilis)
--play-config <path>Jalur ke file JSON layanan akun Play StoreYa (pengiriman)

Ketika Anda menyimpan kredit Android, CLI:

  1. Membaca file keystore dan JSON akun layanan
  2. Mengubahnya ke encoding base64
  3. Menyimpannya di ~/.capgo-credentials/credentials.json (atau) .capgo-credentials.json bersama dengan --local)
  4. Menyimpan kata sandi dan alias sebagai teks biasa (hanya file lokal)

Struktur file yang disimpan:

{
"android": {
"ANDROID_KEYSTORE_FILE": "...",
"PLAY_CONFIG_JSON": "...",
"KEYSTORE_KEY_ALIAS": "my-key-alias",
"KEYSTORE_KEY_PASSWORD": "...",
"KEYSTORE_STORE_PASSWORD": "..."
}
}

Setelah Anda menyimpan kredensial, mereka secara otomatis digunakan ketika Anda membangun:

Jendela terminal
# Credentials automatically loaded from ~/.capgo-credentials/credentials.json
bunx @capgo/cli@latest build request com.example.app --platform ios

Kamu juga dapat menggantikan kredit yang disimpan menggunakan variabel lingkungan:

Tampilan jendela terminal
# Environment variables take precedence over saved credentials
BUILD_CERTIFICATE_BASE64="..." \
P12_PASSWORD="different-password" \
bunx @capgo/cli@latest build request com.example.app --platform ios

Urutan prioritas:

  1. Variabel lingkungan (prioritas tertinggi)
  2. Kredit yang disimpan (prioritas kedua)~/.capgo-credentials/credentials.jsonKredit yang tidak ada (prioritas terendah) .capgo-credentials.json)
  3. Menggunakan Kredit yang Disimpan

Bab berjudul “Menggunakan Kredit yang Disimpan”

Daftar kredit yang kamu simpan:

Daftar kredit yang kamu simpan:

Jendela Terminal
bunx @capgo/cli@latest build credentials list

Contoh hasil:

📋 Saved Build Credentials:
iOS Credentials:
✓ Certificate (base64)
✓ Provisioning Map (JSON)
✓ Apple Key Content (base64)
✓ P12 Password: ********
✓ Apple Key ID: ABC1234567
✓ Apple Issuer ID: 00000000-0000-0000-0000-000000000000
✓ Team ID: TEAM123456
Android Credentials:
✓ Keystore (base64)
✓ Play Store Config (base64)
✓ Keystore Alias: my-key-alias
✓ Key Password: ********
✓ Store Password: ********
Location: ~/.capgo-credentials/credentials.json
🔒 These credentials are stored locally on your machine only.
When building, they are sent to Capgo but NEVER stored there.
They are auto-deleted after build completion.
  1. Izin Akses File

    Jendela Terminal
    # Global credentials directory + file
    chmod 700 ~/.capgo-credentials
    chmod 600 ~/.capgo-credentials/credentials.json
    # Local (per-project) credentials, if you use --local
    chmod 600 .capgo-credentials.json
  2. Hindari Mengkomit Kredensial

    Jendela terminal
    # Ignore the per-project credentials file (used with --local)
    echo ".capgo-credentials.json" >> .gitignore

    File global hidup di direktori rumah Anda, di luar repo.

  3. Kredensial Terpisah

    • Pakai kredensial yang berbeda untuk pengembangan lokal vs CI/CD
    • Rotasi kredensial secara teratur
    • Jangan berbagi kredensial antar anggota tim

Untuk lingkungan CI/CD, prefer variabel lingkungan atas kredensial yang disimpan.

Judul bagian “Ekspor siap gunakan .env (direkomendasikan)”

Sebaliknya dari meng-encode base64 setiap file kunci secara manual (lihat di bawah) build credentials manage biarkan

menghasilkan file untuk Anda:
bunx @capgo/cli@latest build credentials manage
# pick your app → choose "Export to .env"

Salin ke clipboard .env.capgo.<appId>.<platform> Itu menulis sebuah 0600file (izin akses --platform ios atau --platform android untuk membatasi itu ke satu.

CLI membaca variabel lingkungan berikut untuk kredit:

Kredensial iOS:

VariabelDeskripsiFormatRequrir
BUILD_CERTIFICATE_BASE64Sertifikat P12/PKCS12 untuk code signingBase64Ya (release)
CAPGO_IOS_PROVISIONING_MAPPeta JSON ID aplikasi ke data profil provisioningString JSONYa (release)
P12_PASSWORDKata sandi untuk sertifikat P12Plain textOpsional
APPLE_KEY_IDID Kunci API App Store ConnectString (misalnya “ABC1234567”)Lihat catatan¹
APPLE_ISSUER_IDApp Store Connect API ID PenerbitString UUIDLihat catatan¹
APPLE_KEY_CONTENTApp Store Connect API kunci (.p8 file content)Base64Lihat catatan¹
APP_STORE_CONNECT_TEAM_IDID Tim Pengembang AppleString (misalnya “XXXXXXXXXX”)Iya
CAPGO_IOS_DISTRIBUTIONMode distribusi: app_store (default) atau ad_hocStringTidak

Kredensial Android:

VariabelDeskripsiFormatWajib
ANDROID_KEYSTORE_FILEFile keystore untuk menandatangani APK/AABBase64Ya (rilis)
KEYSTORE_KEY_ALIASAlias kunci di dalam keystoreStringYa (rilis)
KEYSTORE_KEY_PASSWORDKata sandi untuk alias kunciPlain textYa*
KEYSTORE_STORE_PASSWORDKata sandi untuk file keystorePlain textYa*
PLAY_CONFIG_JSONJSON akun layanan Google PlayBase64Ya (pengiriman)

*Jika hanya satu kata sandi yang disediakan, maka akan digunakan untuk kedua-duanya KEYSTORE_KEY_PASSWORD And: dan KEYSTORE_STORE_PASSWORD.

.github/workflows/build.yml: github/workflows/build.yml
name: Cloud Build
on:
push:
branches: [main]
jobs:
build-ios:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2
- run: bun install
- run: bunx @capgo/cli@latest build request com.example.app --platform ios
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
CAPGO_IOS_PROVISIONING_MAP: ${{ secrets.CAPGO_IOS_PROVISIONING_MAP }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }}
build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2
- run: bun install
- run: bunx @capgo/cli@latest build request com.example.app --platform android
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}

To convert your credential files to base64 for CI/CD secrets: Untuk mengubah file kredit Anda ke base64 untuk rahasia CI/CD

Terminal window: Jendela Terminal
# iOS Certificate (.p12)
base64 -i certificate.p12 | tr -d '\n' > certificate_base64.txt
# iOS Provisioning Profiles — use the CLI to generate CAPGO_IOS_PROVISIONING_MAP:
bunx @capgo/cli@latest build credentials save --platform ios \
--ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
# ... other options
# Then copy CAPGO_IOS_PROVISIONING_MAP from ~/.capgo-credentials/credentials.json to your CI secrets
# iOS App Store Connect Key (.p8)
base64 -i AuthKey_XXXXXX.p8 | tr -d '\n' > apple_key_base64.txt
# Android Keystore (.keystore or .jks)
base64 -i release.keystore | tr -d '\n' > keystore_base64.txt
# Google Play Service Account JSON
base64 -i play-store-service-account.json | tr -d '\n' > play_config_base64.txt

Mengapa Variabel Lingkungan Lebih Aman

Bab berjudul “Mengapa Variabel Lingkungan Lebih Aman”

Metode ini lebih aman karena:

  • Rahasia diatur oleh platform CI/CD Anda
  • Tidak ada file kredit di runner
  • Akses kontrol dan rotasi yang mudah
  • Jejak audit untuk penggunaan rahasia

Rotasi kredit secara teratur:

  1. iOS: Buatlah sertifikat baru dan API kunci setiap tahun
  2. Android: Perbarui kata sandi keystore setiap tahun
  3. After team changes: Rotasi setelah anggota tim meninggalkan

Update saved credentials:

Jendela terminal
# Re-run save command with new credentials
bunx @capgo/cli@latest build credentials save --platform ios --certificate ./new-cert.p12 ...

Jika proses build mengatakan tidak ditemukan kredit:

  1. Periksa apakah kredit disimpan:

    Jendela terminal
    bunx @capgo/cli@latest build credentials list
  2. Simpan kredit jika hilang:

    Jendela terminal
    bunx @capgo/cli@latest build credentials save --platform ios ...
  3. Periksa apakah file kredit ada:

    Jendela terminal
    ls -la ~/.capgo-credentials/credentials.json # global
    ls -la .capgo-credentials.json # local (--local)

“Ditolak akses” ketika membaca kredit

Judul bagian “Ditolak akses” saat membaca kreditensi

Perbaiki hak akses file:

Tampilan jendela terminal
chmod 600 ~/.capgo-credentials/credentials.json # global
chmod 600 .capgo-credentials.json # local

Pastikan platform yang benar telah ditetapkan:

Tampilan jendela terminal
# Make sure --platform matches saved credentials
bunx @capgo/cli@latest build request com.example.app --platform ios # Uses ios credentials
bunx @capgo/cli@latest build request com.example.app --platform android # Uses android credentials

Bersihkan dan simpan kembali kreditensi

Judul bagian “Bersihkan dan simpan kembali kreditensi”

Jika kreditensi tampak rusak:

Jendela terminal
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Save again
bunx @capgo/cli@latest build credentials save --platform ios ...

Jika Anda saat ini menggunakan variabel lingkungan, Anda dapat memindahkan ke kredit yang disimpan:

  1. Ekstrak variabel lingkungan Anda saat ini

    Jendela terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Mengembalikan file base64 ke file asli (jika perlu)

    Jendela terminal
    echo "$BUILD_CERTIFICATE_BASE64" | base64 -d > cert.p12
    echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 -d > profile.mobileprovision
  3. Simpan menggunakan CLI

    Jendela terminal
    bunx @capgo/cli@latest build credentials save \
    --platform ios \
    --certificate ./cert.p12 \
    --ios-provisioning-profile ./profile.mobileprovision \
    --p12-password "$P12_PASSWORD" \
    --apple-key-id "$APPLE_KEY_ID" \
    --apple-issuer-id "$APPLE_ISSUER_ID" \
    --apple-team-id "$APP_STORE_CONNECT_TEAM_ID"

    Jika Anda memiliki kredit yang disimpan dalam format lama (satu) BUILD_PROVISION_PROFILE_BASE64, jalankan:

    Jendela terminal
    bunx @capgo/cli@latest build credentials migrate --platform ios

    Ini mengonversi profil lama tunggal ke CAPGO_IOS_PROVISIONING_MAP dan menghapus kunci lama BUILD_PROVISION_PROFILE_BASE64 dan APPLE_PROFILE_NAME Kunci

  4. Tes bangun

    Jendela Terminal
    bunx @capgo/cli@latest build request com.example.app --platform ios
  5. Hapus variabel lingkungan (opsional)

    Jendela Terminal
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

Kredensial disimpan dalam sebuah file JSON tunggal:

  • Global (default): ~/.capgo-credentials/credentials.json — terbagi di semua proyek Anda
  • Local (dengan --local): .capgo-credentials.json dalam direktori root project — menggantikan file global untuk project tersebut

File tersebut dibuat secara otomatis pertama kali Anda menyimpan kredit. Tambahkan .capgo-credentials.json ke dalam .gitignore sehingga kredit per-project tidak pernah dikomit.

  • Mulai - Buat build pertama Anda
  • Build iOS - Konfigurasi build spesifik iOS
  • Konfigurasi Bangun Android - Konfigurasi bangun khusus Android
  • Pembelajaran context: Halaman/area: Halaman dukungan / bagian dukungan premium atau bagian dukungan di footer. Peran: Judul bagian atau halaman. Dilihat di: halaman support-policy.astro. Pesan kunci `support_policy_troubleshooting_title` (Judul Pembelajaran Dukungan)

- Masalah umum dan solusi

Bantuan Diperlukan?

support@__CAPGO_KEEP_0__.app

Teruskan dari Mengelola Kredensial

If Anda menggunakan Menangani Kredensial untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo Otomatisasi CI/CD untuk alur kerja produk di Capgo Otomatisasi CI/CD, Capgo Pembangunan Asli untuk alur kerja produk di Capgo Pembangunan Asli, Capgo Integrasi for the product workflow in Capgo Integrations, untuk alur kerja produk di __CAPGO_KEEP_0__ Integrasi, Integrasi CI/CD GitHub Actions Integration untuk detail implementasi di GitHub Integrasi Aksi.