安裝Jenkins
方法一:安裝包http://jenkins-ci.org
此處需注意拷获,否者會(huì)有權(quán)限等問題(如果不勾選 編譯的時(shí)候會(huì)報(bào)LSOpenURLsWithRole() failed with error -10810)
安裝成功后驰弄,啟動(dòng)會(huì)讓你去路徑下找密碼懈糯,按照輸入就好
啟動(dòng)
open /Applications/Jenkins/jenkins.war
卸載
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo rm !$
sudo rm -rf /Applications/Jenkins "/Library/Application Support/Jenkins" /Library/Documentation/Jenkins
sudo rm -rf /Users/Shared/Jenkins
# if you want to get rid of all the jobs and builds:
sudo dscl . -delete /Users/jenkins
# delete the jenkins user and group (if you chose to use them):
sudo dscl . -delete /Groups/jenkins
方法二:命令
安裝
brew install jenkins
啟動(dòng)
jenkins
卸載
brew uninstall Jenkins
brew無效? 哦 安裝homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
端口號(hào)沖突
sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 7070
啟動(dòng)路徑
http://localhost:8080/
安裝插件
在系統(tǒng)管理 -> 插件管理中添加如下插件
Xcode integration
Subversion Plug-in
新建一個(gè)項(xiàng)目
- 點(diǎn)擊左側(cè)工具欄”新建”再芋,選擇第一項(xiàng)”構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”
- 基本信息
-
參數(shù)化構(gòu)建過程
由于項(xiàng)目中需要多個(gè)網(wǎng)絡(luò)環(huán)境(我們公司需要內(nèi)網(wǎng)外網(wǎng)環(huán)境)戈盈,因此加入bool參數(shù)
-
SVN配置
- 構(gòu)建
構(gòu)建=>增加構(gòu)建步驟=>Execute shell
pod update --no-repo-update (可選)
適配坑王XMPP,由于系統(tǒng)和XMPP框架同時(shí)用到了 'dnssd'流部,大概就是錯(cuò)誤的原因戚绕。因此需要pod xmpp3.7的庫
pod 'XMPPFramework', :git => "https://github.com/robbiehanson/XMPPFramework.git", :branch => 'master'
當(dāng)你引用好3.7的庫以后,使用jenkins編譯又開始頻繁報(bào)錯(cuò)枝冀,找不到頭文件舞丛,那么添加srcroot
xcode編譯報(bào)錯(cuò),大致意思是又跟系統(tǒng)同時(shí)用到了相通的枚舉類型
重新pod更新果漾。球切。。
修改XMPPStream.h的頭文件
CocoaAsyncSocket/GCDAsyncSocket.h=>GCDAsyncSocket.h
終于通過編譯绒障,果然坑多吨凑,為了怕嚇到后來人(畢竟22個(gè)錯(cuò)誤),決定將以上步驟改成腳本來執(zhí)行户辱。
首先依然添加srcroot鸵钝,在刪除,提交到svn庐镐。(為了方便執(zhí)行腳本恩商,添加在刪除后,會(huì)新增USER_HEADER_SEARCH_PATHS = ""必逆,方便查找替換)
在Execute shell中加入如下代碼
cd xxxxx.xcodeproj
sed 's#USER_HEADER_SEARCH_PATHS = ""#USER_HEADER_SEARCH_PATHS = "${SRCROOT}/**"#g' project.pbxproj > project.pbxproj.temp
mv project.pbxproj.temp project.pbxproj
cd ..
cd Pods/XMPPFramework/Core/
chmod 777 XMPPStream.h
sed 's#CocoaAsyncSocket/GCDAsyncSocket.h#GCDAsyncSocket.h#g' XMPPStream.h > XMPPStream.h.temp
mv XMPPStream.h.temp XMPPStream.h
編譯怠堪,ok
接下來多網(wǎng)絡(luò)環(huán)境揽乱,繼續(xù)添加(因?yàn)槲覀冋?qǐng)求地址卸載plist中。粟矿。凰棉。。)
cd $WORKSPACE/xxxxx/core/network
if $NetworkEnvironment
then
cp ServerInfo1.plist ServerInfo.plist
else
cp ServerInfo2.plist ServerInfo.plist
fi
構(gòu)建=>增加構(gòu)建步驟=>Xcode(注意順序嚷炉,如果反了渊啰,可以拖拽調(diào)整)
jenkins本質(zhì)應(yīng)該是用xcodebuild進(jìn)行編譯(xctool在xcode8下不好用,好像11月已經(jīng)更新 還未嘗試)申屹。簡(jiǎn)單說個(gè)命令
查看Targets和Schemes
xcodebuild -list
- 上傳bugly
最后在添加一個(gè)Execute shell
#進(jìn)入ipa路徑
cd ./build
#壓縮上傳
zip -r project.ipa *
curl —insecure -F "file=@project.ipa" -F "app_id=你的appid" -F "pid=2" -F "title=iOS測(cè)試" -F "description=內(nèi)部測(cè)試,請(qǐng)勿外泄" -F "secret=1" -F "download_limit=1000" https://api.bugly.qq.com/beta/apiv1/exp?app_key=你的appkey
參數(shù)解釋
curl -F "file=@demo.ipa" -F "uKey=自己的key" -F "_api_key=自己的key
secret int 公開范圍(1:所有人绘证,2:密碼,4管理員哗讥,5QQ群嚷那,6白名單,默認(rèn)公開所有人)
password String 密碼(如果公開范圍是”密碼”需設(shè)置)
users String 如果公開范圍是”QQ群”填QQ群號(hào)杆煞;如果公開范圍是”白名單”填QQ號(hào)碼魏宽,并使用;切分開,5000個(gè)以內(nèi)决乎。其他場(chǎng)景無需設(shè)置
替換的url
curl --insecure -X "PUT" -F "file=@project.ipa" -F "exp_id= df15dfda-324b-4361-92f9-6b56e964fd3e" -F "title=iOS測(cè)試" -F "description=內(nèi)部測(cè)試,請(qǐng)勿外泄" -F "secret=1" -F "password=xxxx" -F "users=xxxx" -F "download_limit=1000" https://api.bugly.qq.com/beta/apiv1/exp?app_key=xxxx
參考
jenkinsiOS項(xiàng)目持續(xù)集成(SVN+Cocoapods+Workspace)實(shí)戰(zhàn)擴(kuò)展(修改版)
Jenkins+GitHub+Xcode+fir搭了一個(gè)持續(xù)集成環(huán)境
使用Bugly+Jenkins+Xcode實(shí)現(xiàn)自動(dòng)打包分發(fā)測(cè)試 iOS
未來
會(huì)加入郵件發(fā)送
相關(guān)集成測(cè)試队询、單元測(cè)試