跳转到内容

管理凭证

在本地管理您的 iOS 和 Android 构建凭证以方便云构建。

Capgo CLI 允许您在 .capgo-credentials 文件夹中本地保存构建凭证。当您运行构建时,这些凭证会自动使用并安全地发送到 Capgo 的构建服务器。

本地存储您的构建凭证以自动使用:

Terminal window
npx @capgo/cli build credentials save --platform <ios|android> [options]

查看当前保存的凭证(密码已屏蔽):

Terminal window
npx @capgo/cli build credentials list

从本地机器删除已保存的凭证:

Terminal window
# 清除所有凭证
npx @capgo/cli build credentials clear
# 仅清除 iOS 凭证
npx @capgo/cli build credentials clear --platform ios
# 仅清除 Android 凭证
npx @capgo/cli build credentials clear --platform android
Terminal window
npx @capgo/cli build credentials save \
--platform ios \
--certificate ./cert.p12 \
--p12-password "YourP12Password" \
--provisioning-profile ./profile.mobileprovision \
--apple-key ./AuthKey_ABC1234567.p8 \
--apple-key-id "ABC1234567" \
--apple-issuer-id "00000000-0000-0000-0000-000000000000" \
--apple-team-id "TEAM123456"
选项描述必需
--certificate <path>.p12 证书文件的路径是(发布版本)
--p12-password <password>.p12 证书的密码是(发布版本)
--provisioning-profile <path>.mobileprovision 文件的路径是(发布版本)
--provisioning-profile-prod <path>生产配置文件(可选)
--apple-key <path>App Store Connect API .p8 密钥的路径是(提交)
--apple-key-id <id>App Store Connect API 密钥 ID是(提交)
--apple-issuer-id <id>App Store Connect API 发行者 ID (UUID)是(提交)
--apple-team-id <id>App Store Connect 团队 ID是(提交)
--apple-id <email>Apple ID 电子邮件(替代认证)
--apple-app-password <password>应用专用密码(替代认证)

当您保存 iOS 凭证时,CLI 会:

  1. 读取证书和配置文件文件
  2. 将它们转换为 base64 编码
  3. 将凭证保存到 .capgo-credentials 文件夹
  4. 将密码和 ID 存储为纯文本(仅限本地文件)

存储的文件结构:

{
"ios": {
"BUILD_CERTIFICATE_BASE64": "...",
"BUILD_PROVISION_PROFILE_BASE64": "...",
"APPLE_KEY_CONTENT": "...",
"P12_PASSWORD": "...",
"APPLE_KEY_ID": "ABC1234567",
"APPLE_ISSUER_ID": "...",
"APP_STORE_CONNECT_TEAM_ID": "TEAM123456"
}
}
Terminal window
npx @capgo/cli 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
选项描述必需
--keystore <path>.keystore 或 .jks 文件的路径是(发布版本)
--keystore-alias <alias>密钥库中的密钥别名是(发布版本)
--keystore-key-password <password>密钥别名的密码是(发布版本)
--keystore-store-password <password>密钥库的密码是(发布版本)
--play-config <path>Play 商店服务账户 JSON 的路径是(提交)

当您保存 Android 凭证时,CLI 会:

  1. 读取密钥库和服务账户 JSON 文件
  2. 将它们转换为 base64 编码
  3. 将凭证保存到 .capgo-credentials 文件夹
  4. 将密码和别名存储为纯文本(仅限本地文件)

存储的文件结构:

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

保存凭证后,在构建时会自动使用:

Terminal window
# 凭证自动从 .capgo-credentials 文件夹加载
npx @capgo/cli build com.example.app --platform ios

您也可以使用环境变量覆盖已保存的凭证:

Terminal window
# 环境变量优先于已保存的凭证
BUILD_CERTIFICATE_BASE64="..." \
P12_PASSWORD="different-password" \
npx @capgo/cli build com.example.app --platform ios

优先级顺序:

  1. 环境变量(最高优先级)
  2. .capgo-credentials 文件夹中的已保存凭证
  3. 无凭证(最低优先级)

