Lebih cepat ke konten

Menangani 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 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 dengan menggunakan manajer interaktif. Manajer 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 dalam format CI/CD-ready .env file, atau hapus kredit platform:

Salin ke clipboard
bunx @capgo/cli@latest build credentials manage
PilihanDeskripsi
--appId <appId>Aplikasi untuk mengelola (mengajak Anda memilih jika dihilangkan)
--platform <ios|android>Platform untuk mengelola (mengajak jika ditinggalkan)
--localGunakan file per-proyek .capgo-credentials.json Sebaliknya, gunakan file global

Gunakan perintah skrip tunggal? Gunakan perintah-perintah individu di bawah ini.

Simpan kredensial pembangunan Anda secara lokal untuk penggunaan otomatis:

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

Perbarui kredensial yang sudah ada tanpa harus menyediakan semuanya lagi:

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

The update penggunaan perintah Perintah ini menggunakan Untuk profil pengaturan — profil baru akan digabungkan dengan profil 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 menerima opsi yang sama seperti save tetapi semua itu 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 kreditensi 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 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"
OptionDeskripsiDiperlukan
--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 menginfers dari profil.Ya (rilis)
--apple-key <path>Jalur ke kunci App Store Connect API .p8Lihat catatan¹
--apple-key-id <id>ID Kunci App Store Connect APILihat catatan¹
--apple-issuer-id <id>App Store Connect API ID Penerbit (UUID)Lihat catatan¹
--apple-team-id <id>ID Tim App Store ConnectYa
--apple-id <email>Alamat email ID Apple untuk unggah password aplikasi (alternatif dari kunci API)Lihat catatan²
--apple-app-specific-password <password>Perhatikan catatan²xxxx-xxxx-xxxx-xxxx)Lihat catatan²
--apple-app-id <id>ID Aplikasi Toko Aplikasi Nomor (misalnya 1234567890)Lihat catatan²
--ios-distribution <mode>Mode Distribusi: app_store (default) atau ad_hocTidak
--output-uploadAktifkan tautan download sementara Capgo untuk artefak buildTidak (default:) false)
--output-retention <seconds>Berapa lama untuk menjaga keluaran build (misalnya) 3600s)Tidak (default:) 3600s)
--skip-build-number-bumpLewati peningkatan otomatis nomor buildTidak

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 dengan --local)
  4. Mengarsipkan 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
OptionPilihanDeskripsi
--keystore <path>Lokasi file .keystore atau .jksYa (rilis)
--keystore-alias <alias>Alias kunci di keystoreYes (rilis)
--keystore-key-password <password>Kata sandi untuk alias kunciYes (rilis)
--keystore-store-password <password>Kata sandi untuk keystoreYes (rilis)
--play-config <path>Jalur ke file JSON akun layanan Play StoreYes (pengiriman)

Saat Anda menyimpan kredit Android, CLI:

  1. Membaca file keystore dan JSON akun layanan
  2. Mengubahnya ke encoding base64
  3. Menyimpannya 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": "..."
}
}

Setelah Anda menyimpan akun, 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 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. Melihat Kredit yang Disimpan

Bagian berjudul “Melihat 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

    Tampilan 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 Mengkomitasi Kredensial

    Tampilan 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

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

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

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

Menulis file (izin .env.capgo.<appId>.<platform> file (izin akses) 0600) containing every saved credential as an environment variable — each line is one secret to add to your CI/CD provider. Both platforms are combined by default; add --platform ios or --platform android Untuk membatasi skopnya ke satu.

CLI membaca variabel lingkungan berikut untuk kredit:

Kredensial iOS:

VariabelDeskripsiFormatWajib
BUILD_CERTIFICATE_BASE64Sertifikat P12/PKCS12 untuk tanda tangan codeBase64Ya (rilis)
CAPGO_IOS_PROVISIONING_MAPPeta JSON ID aplikasi ke data profil pengaturanString JSONYa (rilis)
P12_PASSWORDKata sandi untuk sertifikat P12Teks biasaOpsional
APPLE_KEY_IDID Kunci API App Store ConnectString (misalnya, &quot;ABC1234567&quot;)Lihat catatan¹
APPLE_ISSUER_IDApp Store Connect API ID PengembangString UUIDLihat catatan¹
APPLE_KEY_CONTENTKunci App Store Connect API (.file p8 konten)Base64Lihat catatan¹
APP_STORE_CONNECT_TEAM_IDID Tim Pengembang AppleString (misalnya, &quot;XXXXXXXXXX&quot;)Ya
CAPGO_IOS_DISTRIBUTIONMode 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/kerja/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:

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

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 proses build mengatakan tidak ada kredensial yang ditemukan:

  1. Cek apakah kreditensi disimpan:

    Jendela terminal
    bunx @capgo/cli@latest build credentials list
  2. Cek apakah kreditensi disimpan jika hilang:

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

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

“Ditolak akses” ketika membaca kreditensi

Bagian berjudul “Ditolak akses” ketika membaca kreditensi

Perbaiki hak akses file:

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

Pastikan 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. Mengurai file base64 kembali ke file asli (jika perlu)

    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 dalam format lama (satu) BUILD_PROVISION_PROFILE_BASE64Jalankan:

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

    Konversi ini mengubah format lama satu-profil menjadi CAPGO_IOS_PROVISIONING_MAP dan menghapus kunci lama BUILD_PROVISION_PROFILE_BASE64 dan APPLE_PROFILE_NAME Uji bangun

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

Jika Anda menggunakan Manajemen 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 Aksi Integrasi.