Lompat ke konten

Mengelola Kredensial

Manajemen kunci build iOS dan Android Anda secara lokal untuk memudahkan build di cloud.

Capgo CLI menyimpan kunci build Anda di mesin Anda — tidak pernah di server Capgo . Dengan default mereka hidup di satu file global yang dipakai bersama semua proyek Anda. Anda dapat ~/.capgo-credentials/credentials.jsonmenggunakan mereka --local per-proyek untuk menjaga mereka di satu file per proyek .capgo-credentials.json Ketika Anda menjalankan build, kreditensi yang disimpan digunakan secara otomatis dan dikirimkan secara aman ke Capgo, kemudian dihapus setelah build selesai.

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

Salin ke clipboard
bunx @capgo/cli@latest build credentials manage
Deskripsi__CAPGO_KEEP_0__
--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 daripada file global

Lebih suka perintah satu-satunya, yang dapat dieksekusi secara skrip? Gunakan perintah-perintah individu di bawah.

Simpan kredensial pembangunan Anda secara lokal untuk penggunaan otomatis:

Jendela Terminal
bunx @capgo/cli@latest build credentials save --platform <ios|android> [options]

Tanpa harus memasukkan semua kembali, Anda dapat memperbarui kredit yang sudah ada:

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

The update perintah ini menggunakan penyatuan tambahan untuk profil pengaturan — profil baru disatukan dengan yang sudah ada. Untuk mengganti seluruh peta pengaturan, tambahkan --overwrite-ios-provisioning-map.

Contoh — tambahkan profil ekstensi ke kredit yang sudah ada:

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 semua opsi yang sama seperti save tetapi semua opsi tersebut opsional — hanya field 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

Konversi format tunggal profil ke masa depan format multi-target:

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

Komando migrasi mendeteksi BUILD_PROVISION_PROFILE_BASE64 kredensial lama, mengubahnya ke CAPGO_IOS_PROVISIONING_MAP, dan menghapus kunci lama. Lihat Migrasi dari Profil Tunggal untuk detailnya.

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"
PilihanDeskripsiWajib
--certificate <path>Path ke file sertifikat .p12Ya (rilis)
--p12-password <password>Kata sandi untuk sertifikat .p12Ya (rilis)
--ios-provisioning-profile <mapping>Peta profil provisioning (bundleId=path). Ulangi untuk aplikasi multi-target. Jika hanya ada satu profil dan tidak ada prefix bundleId, CLI secara otomatis diinfer dari profil.Ya (rilis)
--apple-key <path>Path ke App Store Connect API .p8 keyLihat catatan¹
--apple-key-id <id>ID Sertifikat 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>Alamat email ID Apple untuk unggah password aplikasi khusus (alternatif dari API key)Lihat catatan²
--apple-app-specific-password <password>Password aplikasi khusus (xxxx-xxxx-xxxx-xxxx)Lihat catatan²
--apple-app-id <id>ID aplikasi App Store Connect numerik (misalnya 1234567890)Lihat catatan²
--ios-distribution <mode>Mode distribusi: app_store (default) atau ad_hocTidak
--output-uploadAktifkan tautan download sementara untuk artefak build selama Capgo hariTidak (default: false)
--output-retention <seconds>Berapa lama untuk menjaga keluaran build (misalnya, 3600s)Tidak (default: 3600s)
--skip-build-number-bumpLepaskan otomatis peningkatan nomor buildTidak

Ketika Anda menyimpan kreditur 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 dengan --local)
  4. Mengarsipkan kata 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>Rute 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 akun JSON layanan Play StoreYa (pengiriman)

Saat Anda menyimpan kredit Android, CLI:

  1. Membaca file keystore dan akun JSON layanan
  2. Mengubahnya ke encoding base64
  3. Menyimpannya ke ~/.capgo-credentials/credentials.json (atau .capgo-credentials.json 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

Anda juga dapat menggantikan kredensial 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. Kredensial yang disimpan (~/.capgo-credentials/credentials.json, atau lokal .capgo-credentials.json)
  3. Tidak ada kredensial (prioritas terendah)

Daftar kredensial yang Anda simpan:

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

Contoh output:

📋 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 hidup di direktori rumah Anda, di luar repo.

  3. Kredensial Terpisah

    • Gunakan 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 lebih baik dari kredensial yang disimpan.

Daripada meng-encode setiap file kredential secara manual dengan base64 (lihat di bawah), biarkan build credentials manage mengenerate file tersebut untuk Anda:

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

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

CLI membaca variabel lingkungan berikut untuk kredit:

Kredensial iOS:

VariabelDeskripsiFormatWajib
BUILD_CERTIFICATE_BASE64Sertifikat P12/PKCS12 untuk code signingBase64Ya (rilis)
CAPGO_IOS_PROVISIONING_MAPPeta JSON dari ID aplikasi ke data profil pengaturanString JSONYa (rilis)
P12_PASSWORDKata sandi untuk sertifikat P12Tekstanya sederhanaPilihan
APPLE_KEY_IDID Kunci API App Store ConnectString (misalnya, 'ABC1234567')Lihat catatan¹
APPLE_ISSUER_IDApp Store Connect API ID PengembangString UUIDLihat catatan¹
APPLE_KEY_CONTENTApp Store Connect API kunci (.p8 file content)Base64Lihat catatan¹
APP_STORE_CONNECT_TEAM_IDID Tim Pengembang AppleString (misalnya, “XXXXXXXXXX”)Ya
CAPGO_IOS_DISTRIBUTIONPengaturan Distribusi: app_store (default) atau ad_hocStringTidak

Kredensial Android:

VariabelDeskripsiFormatDiperlukan
ANDROID_KEYSTORE_FILEFile keystore untuk menandatangani APK/AABBase64Ya (rilis)
KEYSTORE_KEY_ALIASAlias kunci di dalam keystoreStringYa (rilis)
KEYSTORE_KEY_PASSWORDKata sandi untuk 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 mengonversi file kunci Anda ke base64 untuk rahasia CI/CD:

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

Ini adalah pendekatan yang 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: Buat sertifikat baru dan API kunci setiap tahun
  2. AndroidUbahlah kata sandi keystore setiap tahun
  3. Setelah perubahan tim: Rotasikan 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 build mengatakan tidak ada kreditensi yang ditemukan:

  1. Periksa apakah kreditur disimpan:

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

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

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

“Permission denied” when reading credentials

Tolak akses ketika membaca kreditur

Judul bagian “Tolak akses ketika membaca kreditur”

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

Migrasi dari Variabel Lingkungan

Judul: Migrasi dari Variabel Lingkungan

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

  1. Ambil variabel lingkungan Anda saat ini

    Jendela terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Kembalikan file base64 ke file asli (jika perlu) (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 BUILD_PROVISION_PROFILE_BASE64 dan APPLE_PROFILE_NAME kunci lama.

  4. Uji 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 — digunakan secara bersamaan di semua proyek Anda
  • Local (dengan --local): .capgo-credentials.json di root project Anda — menggantikan file global untuk project tersebut

File ini dibuat secara otomatis pertama kali Anda menyimpan kunci akses. Tambahkan .capgo-credentials.json ke .gitignore jadi kunci akses per-project tidak pernah dikomit.

Jika Anda menggunakan Pengelolaan 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 untuk alur kerja produk di Capgo Integrasi, Integrasi CI/CD untuk detail implementasi di Integrasi CI/CD, dan GitHub Integrasi Aksi untuk detail implementasi di GitHub Integrasi Aksi.