最終方案
直接命令行啟動(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一下
選擇git
、xcode
、Role-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)整一下就好了