持續(xù)集成與jenkins
持續(xù)集成是一種軟件開發(fā)實(shí)踐艺晴,對(duì)于提高軟件開發(fā)效率并保障軟件開發(fā)質(zhì)量提供了理論基礎(chǔ)导坟。Jenkins 是一個(gè)開源軟件項(xiàng)目溃论,旨在提供一個(gè)開放易用的軟件平臺(tái)滔金,使持續(xù)集成變成可能。
Jenkins 是一個(gè)開源項(xiàng)目茂嗓,提供了一種易于使用的持續(xù)集成系統(tǒng)餐茵,使開發(fā)者從繁雜的集成中解脫出來,專注于更為重要的業(yè)務(wù)邏輯實(shí)現(xiàn)上述吸。同時(shí) Jenkins 能實(shí)施監(jiān)控集成中存在的錯(cuò)誤忿族,提供詳細(xì)的日志文件和提醒功能,還能用圖表的形式形象地展示項(xiàng)目構(gòu)建的趨勢和穩(wěn)定性蝌矛。
0x01 Jenkins的安裝
1.安裝方式
1. 源碼
直接在前往官網(wǎng)下載安裝即可
2. homebrew
- 首先安裝brew,可直接在
Terminal
中執(zhí)行
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝brew
- brew安裝完成之后繼續(xù)執(zhí)行
brew install jenkins
準(zhǔn)備工作就此完成
2. 配置自動(dòng)啟動(dòng)
* 配置launchd
文件
ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
pilst
文件的詳細(xì)說明可以在官網(wǎng)找到詳細(xì)說明道批。
注意:如果需要在內(nèi)網(wǎng)其他設(shè)備訪問,需要將
<string>--httpListenAddress=127.0.0.1</string>
這行刪除
* 啟動(dòng)Jenkins
終端運(yùn)行
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
啟動(dòng)jenkins
現(xiàn)在就可以通過localhost:8080
訪問jenkins
3. Xcode偏好設(shè)置添加開發(fā)者賬號(hào)
0x02 創(chuàng)建工程
1. 點(diǎn)擊新建
2. 創(chuàng)建一個(gè)自由風(fēng)格的軟件
3. 源碼管理我這里選擇git
注意: 如果
Credentials
報(bào)錯(cuò)入撒,請(qǐng)確認(rèn)有權(quán)限訪問git
項(xiàng)目隆豹。Branch Specifier (blank for 'any')
可指定構(gòu)建分支,可修改茅逮。源碼庫瀏覽器
選擇自動(dòng)就好
如果項(xiàng)目含有submodules
璃赡,點(diǎn)擊Additional Behaviours
添加一個(gè)Advanced sub-modules behaviours
判哥,勾選Recursively update submodules
。
4. 構(gòu)建觸發(fā)器
這里我選擇Poll SCM
這里我選擇每隔2分鐘檢測一次git
版本是否有更新碉考,如果有更新則開始集成塌计。參數(shù)解釋可點(diǎn)擊jenkins
問號(hào)。
5. 添加構(gòu)建步驟
1. 點(diǎn)擊添加構(gòu)建步驟
侯谁,選擇Xcode
如果沒有Xcode選項(xiàng)锌仅,請(qǐng)前往
系統(tǒng)管理->管理插件->可選插件
,搜索Xcode并安裝墙贱。
2. 設(shè)置工程
Target
是工程的名字热芹,Configuration
可是這為Release
與Debug
,這里由于是開發(fā)包,所以我選擇Debug
。
3. 自動(dòng)生成ipa
4. 解鎖Keychain
Keychain path
填寫${HOME}/Library/Keychains/login.keychain
矮固,密碼是你設(shè)置的密碼空猜。
5. 高級(jí)設(shè)置
如果使用了*.xcworkspace
需要填寫Xcode Workspace File
,反之不需要要填锡足。
6. 點(diǎn)擊保存
0x03 開始集成
項(xiàng)目進(jìn)入詳情頁,點(diǎn)擊立即構(gòu)建
即可開始集成
0x04 常見錯(cuò)誤
1. FATAL: No global development team or local team ID was configured.
前往配置->Code signing & OS X keychain options
,在Development Team ID
輸入Team ID
可在
Keychain
找到開發(fā)者證書iPhone Distribution: **** (329***)
,括號(hào)內(nèi)的就是Team ID
2. xcodebuild: error: The workspace named "Demo" does not contain a scheme named "Demo". The "-list" option can be used to find the names of the schemes in the workspace.
使用Xcode
打開需要構(gòu)建的工程一次即可榄笙。(部分Schemes
不是共享的,使用Xcode
打開一次可自動(dòng)生成Schemes
)
3. `The following build commands failed:
PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock ~/Library/Developer/Xcode/DerivedData/Demo-gkdfdjvhexwyaxdihkolvjuorxbo/Build/Intermediates/ArchiveIntermediates/Demo/IntermediateBuildFilesPath/Demo.build/Release-iphoneos/Demo.build/Script-7D2AC29159F170198B856782.sh`
添加一個(gè)構(gòu)建步驟Execute bash
祷蝌, 內(nèi)容如下
#!/bin/bash -l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod install --verbose --no-repo-update
并拖拽到Xcode
構(gòu)建的前面
4. xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
在終端運(yùn)行
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
5. 無法正常打包
在終端輸入
open ~/.jenkins/workspace/
使用Xcode
打開工程并Archive
茅撞,查看錯(cuò)誤原因。