基于Jenkins的CocoaPods化iOS項(xiàng)目構(gòu)建+蒲公英/FIR系統(tǒng)發(fā)布

本文以本地和Git為例,結(jié)合CocoaPods叔磷,簡(jiǎn)單介紹了如何用jenkins來(lái)進(jìn)行CI編譯并上傳蒲公英和Fir生成相應(yīng)二維碼的流程拢驾。

準(zhǔn)備工作

首先,去Jenkins主頁(yè)下載war包進(jìn)行本地編譯改基,網(wǎng)址為:https://jenkins.io/index.html
這里,筆者以LTS Release的2.7.2.war包為例

Jenkins下載頁(yè)面

下好了war包后寥裂,運(yùn)行War包嵌洼,并設(shè)置其端口號(hào),命令如下:

java -jar jenkins.war --httpPort=8888

運(yùn)行后命令行如下圖所示:

Jenkins 運(yùn)行狀態(tài)
http://localhost:8888

之后根據(jù)頁(yè)面提示封恰,輸入密碼并且創(chuàng)建賬戶(hù)后麻养,即可打開(kāi)Jenkins主頁(yè)。

配置工作

配置工作里主要進(jìn)行插件的安裝诺舔,插件安裝方法為:
系統(tǒng)管理 -->管理插件鳖昌,選可選插件,選擇對(duì)應(yīng)插件后點(diǎn)擊直接安裝即可低飒。

插件界面

以iOS的持續(xù)集成為例许昨,推薦安裝的插件為:

  • build timeout plugin
    This plugin allows builds to be automatically terminated after the specified amount of time has elapsed.
  • Checkstyle Plug-in
    This plug-in collects the Checkstyle analysis results of the project modules and visualizes the found warnings.
  • Credentials Binding Plugin
    Allows credentials to be bound to environment variables for use from miscellaneous build steps.
  • description setter plugin
    This plugin sets the description for each build, based upon a RegEx test of the build log file.
  • Email Extension Plugin
    This plugin is a replacement for Jenkins's email publisher
  • Git Changelog
    Plugin creating JIRA filter URL based on commit messages containing JIRA ticket keys in the GIT history
  • GitHub Organization Folder Plugin
    Scan entire GitHub organization for buildable branches and pull requests, in repositories. See Pipeline as Code solution page for more details.
  • Gitlab Hook Plugin
    Enables Gitlab web hooks to be used to trigger SMC polling on Gitlab projects
  • GitLab Plugin
    This plugin integrates GitLab to Jenkins by faking a GitLab CI Server.
  • Gradle Plugin
    This plugin allows Jenkins to invoke Gradle build scripts directly
  • HTML Publisher plugin
    This plugin publishes HTML reports.
  • Keychains and Provisioning Profiles Management
    This plugin integrates management of keychain and provisioning files for iOS and OSX projects.
  • Log Parser Plugin
    Parse the console output and highlight error/warning/info lines.
  • Pipeline
    A suite of plugins that lets you orchestrate automation, simple or complex. See Pipeline as Code with Jenkinsfor more details.
  • Post-Build Script Plug-in
    PostBuildScript makes it possible to execute a set of scripts at the end of the build.
  • Project Description Setter
    Set the project description from a file in the workspace
  • Publish Over FTP
    Send build artifacts over FTP
  • Subversion Plug-in
    This plugin adds the Subversion support (via SVNKit) to Jenkins.
  • Timestamper
    Adds timestamps to the Console Output.
  • Workspace Cleanup Plugin
    This plugin deletes the project workspace after a build is finished.
  • Xcode integration
    This plugin provides builders to build xcode projects, invoke agvtool and package .ipa files

創(chuàng)建任務(wù)

在Jenkins主頁(yè)點(diǎn)擊新建,輸入Job名后褥赊,選擇第一項(xiàng):構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目

Paste_Image.png

之后進(jìn)入配置頁(yè)面糕档,按照下圖來(lái)進(jìn)行配置:

Jenkins配置 part1

配置管理配置部分按下圖填寫(xiě):

Jenkins配置 part2

