Jenkins 實(shí)現(xiàn) iOS自動(dòng)打包 上傳蒲公英徽惋、crashlytics

最終方案

直接命令行啟動(dòng)jenkins 打包證書(shū) git權(quán)限等問(wèn)題都解決了

具體實(shí)施

step0

配置JENKINS_HOME環(huán)境變量 否則命令行啟動(dòng)jenkins會(huì)在當(dāng)前用戶(hù)下的.jenkins目錄

用root用戶(hù)登錄(PS. 當(dāng)前用戶(hù)sudo進(jìn)行編輯也是可以的)
編輯profile文件:vi /etc/profile
在最后加入:export JENKINS_HOME=xxxx
保存印机,退出后執(zhí)行:source  /etc/profile
讓配置生效

step1

Jenkins下載安裝: 基于用命令行自己?jiǎn)?dòng)jenkins服務(wù) 所以直接下載war包
http://jenkins-ci.org/

step2

命令行直接啟動(dòng)服務(wù)
java -jar jenkins.war -- httpPort=8080

PS. 可能需要升級(jí)java版本
如果命令運(yùn)行后 沒(méi)有自動(dòng)打開(kāi)jenkins網(wǎng)頁(yè) 則需要安裝一下最新的jre

step3

安裝相關(guān)的插件
設(shè)置- 插件 -

如果可用插件里面沒(méi)東西 可以去advanced標(biāo)簽最后 check一下
選擇gitxcodeRole-based Authorization Strategy 等插件開(kāi)始安裝

step4

相關(guān)備份 直接備份jenkins目錄下的所有文件即可


遇到的坑

  • 打包腳本相關(guān)
  • 一開(kāi)始從網(wǎng)上找的打包腳本是python寫(xiě)的乘盖,功能很強(qiáng)大,但是跑到具體的jenkins機(jī)器上憔涉,由于機(jī)器安裝的python版本兼容性問(wèn)題 最終放棄(Python 2.*
    3.* 語(yǔ)法差異比較多)
  • shell腳本订框,簡(jiǎn)單易維護(hù),直接調(diào)用xcodebuild等命令 兼容性強(qiáng)兜叨,并且可以直接放在iOS的項(xiàng)目倉(cāng)庫(kù)穿扳,手動(dòng)運(yùn)行打包上傳也是很方便的
    相關(guān)腳本(來(lái)源于網(wǎng)絡(luò),本人適配調(diào)整過(guò)的)
    https://github.com/morenjojo/xcode_build_shells
  • 解決用戶(hù)名密碼 git fetch超時(shí)問(wèn)題

git config --global credential.helper store 開(kāi)啟git存儲(chǔ)密碼
手動(dòng)執(zhí)行相關(guān)git 命令 緩存用戶(hù)名密碼
再次執(zhí)行job順利執(zhí)行

  • cocoapods 問(wèn)題

rvm 更新成比較新的版本之后 安裝cocoapods
參考:
http://www.reibang.com/p/2ef8a38416c4
http://www.reibang.com/p/ce36997919b4

  • 打包命令報(bào)錯(cuò)archive 報(bào):“ archive at path '/build/.xcarchive' is malformed”

這是因?yàn)閯傞_(kāi)始 設(shè)置了
-derivedDataPath build/DerivedData
OBJROOT=$(PWD)/build
SYMROOT=$(PWD)/build
最后發(fā)現(xiàn) 只需要 -derivedDataPath 就夠了国旷。

  • inhouse打包

xcodebuild archive 傳入的options.plist 需要修改相關(guān)參數(shù)
具體參考xcodebuild --h

  • SecKey API returned: -25308 以及相關(guān)證書(shū)找不到的問(wèn)題

