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, file, ~/.capgo-credentials/credentials.jsonDapat digunakan secara bersamaan di semua proyek Anda. --local per-proyek per-proyek di .capgo-credentials.json atau. Ketika Anda menjalankan build, kredit yang disimpan digunakan secara otomatis dan dikirimkan dengan aman ke Capgo, kemudian dihapus setelah build selesai.

Manajer interaktif adalah cara tercepat untuk bekerja dengan kreditensi yang disimpan Anda. Ini membuka TUI (yang sama seperti) build init Penggunaan) di mana Anda dapat melihat apa yang disimpan, melihat apa yang dikonfigurasi per aplikasi dan platform, dan mengexport siap untuk CI/CD .env file, atau hapus kredit platform:

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

Gunakan perintah tunggal, skripabel? Gunakan perintah-perintah di bawah ini.

Simpan kredensial pembangunan Anda secara lokal untuk penggunaan otomatis:

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

Perbarui 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 ini menggunakan penyatuan tambahan untuk profil penyediaan — profil baru disatukan dengan profil yang sudah ada. Untuk mengganti seluruh peta 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 dapat menerima opsi yang sama seperti save tetapi semua itu opsional — hanya bidang yang Anda berikan saja yang diperbarui.

Tampilkan 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 migrate mendeteksi versi lama BUILD_PROVISION_PROFILE_BASE64 Migrasi dari Profil Tunggal CAPGO_IOS_PROVISIONING_MAPuntuk informasi lebih lanjut. Menyimpan Kredensial iOS Migrasi Kredensial iOS

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"
PilihanDeskripsiDiperlukan
--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 diinfers dari profil.Ya (rilis)
--apple-key <path>Jalur ke kunci .p8 App Store Connect APILihat catatan¹
--apple-key-id <id>ID Kunci App Store Connect APILihat catatan¹
--apple-issuer-id <id>App Store Connect API ID Pengembang (UUID)Lihat catatan¹
--apple-team-id <id>ID Tim App Store ConnectYa
--apple-id <email>kontak email ID Apple untuk unggah password aplikasi (alternatif dari API key)Lihat catatan²
--apple-app-specific-password <password>Password aplikasi (xxxx-xxxx-xxxx-xxxx)Lihat catatan²
--apple-app-id <id>ID Aplikasi App Store Connect (misalnya 1234567890)Lihat catatan²
--ios-distribution <mode>Mode distribusi: app_store (default) atau ad_hoc(default)
--output-uploadEnable a time-limited Capgo download link for the build artifactTidak (default:) false)
--output-retention <seconds>How long to keep build outputs (e.g. 3600s)Tidak (default:) 3600s)
--skip-build-number-bumpBerapa lama untuk menjaga keluaran build (misalnya(default)

Ketika Anda menyimpan kunci iOS, CLI:

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

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
OpsiDeskripsiDiperlukan
--keystore <path>Jalur ke 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 akun layanan Play StoreYa (pengiriman)

Ketika Anda menyimpan kredit Android, CLI:

  1. Membaca file keystore dan JSON akun layanan
  2. Mengonversi mereka ke encoding base64
  3. Menyimpan mereka ke ~/.capgo-credentials/credentials.json (atau .capgo-credentials.json context --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": "..."
}
}

Struktur file yang disimpan:

Menggunakan Kredensial yang Disimpan

Setelah Anda menyimpan kredit, mereka akan digunakan secara otomatis ketika Anda membangun:

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

Anda juga dapat menggantikan kredit yang disimpan menggunakan variabel lingkungan:

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 keutamaan:

  1. Variabel lingkungan (prioritas tertinggi)
  2. Kredit yang disimpan (prioritas kedua)~/.capgo-credentials/credentials.jsonatau lokal .capgo-credentials.json)
  3. Mengamati Kredit yang Disimpan

Bagian berjudul “Mengamati Kredit yang Disimpan”

