Jenkins與IOS

一澳腹、簡介

簡單記錄下IOS利用Jenkins進行自動打包贞言。Jenkins贯溅,你可以認為是一個自動化工具,通過簡單的界面配置來代替shell語法火诸。迫不得已的時候才需要加入自己的shell腳本锦针。

這里,我使用Jenkins來打包IOS app置蜀。需要的步驟:
1奈搜、從github拉取對應的IOS項目的代碼
2、進行編譯
3盯荤、生成ipa文件
以上的步驟全都可以通過shell腳本實現(xiàn)馋吗。為了更加方便,我這里通過Jenkins來進行自動化操作秋秤。

二宏粤、Jenkins自動化打包

安裝Jenkins的話脚翘,百度很多資料。
然后通過Jenkins的自動化打包這部分绍哎,百度很多文章說的不好来农,有點籠統(tǒng),而且很多還是無效的崇堰。經(jīng)過我?guī)滋斓奶剿鞅竿迹覜Q定重新整理一份。

1赶袄、要打包IOS軟件揽涮,肯定需要配置證書和描述文件。在Jenkins上怎么配置呢饿肺?
證書配置
Manage Jenkins->Keychains and Provisioning Profiles Management(這個沒找到蒋困,就去安裝這個插件)
配置:Keychains
這里是配置證書,需要使用login.keychain
~/Library/Keychains/ 可以獲取到敬辣。把Keychains目錄拷貝到/Users/Shared/Jenkins/Library/Keychains雪标。
上傳login.keychain到Jenkins中,如下圖:

1.png

Code Signing Identity:手動拷貝項目用到的證書的名字溉跃,可以在mac的鑰匙串訪問中拷貝村刨。login.keychain包含了證書的具體內容,所以這里直接通過證書名字進行匹配撰茎。

Provisioning Profiles的配置
Provisioning Profiles Directory Path:按照上面的填嵌牺,目的是為了配置拷貝后的位置,就是會在這個目錄下有上傳的描述文件的拷貝龄糊。

開始配置具體的項目
1逆粹、選擇FreeStyle Project
2、進入配置項
- Genaral(不需要配置)

屏幕快照 2019-09-23 下午7.41.35.png

- 源碼管理

屏幕快照 2019-09-23 下午7.40.29.png

這里就是設置github項目的地址炫惩。這里可能會報錯
Jenkins stderr: xcrun: error: unable to exec Xcode native xcrun
這種就是沒選對Xcode導致的僻弹,解決辦法:
(1)方法一
sudo xcode-select --reset(這種是網(wǎng)上說的解法),這樣確實可以暫時解決他嚷。但到后面編譯的時候可能還會有問題蹋绽。
(2)方法二
如果你的xcode也是像我一樣不是安裝在Application目錄的,后面執(zhí)行xcodebuild會報錯筋蓖。最好的解決辦法是卸耘,把Xcode移到Application下,然后選址這個Xcode:
sudo xcode-select -s /Applications/Xcode.app
看是否設置成功扭勉,可以查看設置后的路徑:
xcode-select --print-path

- 3鹊奖、構造觸發(fā)器(不需要設置)
這里我們手動觸發(fā)就可以了

- 4、構建環(huán)境
網(wǎng)上很多是在這里配置描述文件和證書涂炎。其實也是不需要配置的

- 5忠聚、構建
(1)方法一、選擇Xcode進行構建
1). General build settings:

屏幕快照 2019-09-23 下午7.52.33.png

屏幕快照 2019-09-23 下午7.52.56.png

這里只展示必要配置的選項:
Xcode Schema File:項目名稱
Development Team ID:teamID唱捣,Xcode中可以看到两蟀,是根據(jù)這個來匹配證書的
Export method:打包時候看到的 development ,ad-hoc等
ipa filename pattern:生成的ipa的名字,可以使用它提示的變量來生成動態(tài)的名字

2).Code signing & OS X keychain options
配置證書和描述文件了

屏幕快照 2019-09-23 下午8.00.25.png

我選了手動配置
這里好像只配置了Provisioning文件震缭,但沒配置證書赂毯,其實證書是在上面配置TeamID時候,自動動態(tài)去之前的證書配置那里進行匹配了拣宰。

到這里党涕,基本就算配置完成了。然后保存巡社,進行構建就可以了膛堤。出問題的話,去看看打印的日志晌该,對應著解決肥荔。

方法二、使用shell腳本進行構建
下面是我的腳本:

export PATH=$PATH:/usr/local/bin

APPNAME=myJenkinsTest
#### local config
## 切換到項目路徑
#cd "$(dirname "$0")"/../../..
#
## 初始化項目路徑和到處文件的路徑
#WORKSPACE=$(pwd)
#APPNAME=BatteryCam
#EXPORT_TAR=$(echo ~)/Desktop/EufySecurity_Export

#### local config end

#### jenkins config
EXPORT_TAR=$WORKSPACE/export
#### jenkins config end




#####  初始化開始
PROJECT_PATH=$WORKSPACE/
cd $PROJECT_PATH

echo $PROJECT_PATH

# info.plist路徑
InfoPlistPath=./${APPNAME}/Info.plist
echo ${InfoPlistPath}
#取版本號
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${InfoPlistPath})
#bundleShortVersion=1.0
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${InfoPlistPath})
#bundleVersion=100
#日期(到哪一天)
DATE_DAY="$(date +%Y-%m-%d)"
#日期(到秒)
DATE="$(date +%Y-%m-%d_%H_%M_%S)"

EXPORT_DIR=$EXPORT_TAR/${DATE_DAY}/${bundleShortVersion}_${bundleVersion}/${DATE}
mkdir -p ${EXPORT_DIR}

#####  初始化結束



######   archive
ARCHIVE_PATH=${EXPORT_DIR}/${APPNAME}
ARCHIVE_FILE=${ARCHIVE_PATH}.xcarchive
ARCHIVE_FILE_CONFIG_PLIST_PATH=${ARCHIVE_FILE}/Products/Applications/${APPNAME}.app/APPConfig.plist
ARCHIVE_FILE_INFO_PLIST_PATH=${ARCHIVE_FILE}/Products/Applications/${APPNAME}.app/Info.plist

xcodebuild -target ${APPNAME}.xcworkspace -scheme ${APPNAME} -archivePath ${ARCHIVE_PATH}  clean archive

#####打包成為哦ipa
IPA_PATH=${ARCHIVE_PATH}/app
IPA_FILE=${IPA_PATH}/${APPNAME}.ipa
Export_OptionsPlist=./${APPNAME}/ExportOptions.plist

echo '生成ipa文件'
xcodebuild -exportArchive -archivePath ${ARCHIVE_FILE} -exportPath ${IPA_PATH} -exportOptionsPlist ${Export_OptionsPlist}

最后生成ipa文件的時候朝群,需要一個plist文件來配置描述文件燕耿,證書,teamID姜胖,method等參數(shù):

<?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>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>development</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>Bundle ID</key>
        <string>Priovisioning Profile名字</string>
    </dict>
    <key>signingCertificate</key>
    <string>證書名字</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>teamID</key>
    <string>teamID號</string>
</dict>
</plist>

配置與構建


屏幕快照 2019-09-23 下午8.12.43.png

控制臺


屏幕快照 2019-09-23 下午8.13.16.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末誉帅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子右莱,更是在濱河造成了極大的恐慌堵第,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隧出,死亡現(xiàn)場離奇詭異踏志,居然都是意外死亡,警方通過查閱死者的電腦和手機胀瞪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門针余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凄诞,你說我怎么就攤上這事圆雁。” “怎么了帆谍?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵伪朽,是天一觀的道長。 經(jīng)常有香客問我汛蝙,道長烈涮,這世上最難降的妖魔是什么朴肺? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮坚洽,結果婚禮上戈稿,老公的妹妹穿的比我還像新娘。我一直安慰自己讶舰,他們只是感情好鞍盗,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跳昼,像睡著了一般般甲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹅颊,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天敷存,我揣著相機與錄音,去河邊找鬼挪略。 笑死历帚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的杠娱。 我是一名探鬼主播挽牢,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摊求!你這毒婦竟也來了禽拔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤室叉,失蹤者是張志新(化名)和其女友劉穎睹栖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茧痕,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡野来,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踪旷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曼氛。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖令野,靈堂內的尸體忽然破棺而出舀患,到底是詐尸還是另有隱情,我是刑警寧澤气破,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布聊浅,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏低匙。R本人自食惡果不足惜旷痕,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望努咐。 院中可真熱鬧苦蒿,春花似錦殴胧、人聲如沸渗稍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竿屹。三九已至,卻和暖如春灸姊,著一層夾襖步出監(jiān)牢的瞬間拱燃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工力惯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碗誉,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓父晶,卻偏偏與公主長得像哮缺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甲喝,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容