【注】直接在瀏覽器運(yùn)行l(wèi)ocalhost啟動(dòng)jenkie矛物,會(huì)導(dǎo)致一些問(wèn)題,比如用Xcode去build的時(shí)候跪但,會(huì)有code signin 的問(wèn)題履羞,導(dǎo)致在終端能編譯通過(guò)的腳本,在Jenkie下無(wú)法通過(guò)屡久。
而出現(xiàn)這個(gè)問(wèn)題的原因在于用戶(hù)權(quán)限問(wèn)題忆首,用瀏覽器運(yùn)行啟動(dòng)jenkie,jenkie的工作目錄會(huì)建立在/Users/Shared/Jenkins下被环,導(dǎo)致它沒(méi)有權(quán)限訪(fǎng)問(wèn)系統(tǒng)的keychains糙及,需要通過(guò)一系列的步驟去給予它這個(gè)權(quán)限。

具體過(guò)程參見(jiàn):
http://stackoverflow.com/questions/9245149/jenkins-on-os-x-xcodebuild-gives-code-sign-error

正確的啟動(dòng)方式是:

sudo launchctl unload /Library/LaunchDaemaons/org.jenkins-ci.plist

java -jar /Applications/Jenkins/jenkins.war --httpPort=8080

這時(shí)筛欢,jenkies會(huì)在/Users/[user name]/.jenkins 下面建立工作目錄浸锨,從而它就有權(quán)限去獲取相關(guān)的keychain。

  • 郵箱設(shè)置問(wèn)題:

設(shè)置好smtp之后 也需要把系統(tǒng)管理員郵箱改成一致的 才可正確的發(fā)送郵件

  • 配置Jenkins登錄權(quán)限遇到的大坑

如果選擇基于項(xiàng)目或者角色來(lái)配置權(quán)限 一定要先把當(dāng)前管理員賬號(hào)添加進(jìn)去 并賦予overall 權(quán)限 否則可能導(dǎo)致直接無(wú)法登陸
一旦無(wú)法登陸之后 只能手動(dòng)修改jenkins的config文件 把權(quán)限策略改成匿名可訪(fǎng)問(wèn)才行恢復(fù) 大坑

  • 自定義描述 設(shè)置html格式

Jenkins 設(shè)置 全局安全配置里面 Markup Formatter 改成safe html

  • 項(xiàng)目配置遇到 git submodule未能成功初始化的問(wèn)題

submodule模塊 有一個(gè)配置項(xiàng)一定不要選
Update tracking submodules to tip of branch

  • 郵件配置項(xiàng)正確發(fā)現(xiàn)不能發(fā)送郵件

問(wèn)題出在沒(méi)有配置好郵件的Triggers條件 調(diào)整一下就好了

等Jenkins服務(wù)試運(yùn)行一段時(shí)間 再來(lái)填更多的坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悴能,一起剝皮案震驚了整個(gè)濱河市揣钦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漠酿,老刑警劉巖冯凹,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炒嘲,居然都是意外死亡宇姚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)夫凸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浑劳,“玉大人,你說(shuō)我怎么就攤上這事夭拌∧а” “怎么了衷咽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蒜绽。 經(jīng)常有香客問(wèn)我镶骗,道長(zhǎng),這世上最難降的妖魔是什么躲雅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任鼎姊,我火速辦了婚禮,結(jié)果婚禮上相赁,老公的妹妹穿的比我還像新娘相寇。我一直安慰自己,他們只是感情好钮科,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布唤衫。 她就那樣靜靜地躺著,像睡著了一般跺嗽。 火紅的嫁衣襯著肌膚如雪战授。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天桨嫁,我揣著相機(jī)與錄音植兰,去河邊找鬼。 笑死璃吧,一個(gè)胖子當(dāng)著我的面吹牛楣导,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畜挨,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼筒繁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了巴元?” 一聲冷哼從身側(cè)響起毡咏,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逮刨,沒(méi)想到半個(gè)月后呕缭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡修己,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恢总,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬愤。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡片仿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尤辱,到底是詐尸還是另有隱情砂豌,我是刑警寧澤厢岂,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站奸鸯,受9級(jí)特大地震影響咪笑,放射性物質(zhì)發(fā)生泄漏可帽。R本人自食惡果不足惜娄涩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望映跟。 院中可真熱鬧蓄拣,春花似錦、人聲如沸努隙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荸镊。三九已至咽斧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躬存,已是汗流浹背张惹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岭洲,地道東北人宛逗。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像盾剩,于是被迫代替她去往敵國(guó)和親雷激。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容