列出您已保存的凭证:

Terminal window
npx @capgo/cli build credentials list

示例输出:

📋 已保存的构建凭证:
iOS 凭证:
✓ 证书 (base64)
✓ 配置文件 (base64)
✓ Apple 密钥内容 (base64)
✓ P12 密码: ********
✓ Apple 密钥 ID: ABC1234567
✓ Apple 发行者 ID: 00000000-0000-0000-0000-000000000000
✓ 团队 ID: TEAM123456
Android 凭证:
✓ 密钥库 (base64)
✓ Play 商店配置 (base64)
✓ 密钥库别名: my-key-alias
✓ 密钥密码: ********
✓ 存储密码: ********
位置: .capgo-credentials/
🔒 这些凭证仅存储在您的本地机器上。
构建时,它们会发送到 Capgo 但永远不会存储在那里。
构建完成后自动删除(最多 24 小时)。
  1. 文件权限

    Terminal window
    # 确保凭证文件夹不被其他人读取
    chmod 700 .capgo-credentials
    chmod 600 .capgo-credentials/*
  2. 切勿提交凭证

    Terminal window
    # 添加到 .gitignore
    echo ".capgo-credentials/" >> .gitignore
  3. 分离凭证

    • 本地开发和 CI/CD 使用不同的凭证
    • 定期轮换凭证
    • 不要在团队成员之间共享凭证

对于 CI/CD 环境,优先使用环境变量而不是已保存的凭证:

# GitHub Actions
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.IOS_CERTIFICATE }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
# ... 其他密钥

这更安全,因为:

  • 密钥由 CI/CD 平台管理
  • 运行器上没有凭证文件
  • 易于轮换和访问控制
  • 密钥使用的审计跟踪

定期轮换您的凭证:

  1. iOS: 每年生成新证书和 API 密钥
  2. Android: 每年更改密钥库密码
  3. 团队变更后: 团队成员离开时轮换

更新已保存的凭证:

Terminal window
# 使用新凭证重新运行保存命令
npx @capgo/cli build credentials save --platform ios --certificate ./new-cert.p12 ...

如果构建说找不到凭证:

  1. 检查是否保存了凭证:

    Terminal window
    npx @capgo/cli build credentials list
  2. 如果缺少凭证则保存:

    Terminal window
    npx @capgo/cli build credentials save --platform ios ...
  3. 验证凭证文件夹是否存在:

    Terminal window
    ls -la .capgo-credentials/

修复文件权限:

Terminal window
chmod 700 .capgo-credentials
chmod 600 .capgo-credentials/*

检查是否指定了正确的平台:

Terminal window
# 确保 --platform 与已保存的凭证匹配
npx @capgo/cli build com.example.app --platform ios # 使用 ios 凭证
npx @capgo/cli build com.example.app --platform android # 使用 android 凭证

如果凭证似乎已损坏:

Terminal window
# 清除所有凭证
npx @capgo/cli build credentials clear
# 重新保存
npx @capgo/cli build credentials save --platform ios ...

如果您当前使用环境变量,可以迁移到已保存的凭证:

  1. 提取当前环境变量

    Terminal window
    echo $BUILD_CERTIFICATE_BASE64 # 验证它们存在
  2. 将 base64 文件解码回原始文件(如果需要)

    Terminal window
    echo "$BUILD_CERTIFICATE_BASE64" | base64 -d > cert.p12
    echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 -d > profile.mobileprovision
  3. 使用 CLI 保存

    Terminal window
    npx @capgo/cli build credentials save \
    --platform ios \
    --certificate ./cert.p12 \
    --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"
  4. 测试构建

    Terminal window
    npx @capgo/cli build com.example.app --platform ios
  5. 删除环境变量(可选)

    Terminal window
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

凭证存储在 .capgo-credentials 文件夹中:

  • macOS/Linux: .capgo-credentials/(在您的项目根目录或主目录)
  • Windows: .capgo-credentials\(在您的项目根目录或主目录)

首次保存凭证时会自动创建该文件夹。