fastlane match 运用在现有的证书环境下

学习fastlane match时看到了这一条命令:
删除开发者网站上所有的certificates和provisioning profiles。
fastlane match nuke development
要在全新的环境下使用 就有点麻烦了。

所以这篇文章是针对于现有的证书环境下。
先看下官网的fastlane:https://docs.fastlane.tools/actions/match/

然后针对私有证书库 我们创建个新的空的分支,这个分支是没有父级的分支。因为我们有多个开发者证书,多个项目,因此用分支的形式来存储不属于同一个团队的cert和p12。

cd到私有证书项目目录下

git checkout --orphan [新分支名称]
提示:Switched to a new branch '新分支名称'

现在我们执行下

git branch -a

发现没有看到我们的branch 因为没有东西提交上去。还没有第一次的提交记录 也就不会显示出来
确保是新的空的分支 执行下

git rm -rf .

然后按照fastlane正常流程下的文件截图 创建文件夹。


certs
profiles

然后从开发者网站上下载现有的证书,将证书导入到钥匙中,并导出生成p12文件

从网上搜索的生成加密后的证书的代码: {}里面的是要替换的

openssl pkcs12 -nocerts -nodes -out key.pem -in {证书}.p12 #生成.pem文件

输入加密密码 记住了 后续需要填写密码 验证。

openssl aes-256-cbc -k {密码} -in key.pem -out {Cert id}.p12 -a #生成加密后的p12
openssl aes-256-cbc -k {密码} -in {证书}.cer -out {Cert id}.cer -a #生成加密的证书

Cert id是从下面的方法获取到的
将以下代码复制一下,创建findcert.rb文件替换掉注释部分。

require 'spaceship'

Spaceship.login('[email protected]') #输入对应的苹果账号
Spaceship.select_team

Spaceship.certificate.all.each do |cert| 
  cert_type = Spaceship::Portal::Certificate::CERTIFICATE_TYPE_IDS[cert.type_display_id].to_s.split("::")[-1]
  puts "Cert id: #{cert.id}, name: #{cert.name}, expires: #{cert.expires.strftime("%Y-%m-%d")}, type: #{cert_type}"
end

然后执行ruby findcert.rb 输入苹果账号对应的密码
显示的是

Cert id: XXXXXXX, name: iOS Development, expires: 2019-05-07, type: Development
Cert id: YYYYYYY, name: iOS Distribution, expires: 2019-05-07, type: Production
...

我们需要的就是Cert id。

然后把加密后的证书及P12放入git仓库的certs目录对应的类型下面。

git add 
git commit 
git push 

再执行

*fastlane match development/adhoc/appstore --git_branch [新分支名称]
*输入私有库的地址 -> 对应的账号 -> 对应的bundleid(需要提前在开发者网站上的App IDs申请好)

注意:如果中间有出现输入密码的话 就是你本地产生的cert和开发者网站上的证书不匹配,开发者网站上就会产生两个相同的证书,后续就有错误。请重新生成加密证书。

注意:如果成功后 可以执行

git pull origin [新分支名称]

就会看到有个mobileprovision下载到私有库中,说明成功了!

注意:别忘记写 --git_branch 不然会match master分支 就会报错,找不到对应的。

全部做完以后 在其他的安装了fastlane的电脑上

fastlane match --git_branch [新分支名称] --readonly

大功告成,就可以愉快的开发了。

你可能感兴趣的:(fastlane match 运用在现有的证书环境下)