CocoaPods配置

選擇構(gòu)建-->增加構(gòu)建步驟-->Execute Shell,再對(duì)應(yīng)pod的代碼填寫(xiě)進(jìn)去:

CocoaPods配置

Command里必須要的是pod install拌喉,其他視項(xiàng)目結(jié)構(gòu)而定速那。例如筆者的項(xiàng)目由于podfile文件在子目錄之中,所以先執(zhí)行CD [子目錄名]進(jìn)入子目錄再執(zhí)行尿背。

Warning

  • 在Jenkins中設(shè)置CocoaPods配置之前請(qǐng)務(wù)必保證本地CocoaPods可以正常工作端仰。這里默認(rèn)你的CocoaPods已經(jīng)執(zhí)行過(guò)了pod setup這些步驟了。
  • CocoaPods的Execute Shell一定要在XCode配置之前執(zhí)行田藐。(點(diǎn)擊左側(cè)的拖動(dòng)bar荔烧,可以自由調(diào)整插件順序)
  • 目前Jenkins上雖然有CocoaPods的插件吱七,但是功能有限,不推薦使用

XCode General配置

先進(jìn)行添加:選擇構(gòu)建-->增加構(gòu)建步驟-->XCode

Paste_Image.png

General Build Settings

在target處填寫(xiě)XCode項(xiàng)目的target名稱(chēng)鹤竭。如果不知道名稱(chēng)踊餐,去項(xiàng)目目錄下運(yùn)行xcodebuild -list進(jìn)行查看;
Configuration設(shè)置為Debug或者Release诺擅,取決于你想要什么樣的版本市袖;
ipa filename pattern:可以定制ipa的名稱(chēng),例如yourIPAname_${VERSION}_${BUILD_DATE}
Output directory設(shè)置ipa的路徑烁涌。

General Setting

配置證書(shū)

Code signing & OS X keychain options設(shè)置如下:


Code Siging設(shè)置

Code Sign Identity填寫(xiě)證書(shū)的名稱(chēng)(請(qǐng)查看你的Keychain里對(duì)應(yīng)iPhone Developer證書(shū)的名稱(chēng)苍碟,包括括號(hào)里的內(nèi)容)
unlock Keychain,在Keychain Path里填入在項(xiàng)目中倒入的開(kāi)發(fā)者證書(shū)的keychain撮执。如果不知道在哪兒微峰,可以試試:

default : ${HOME}/Library/Keychains/login.keychain

Password是你的登陸密碼

XCode 高級(jí)設(shè)置

XCode Schema File:如果不知道名稱(chēng),去項(xiàng)目目錄下運(yùn)行xcodebuild -list進(jìn)行查看抒钱;
SYMROOT:填寫(xiě)你想設(shè)置的SYMROOT蜓肆,例如${WORKSPACE}/build/
Custom xcodebuild arguments:XCode配置參數(shù),可以參考下圖的設(shè)置
XCode Workspace File:如果需要運(yùn)行workspace谋币,請(qǐng)選擇項(xiàng)目下對(duì)應(yīng)的*. xcworkspace文件
XCdoe Project Directory:填寫(xiě)項(xiàng)目路徑
XCode Project File:填寫(xiě)Project文件所在路徑

高級(jí)設(shè)置

開(kāi)發(fā)者證書(shū)導(dǎo)入

XCode此時(shí)應(yīng)該導(dǎo)入開(kāi)發(fā)者證書(shū):

  • 從蘋(píng)果開(kāi)發(fā)者官網(wǎng):官網(wǎng)地址,導(dǎo)入Certificates和Provisioning Profiles證書(shū)或密鑰:
    Apple Developer

    應(yīng)該保證XCode的General窗口箭頭位置沒(méi)有黃色的驚嘆號(hào):
General

集成蒲公英發(fā)布系統(tǒng):

點(diǎn)擊增加構(gòu)建步驟-->Execute shell仗扬,創(chuàng)建腳本窗口:

QQ20160826-1.png

在腳本里填寫(xiě)如下格式代碼:

