You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fastlane Match与Azure DevOps Pipeline中获取并使用Bearer令牌?

解决Azure Pipeline中Fastlane Match访问证书仓库的问题

方案一:使用Bearer令牌(HTTPS方式)

一、生成有效PAT(Bearer令牌)

  • 登录Azure DevOps,进入个人资料 → 安全 → 个人访问令牌(PAT)
  • 创建新PAT:
    • 设置有效期(按需选择,建议不要过长)
    • 权限范围勾选代码(读取&写入)(Match需要克隆、推送证书仓库)
    • 创建后立即复制PAT,这是唯一可查看的机会,妥善保存

二、本地环境测试配置

在Fastfile中直接配置HTTPS仓库地址和bearer参数:

match(
  type: "appstore", # 可替换为development/adHoc,按需选择
  git_url: "https://dev.azure.com/[组织名]/[项目名]/_git/[证书仓库名]",
  git_bearer_authorization: "[你的PAT]",
  app_identifier: ["com.yourapp.target1", "com.yourapp.target2"], # 多目标配置
  # 其他Match参数按需添加
)

注意:无需对PAT做Base64编码,直接使用原始字符串即可

三、Azure Pipeline集成

  1. 将PAT存入Pipeline的变量组或保密变量,勾选「保密」选项防止明文泄露
  2. 在YAML中引用变量:
variables:
  - group: 证书仓库权限组 # 或直接定义变量:FASTLANE_MATCH_GIT_BEARER_AUTHORIZATION: $(你的PAT变量名)
  1. 修改Fastfile读取环境变量,避免硬编码:
match(
  type: "appstore",
  git_url: "https://dev.azure.com/[组织名]/[项目名]/_git/[证书仓库名]",
  git_bearer_authorization: ENV["FASTLANE_MATCH_GIT_BEARER_AUTHORIZATION"],
  app_identifier: ["com.yourapp.target1", "com.yourapp.target2"],
)
  1. 确保Pipeline代理能正常访问Azure DevOps的HTTPS地址,无特殊网络限制

方案二:使用SSH方式(git@ URL)

一、生成SSH密钥对(本地操作)

打开终端执行命令,一路回车生成密钥对(默认路径~/.ssh/id_ed25519):

ssh-keygen -t ed25519 -C "你的关联邮箱"

二、配置Azure DevOps公钥

  • 进入证书仓库 → 设置 → 存储库权限,添加Pipeline使用的账号(个人账号或服务账号),权限设为读取&写入
  • 进入该账号的个人资料 → 安全 → SSH公钥,上传本地生成的id_ed25519.pub文件内容

三、Pipeline中配置SSH密钥

  1. 将本地生成的私钥(id_ed25519文件内容)存入Pipeline的保密变量,若存在换行符可先做Base64编码避免格式问题
  2. 在YAML中添加InstallSSHKey任务(需放在Fastlane任务之前):
steps:
  - task: InstallSSHKey@0
    inputs:
      sshPublicKey: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... 你的公钥内容'
      sshPrivateKey: '$(你的私钥保密变量名)'
      knownHostsEntry: 'ssh.dev.azure.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl'

说明:knownHostsEntry可通过本地执行ssh-keyscan ssh.dev.azure.com获取,避免主机验证弹窗

四、Fastfile配置SSH仓库地址

match(
  type: "appstore",
  git_url: "git@ssh.dev.azure.com:v3/[组织名]/[项目名]/[证书仓库名]",
  app_identifier: ["com.yourapp.target1", "com.yourapp.target2"],
  # 其他Match参数按需添加
)

注意事项

  • Bearer令牌方案更适合CI环境,权限可控性强,无需管理密钥对
  • SSH方案需严格保障私钥安全,避免泄露
  • 两种方案都必须确保Pipeline使用的账号拥有证书仓库的读写权限

内容的提问来源于stack exchange,提问作者Robin Macharg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:23:19