iOS 用fastlane進行團隊證書管理

前言

團隊開發中,經常會遇到新成員加入或者證書及配置文件的變更,此時往往會造成一堆證書/pp文件失效問題,故我們可以使用fastlane的match進行統一管理配置

我們的目標 ---> 使用一個終端命令配置好一個項目所需要的所有證書及配置文件,從此媽媽再也不用擔心我證書失效了

關于fastlane的基本介紹及使用可以看這里:fastlane的基本使用(自動化打包發布)

在使用fastlane管理證書前,要先注冊一個私有的倉庫,若有私有服務器則放在服務器上即可
本編文章以碼云作為管理倉庫

match

match是fastlane的一個功能組件, 能自動從蘋果官方上下載證書和pp文件同步到我們的git倉庫中

安裝及初始化

默認項目已經進行fastlane初始化,打開Matchfile文件
cd到當前項目文件下,并執行

[sudo] gem install match
fastlane match init

執行成功后,會在fastlane文件夾下生成Matchfile文件

git_url("https://gitee.com/xxxx/xxxxxxx.git") //在碼云上新建一個項目,將地址復制到這里
type("development") # 默認match所同步的類型,可不管
app_identifier("bundle Id")  #bundleId,若同工程下有多個,則用["bundleId1","bundleId2"]
username("user@fastlane.tools")  #蘋果開發者賬號

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

刪除舊證書和pp文件

如果當前項目已經存在證書和pp文件,要先在官網上將證書和pp文件全部刪除,也可以執行以下命令來刪除

fastlane match nuke development
fastlane match nuke distribution

生成證書和pp文件

在工程目錄下分別執行
fastlane match development
fastlane match adhoc
fastlane match appstore
輸入密碼

首次執行時,會要求輸入一個密碼,用來對證書進行加密,后續其他機器獲取證書時使用該密碼進行解密,輸入密碼后繼續按照終端提示進行下一步操作,注意,此時會自動在Apple Developer中生成新的證書及配置文件來進行使用

成功

完成后,git倉庫就會生成對應的certs及profiles文件夾來存放證書和配置文件

git倉庫

團隊管理

當有新成員加入時,執行

fastlane match development --readonly
fastlane match adhoc --readonly
fastlane match appstore --readonly

并輸入對應的加密密碼來獲取
xcode要取消Automatically manage signing,并將獲取到的pp文件放到對應的Signing配置中,至此就配置完成啦!

手動上傳證書和profile文件(不推薦)

實際開發過程中,項目的證書及配置文件都是已經建立好的,可能會由于種種原因無法進行刪除重新配置,下面介紹如何使用已有的證書和配置文件來進行團隊證書管理

創建ruby.rb文件,將以下代碼復制進去,替換掉注釋部分

require 'spaceship'

Spaceship.login('xxxxxx@xxx.com') #輸入對應的蘋果賬號
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 ruby.rb查找出現在已有的證書,并記錄下等下要用到的Cert id

記錄cert id

在git倉庫創建certs及profiles文件夾,如下圖所示,區分好對應的類型


創建文件夾

接著從Apple Developer中下載現有的證書及mobileprovision文件,將證書導入到鑰匙中,并生成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為前面執行ruby文件所找到的證書id

將加密后的證書及P12放入git倉庫的certs目錄對應的類型下,此時再執行fastlane match development/adhoc/appstore即會從git倉庫中獲取現有的證書和配置,這樣就達到了整個開發團隊保持同樣的證書和配置

mobileprovision同理從Apple Developer上下載后,用同樣方式加密(取名為{Development/ADHoc/AppStore/InHouse}_bundleId.mobileprovision)放入git倉庫的profiles對應目錄下,例如
openssl aes-256-cbc -k vanke -in xxxx.mobileprovision -out Development_yyyy -a

最后的最后

上傳完所有的證書及配置文件后,可在Fastfile文件中創建一個lane專門用來加載所有的證書和配置文件

platform :ios do
...
 #證書  替換bundle id
 lane :match_all do
    sh "fastlane match development --readonly"
    sh "fastlane match adhoc --readonly"
    sh "fastlane match appstore --readonly"
  end
...

當項目有新成員加入時,執行fastlane match_all即可同步證書,搭配fastlane打包上傳使用口感更加哦~

常見問題

  1. 其他成員git時提示賬號密碼錯誤或者git請求時間過長
    可更改Matchfile文件,git_url處的地址帶上賬號和密碼,例如賬號123456@qq.com,密碼111111,則地址為git_url("https://123456@qq.com:111111@gitee.com/user/project.git"),注意特殊符號和中文要進行url encode

  2. 如果團隊不是公用同一個開發者賬號進行開發,而是通過添加開發者的方式,development證書會在每次同步是變成新的開發者對應證書,建議development證書不用同步,本地管理就好

參考:
Simplify your life with fastlane match
A new approach to code signing

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容

  • fastlane運行所需要的環境: OS X 10.9以上 Ruby 2.0 以上 Xcode 擁有一個開發者賬號...
    阿姣_0405閱讀 2,996評論 0 4
  • 前言 iOS開發在團隊項目協作中,面臨著許許多的挑戰,除了被大家詬病的nib文件和故事板以外,還有就是今天要說的證...
    宇行信閱讀 2,683評論 0 2
  • 摘要 手動打包、手動上傳是一件非常煩瑣的事件,通常會浪費開發者大量的時間,這時候自動打包與分發就起到的重要的角色。...
    Lxyang閱讀 1,278評論 3 4
  • 我們在日常開發中經常會遇到如下問題 團隊成員一不小心Revoke了證書導致所有的開發小伙伴需要重新下載證書 每次提...
    DreamMmMmM閱讀 917評論 0 5
  • 清晨,太陽從地平線上緩緩升起,散發出耀眼的金色的光芒,染紅了天空,鋪滿了大地,透過茂盛的嫩綠的樹葉在林間小路上撒...
    逆心者閱讀 348評論 0 1