Lebih cepat ke konten

Mengelola Kredensial

Kelola 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 , yang dibagikan ke semua proyek Anda. Pass ~/.capgo-credentials/credentials.jsonuntuk menjaganya --local untuk menjaganya per-project di .capgo-credentials.json bukan. Ketika Anda menjalankan build, kreditensi yang disimpan digunakan secara otomatis dan dikirimkan dengan aman ke Capgo, kemudian dihapus setelah build selesai.

Cara Termudah untuk Bekerja dengan Kredensial yang Disimpan Anda 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

✅ Dihapus secara otomatis setelah selesai pembangunan
bunx @capgo/cli@latest build credentials manage
OpsiPengenalan
--appId <appId>Aplikasi untuk mengelola (mengajak Anda memilih jika dihilangkan)
--platform <ios|android>Platform untuk mengelola (mengajak jika dihilangkan)
--localGunakan per-proyek .capgo-credentials.json daripada file global

Gunakan perintah skrip tunggal? Gunakan perintah-perintah individu 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 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, 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 BUILD_PROVISION_PROFILE_BASE64 , dan menghapus kunci legasi. Lihat CAPGO_IOS_PROVISIONING_MAPMigrasi dari Profil Tunggal untuk informasi lebih lanjut. Menyimpan Kredensial iOS

Bab yang berjudul “Menyimpan Kredensial iOS”

Migration from Single Profile
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"
OpsiDeskripsiWajib
--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 file kunci App Store Connect API .p8Lihat catatan¹
--apple-key-id <id>App Store Connect API Kunci IDLihat catatan¹
--apple-issuer-id <id>App Store Connect API Pengenal ID (UUID)Lihat catatan¹
--apple-team-id <id>ID Tim App Store ConnectIya
--apple-id <email>Alamat email ID Apple untuk unggah password aplikasi khusus (alternatif dari API kunci)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>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

Bab berjudul “Apa yang Disimpan”

Ketika Anda menyimpan kreditur iOS, __CAPGO_KEEP_0__:

When you save iOS credentials, the CLI:

  1. Mengubahnya ke encoding base64
  2. Membaca file sertifikat dan profil pengembangan
  3. Sunting mereka 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 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 layanan akun Play StoreYa (penyerahan)

Saat Anda menyimpan kredit Android, CLI:

  1. Membaca file keystore dan JSON service account
  2. Mengubahnya ke encoding base64
  3. Menyimpannya di ~/.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 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 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 telah disimpan:

__CAPGO_KEEP_0__

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 Mengkomitasi 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 pakai .env (direkomendasikan)”

Sebagai gantinya 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"

Itu menulis sebuah .env.capgo.<appId>.<platform> file (izin 0600) yang berisi setiap kredit 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 ke satu.

CLI membaca variabel lingkungan berikut untuk kredit:

Kredensial iOS:

VariabelDeskripsiFormatDiperlukan
BUILD_CERTIFICATE_BASE64Sertifikat P12/PKCS12 untuk code tanda tanganBase64Ya (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 App Store Connect APIString (misalnya “ABC1234567”)Lihat catatan¹
APPLE_ISSUER_IDID Penerbit App Store Connect APIString UUIDLihat catatan¹
APPLE_KEY_CONTENTKunci App Store Connect API (.p8 file content)Base64Lihat catatan¹
APP_STORE_CONNECT_TEAM_IDID Tim Pengembang AppleString (misalnya “XXXXXXXXXX”)Ya
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 kata sandi satu 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

Rotasikan kredit Anda secara teratur:

  1. iOSMenghasilkan sertifikat baru dan API kunci setiap tahun
  2. AndroidMengubah kata sandi keystore setiap tahun
  3. Setelah perubahan timMengganti kunci setiap kali 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 ...

”Tidak ada kreditensi ditemukan”

Bagian berjudul “Tidak Ditemukan Kredensial””

Jika proses build mengatakan tidak ditemukan kredensial:

  1. Periksa apakah kredensial disimpan:

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

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

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

“Ditolak Akses” ketika membaca kredensial

Bagian berjudul “Ditolak Akses” saat membaca kreditensi

Pemulihan hak akses file:

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

Periksa bahwa 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

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. Kembalikan file base64 ke file asli (jika perlu) Jendela terminal

    Salin ke clipboard
    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_BASE64, jalankan:

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

    Ini mengubah format profil tunggal ke format CAPGO_IOS_PROVISIONING_MAP dan menghapus kunci lama BUILD_PROVISION_PROFILE_BASE64 dan APPLE_PROFILE_NAME Test build

  4. dan

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

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

- Masalah umum dan solusi

Bantuan?

support@__CAPGO_KEEP_0__.app

Teruskan dari Mengelola Kredensial

If Anda menggunakan Menangani Kredensial untuk merencanakan otomatisasi CI/CD, hubungkan dengan Capgo Otomatisasi CI/CD untuk alur kerja produk di Capgo Otomatisasi CI/CD, Capgo Bangun Natively untuk alur kerja produk di Capgo Bangun Natively, 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.