iOS开发证书自动管理

image.png

手动管理的缺点

目前管理方式是手动管理,新设备需要参与开发项目时,需要从别的电脑上导出 p12 文件和描述文件。证书过期时也要手动进行响应处理,多个项目、多团队时情况更加糟糕 ?,相信大家都有体会。而 fastlane 中的 match 解决了所有的问题。

证书自动管理的原理

开发一个应用时,团队中会有一个人A来创建开发证书、生成证书及相应的 provisioning profile 文件,这些文件存在这个人的电脑上。当其他人参与开发时,需要这个人导出相关文件给其他人。如果说这个人在完成申请工作之后,将这些文件存放到一个 git 仓库中,那么其他人参与开发时就可以直接克隆这个仓库并安装这些文件,那么就不需要A来导出文件了。当证书过期、provisioning profile 更新之后都同步到 git 仓库中,其他人就不需要关心证书问题了。

手动实现这些还是有些麻烦的,match 就是为此而生。matchcodesigning.guide 概念的实现。match 创建所有必需的证书和配置文件,并将它们存储在单独的git存储库中。每个有权访问仓库的团队成员都可以使用这些凭据进行代码签名。match 还会自动修复损坏和过期的凭据。这是跨团队共享签名凭据的最简单方法。

使用 match

准备工作

  1. 创建一个 私有 的 git 仓库,务必确保是私有的,否则将造成信息泄露!

  2. 创建一个共享的 Apple Developer 账号(个人开发者账号除外),此步骤为可选步骤

  3. 在项目目录下执行 fastlane match init

    根据提示输入相关信息,此命令不会获取或者修改你的证书和配置文件,只是生成生成一个 matchfile 文件, 其内容大致如下:

    git_url("git@git.xxxx.cn:repo/certificateManagement.git")
    
    storage_mode("git")
    
    type("development") # The default type, can be: appstore, adhoc, enterprise or development
    
    # app_identifier(["tools.fastlane.app", "tools.fastlane.app2"])
    # username("user@fastlane.tools") # Your Apple Developer Portal username
    
    # For all available options run `fastlane match --help`
    # Remove the # in the beginning of the line to enable the other options
    
    # The docs are available on https://docs.fastlane.tools/actions/match
    复制代码

将项目的证书纳入自动管理

如果不想被现有的证书的配置文件干扰视线,有一个清爽的的开始,可以清除现有的配置文件和证书,该步骤为可选步骤。

使用下面的命令来生成相应的证书和配置文件

fastlane match development
fastlane match adhoc
fastlane match appstore
复制代码

如果想将多个团队的证书存放到同一个仓库中,需要指定分支名,如下面的 sll。

 fastlane match appstore --git_branch sll 
 fastlane match development --git_branch sll
 fastlane match adhoc --git_branch sll
复制代码

过程中会让你设置一个密码,该密码为仓库中 .p12 文件的密码,需要将此密码填写到 matchfile 文件中,更新后的 matchfile 文件如下:

git_url("git@git.xxxx.cn:repo/certificateManagement.git")

storage_mode("git")

type("development") # The default type, can be: appstore, adhoc, enterprise or development

ENV["MATCH_PASSWORD"] = "your match password" #Password for the .p12 files saved in git repo.

# app_identifier(["tools.fastlane.app", "tools.fastlane.app2"])
# username("user@fastlane.tools") # Your Apple Developer Portal username

# For all available options run `fastlane match --help`
# Remove the # in the beginning of the line to enable the other options

# The docs are available on https://docs.fastlane.tools/actions/match
复制代码

清除现有配置文件和证书(慎重,请考虑是否真的需要清除现有证书)

清除现有配置文件和证书不会影响 App Store 和 TestFlight 中的现有应用,依然可以正常使用,推送证书也不再清除范围内。使用下面的命令来清除相应的证书和配置文件

fastlane match nuke development
fastlane match nuke adhoc
fastlane match nuke distribution
复制代码

其他成员执行同步

其他成员需要同步证书和配置文件,只需执行命令,就可以将证书和配置文件安装到其机器上

fastlane match development --readonly
fastlane match adhoc --readonly
fastlane match appstore --readonly
复制代码

使用 match 来注册新设备

通过使用 match,将新设备添加到 AdHoc 或开发配置文件时将节省大量的时间。将 match 与 register_devices 操作结合使用。

lane :adhoc do
  register_devices(devices_file: "./devices.txt")
  match(type: "adhoc", force_for_new_devices: true)
end
复制代码

通过使用force_for_new_devices参数,match 将检查自上次运行匹配以来,设备计数是否已更改,并在必要时自动重新生成配置文件。也可以使用force: true参数强制每次运行时都重新生成配置文件。

git 仓库

仓库中有两个目录和一个 README 文件

  • certs: 存放证书文件
  • profiles: 存放配置文件

match 支持的参数

key description default
git_url 包含所有证书的git仓库的URL
git_branch 使用特定的git分支 master
type 定义配置文件类型,可以是appstore,adhoc,development,enterprise development
app_identifier 应用的捆绑标识符(以逗号分隔) *
username 您的Apple ID用户名 *
keychain_name 钥匙串应该导入项目 login.keychain
keychain_password 首次访问新mac上的证书时可能需要这样做。对于登录/默认钥匙串,这是您的帐户密码
readonly 仅获取现有证书和配置文件,不生成新证书和配置文件 false
team_id 如果您在多个团队中,您的Developer Portal团队的ID *
git_full_name 要提交的git用户全名
git_user_email git 用户电子邮件提交
team_name 如果您在多个团队中,您的Developer Portal团队的名称 *
verbose 打印出额外的信息和所有命令 false
force 每次运行匹配时都要更新配置文件 false
skip_confirmation 在核弹期间禁用确认提示,并回答是 false
shallow_clone 对存储库进行浅层克隆(将历史记录截断为1个版本) false
clone_branch_directly 克隆指定的分支,而不是整个repo。这要求分支已经存在。否则命令将失败 false
force_for_new_devices 如果开发人员门户上的设备计数已更改,请续订配置文件。忽略配置文件类型’appstore’ false
skip_docs 跳过为创建的git存储库生成README.md false
platform 设置供应配置文件的平台以使用(即ios,tvos) ios
template_name 配置文件模板的名称。如果开发者帐户具有配置配置文件模板(又名:自定义权利),则可以通过在创建/编辑配置文件时检查权利下拉列表来找到模板名称(例如“Apple Pay Pass Suppression Development”)

南京三百云信息科技有限公司(车300)成立于2014年3月27日,是一家扎根于南京的移动互联网企业,目前坐落于南京、北京。经过7年积累,累计估值次数已达52亿次,获得了国内外多家优质投资机构青睐如红杉资本、上汽产业基金等。
三百云是国内优秀的以人工智能为依托、以汽车交易定价和汽车金融风控的标准化为核心产品的独立第三方的汽车交易与金融SaaS服务提供商。

欢迎加入三百云,一起见证汽车行业蓬勃发展,期待与您携手同行!
官网:www.sanbaiyun.com/
邮箱:hr@che300.com

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享