最近在同時跟進(jìn)幾個項(xiàng)目,在打包的時候需要來回切項(xiàng)目笋粟,很影響效率,也會打斷思路析蝴。所以想到了用jenkins在mac本地搭一個自動化打包的服務(wù)害捕,過程中遇見一些坑,這里寫一個筆記闷畸。
我這里簡單滿足了自己的需求尝盼,如果看到文章的各位老鐵有其他更好更方便(更能偷懶)的東西也歡迎分享給我....
問題
集成過程中我遇到了賊多由于權(quán)限導(dǎo)致的問題:
比如Unable to unlock login.keychain
再比如No profile matching 'xxxxx' found: Xcode couldn't find a profile matching 'xxxxx'
再比如No matching provisioning profile found: Your build settings specify a provisioning profile with the 巴拉巴拉的
一開始我以為是我配置的問題,但是后來仔細(xì)檢查后佑菩,發(fā)現(xiàn)證書配置的沒有問題盾沫,本地都有證書和profile且都是有效的。
然后就上網(wǎng)查殿漠,發(fā)現(xiàn)大家有說把profile的MobileDevice文件夾移動到j(luò)enkins的目錄下的赴精,嘗試了,無果绞幌。
然后又查到把profile的uuid名稱改成之前在apple development設(shè)置的名字蕾哟,嘗試了,無果。
但是我用腳本在本地直接執(zhí)行是可以打出包來的谭确,所以我懷疑是沒有權(quán)限找到profile文件帘营,這里要提一下,發(fā)生這種問題的前提是下載和安裝的從jenkins官網(wǎng)下載的pkg安裝包
逐哈,安裝后會直接啟動jenkins的web容器芬迄,然后你會發(fā)現(xiàn)jenkins的目錄是默認(rèn)安裝在/Users/Shared/jenkins
的(就是共享文件夾),也就是在你的用戶目錄之外昂秃,如下:
(我猜測可能是因?yàn)楣蚕砦募A里的jenkins沒有權(quán)限訪問 用戶里的鑰匙串文件login.keychain
?所以即使我配置的沒有問題禀梳,在用xcodebuild 命令行打包的時候 還是會Unable to unlock login.keychain
或者找不到對應(yīng)的profile文件?)
然后我想把jenkins安裝到我的用戶下械蹋,可能就解決問題了出皇。但是從官網(wǎng)下的pkg每次都是直接安裝然后打開web容器了。然后查看主目錄打開localhost:8080-系統(tǒng)管理-系統(tǒng)設(shè)置
哗戈,發(fā)現(xiàn)路徑是/Users/Shared/jenkins
,然后準(zhǔn)備修改主目錄
嘗試改過/etc/profile
,添加JENKINS_HOME=XXXX郊艘,修改過之后,無果唯咬。
嘗試過sudo vim org.jenkins-ci.plist
纱注,然而這個只讀文件,哪怕修改了權(quán)限之后再修改jenkins home 也不行胆胰。
修改jenkins主目錄/安裝目錄 解決方法:
不要從官方下載pkg安裝
不要從官方下載pkg安裝
不要從官方下載pkg安裝
建議使用命令行安裝jenkins
brew install jenkins
如果沒有安裝homebrew的話狞贱,需要先安裝homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
然后執(zhí)行war包(注意下面的命令需要自己更換對應(yīng)的版本號)
java -jar /usr/local/Cellar/jenkins/版本號/libexec/jenkins.war --httpPort=8080
安裝jenkins結(jié)束之后,別急著打開web容器
安裝jenkins結(jié)束之后蜀涨,別急著打開web容器
安裝jenkins結(jié)束之后瞎嬉,別急著打開web容器
open /Library/LaunchDaemons
然后在里面新建一個org.jenkins-ci.plist
內(nèi)容大概如下,其中的JENKINS_HOME 就是你的路徑厚柳,我這里放在了文稿下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>StandardOutPath</key>
<string>/var/log/jenkins/jenkins.log</string>
<key>StandardErrorPath</key>
<string>/var/log/jenkins/jenkins.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>JENKINS_HOME</key>
<string>/Users/leon/Documents/FuckingJenkins/Jenkins/Home</string>
</dict>
<key>GroupName</key>
<string>daemon</string>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.jenkins-ci</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>jenkins</string>
<key>SessionCreate</key>
<true/>
</dict>
</plist>
然后啟動jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
這里可能會遇到Path had bad ownership/permissions
權(quán)限問題
執(zhí)行sudo chown root:wheel /Library/LaunchDaemons/org.jenkins-ci.plist
然后重復(fù)執(zhí)行上邊 啟動jenkins 的命令
然后打開 localhost:8080去看看主目錄
主目錄修改成功氧枣!
然后正常配置jenkins項(xiàng)目,執(zhí)行腳本打包别垮,配置fir.im插件自動上傳ipa生成二維碼便监,自動發(fā)送郵件給測試人員。
ps:在fir.im插件上傳成功之后碳想,log的日志里有
You can use ENV var $FIR_DOWNLOAD_URL in other plugins.
這種輸出烧董,應(yīng)該是可以通過$FIR_DOWNLOAD_URL這個變量直接拿到返回的下載短連接的,但是我嘗試了之后沒有成功胧奔,如果看到文章的老鐵有成功的案例逊移,請告訴我一下,謝謝啦龙填。下面是log的輸出螟左,和我找到的相關(guān)內(nèi)容
有啥問題歡迎交流指正啡浊。
參考鏈接:
http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html
http://www.reibang.com/p/bbead797f3d3