curl -F "file=@${WORKSPACE}/ipa/helloJenkins.ipa" -F "uKey=xxxx" -F "_api_key=xxx" https://www.pgyer.com/apiv1/app/upload

其中,file是ipa文件的路徑蕾额,記得要帶@早芭;uKey與F_api_key是蒲公英系統(tǒng)上的userKey與apiKey,蒲公英官網(wǎng)注冊(cè)好后填寫(xiě)完全即可诅蝶。

選擇增加構(gòu)建后操作步驟--> Set Build Description,如下圖所示:

SetBuild

在Description中填寫(xiě)Image的對(duì)應(yīng)地址即可:

image

點(diǎn)擊OK退个,編譯即可。然后進(jìn)入Console頁(yè)面去查看调炬。
成功后應(yīng)該如下圖所示:

Paste_Image.png

集成fir.im發(fā)布系統(tǒng)

集成fir比集成蒲公英更加簡(jiǎn)單语盈,因?yàn)楣俜接衘enkins插件。直接安裝后配置其apiKey即可缰泡。
參考fir官網(wǎng)對(duì)其的介紹頁(yè)面

集成Git

取消掉XCode對(duì)應(yīng)設(shè)置

如果確定要通過(guò)Git來(lái)構(gòu)建刀荒,先取消掉之前的Advanced Xcode build options步驟,方法是清除Advanced Xcode build options內(nèi)部的所有配置

更改源碼管理

隨后匀谣,回到源碼管理照棋,將選項(xiàng)由none改為Git,填入Git項(xiàng)目地址武翎。這里以public項(xiàng)目為例,所有下面的credentials不用填寫(xiě)溶锭。如果是private宝恶,則需要填寫(xiě)git的用戶(hù)名密碼。

Git選項(xiàng)

參數(shù)化構(gòu)建

想要達(dá)到根據(jù)具體分支構(gòu)建的目的,需要添加對(duì)應(yīng)插件Git Parameter Plugin
之后進(jìn)入配置頁(yè)面:

添加參數(shù)

在添加參數(shù)頁(yè)面中設(shè)置 Git Parameter

之后按照下圖所示進(jìn)行設(shè)置:


Git Parameter 配置

之后要在下面的 源碼管理 Git配置頁(yè)面中Branch的對(duì)應(yīng)字段填寫(xiě)你在Git Parameter中Name上所寫(xiě)的名字垫毙,如下所示:


源碼管理中g(shù)it的設(shè)置

希望小文能給各位的工作帶來(lái)幫助霹疫!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市综芥,隨后出現(xiàn)的幾起案子丽蝎,更是在濱河造成了極大的恐慌,老刑警劉巖膀藐,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屠阻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡额各,警方通過(guò)查閱死者的電腦和手機(jī)国觉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)虾啦,“玉大人麻诀,你說(shuō)我怎么就攤上這事“磷恚” “怎么了蝇闭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)硬毕。 經(jīng)常有香客問(wèn)我呻引,道長(zhǎng),這世上最難降的妖魔是什么昭殉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任苞七,我火速辦了婚禮,結(jié)果婚禮上挪丢,老公的妹妹穿的比我還像新娘蹂风。我一直安慰自己,他們只是感情好乾蓬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布惠啄。 她就那樣靜靜地躺著,像睡著了一般任内。 火紅的嫁衣襯著肌膚如雪撵渡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天死嗦,我揣著相機(jī)與錄音趋距,去河邊找鬼。 笑死越除,一個(gè)胖子當(dāng)著我的面吹牛节腐,可吹牛的內(nèi)容都是我干的外盯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翼雀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饱苟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起狼渊,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤箱熬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后狈邑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體城须,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年官地,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酿傍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驱入,死狀恐怖赤炒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亏较,我是刑警寧澤莺褒,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站雪情,受9級(jí)特大地震影響遵岩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巡通,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一尘执、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宴凉,春花似錦誊锭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至籽暇,卻和暖如春温治,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戒悠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工熬荆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绸狐。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓惶看,卻偏偏與公主長(zhǎng)得像捏顺,于是被迫代替她去往敵國(guó)和親六孵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纬黎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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