Daftar kredit yang Anda simpan:

Daftar kredit yang disimpan:

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. Jangan Pernah Mengirimkan Kredensial

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

    File global berada 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 dengan anggota tim

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

Sebaliknya dari meng-encode setiap file kredit secara manual dengan tangan (lihat di bawah) build credentials manage menghasilkan file untuk Anda:

Jendela Terminal
bunx @capgo/cli@latest build credentials manage
# pick your app → choose "Export to .env"

Itu menulis sebuah .env.capgo.<appId>.<platform> file (izin akses) 0600) yang berisi setiap kredit yang disimpan sebagai variabel lingkungan — setiap baris adalah satu rahasia untuk menambahkan ke penyedia CI/CD Anda. Kedua platform kombinasi secara default; tambahkan --platform ios atau --platform android Untuk membatasi skopnya ke satu.

CLI membaca variabel lingkungan berikut untuk kredensial:

Kredensial iOS:

VariabelDeskripsiFormatWajib
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 P12KredensialPilihan
APPLE_KEY_IDID API App Store ConnectString (misalnya "ABC1234567")Lihat catatan¹
APPLE_ISSUER_IDAplikasi Store Connect API ID PengembangString UUIDLihat catatan¹
APPLE_KEY_CONTENTAplikasi Store Connect API kunci (.p8 file content)Base64Lihat catatan¹
APP_STORE_CONNECT_TEAM_IDID Tim Pengembang AppleString (misalnya, “XXXXXXXXXX”)Ya
CAPGO_IOS_DISTRIBUTIONDistribusi mode: 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 nama alias kunciTeks biasaYa*
KEYSTORE_STORE_PASSWORDKata sandi untuk file keystoreTeks biasaYa*
PLAY_CONFIG_JSONJSON akun layanan Google PlayBase64Ya (pengiriman)

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

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 }}

Untuk mengubah file kunci Anda ke base64 untuk rahasia CI/CD:

Tampilan 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 pada runner
  • Akses kontrol dan rotasi yang mudah
  • Jejak audit untuk penggunaan rahasia

Rotasikan kredit Anda secara teratur:

  1. iOS: Buat sertifikat baru dan API kunci setiap tahun
  2. Android: Ubah kata sandi keystore setiap tahun
  3. : Setelah perubahan tim: Rotasi ketika anggota tim meninggalkan

: Perbarui kreditensi yang disimpan:

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

Jika pembangunan mengatakan tidak ada kredit yang ditemukan:

  1. Cek 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)

Perbaiki hak akses file:

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

Periksa bahwa platform yang benar telah ditentukan:

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

Jika kredensial 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 memigrasikan ke kredit yang disimpan:

  1. Ekstrak variabel lingkungan Anda saat ini

    Tampilan jendela terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Decodifikasi file base64 kembali ke file asli (jika diperlukan)

    Tampilan 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 sebelumnya dalam format lama (satu) BUILD_PROVISION_PROFILE_BASE64run:

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

    Perintah ini mengonversi profil lama ke profil CAPGO_IOS_PROVISIONING_MAP dan menghapus kunci lama BUILD_PROVISION_PROFILE_BASE64 dan APPLE_PROFILE_NAME keys.

  4. Tes Konfigurasi

    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 proyek Anda — menggantikan file global untuk proyek tersebut

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

Judul bagian “Teruskan dari Mengelola Kredensial” Pengelolaan Kredensial untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo CI/CD untuk alur kerja produk di Capgo Otomatisasi CI/CD, Capgo Bangun Natively untuk alur kerja produk di Capgo Bangun Natively, Capgo Integrasi untuk alur kerja produk di Capgo Integrations, untuk alur kerja produk di __CAPGO_KEEP_0__ Integrasi, untuk detail implementasi di Integrasi CI/CD, dan GitHub Actions Integration Untuk detail implementasi di GitHub Integrasi Aksi.