一澳腹、簡介
簡單記錄下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中,如下圖:
Code Signing Identity:手動拷貝項目用到的證書的名字溉跃,可以在mac的鑰匙串訪問中拷貝村刨。login.keychain包含了證書的具體內容,所以這里直接通過證書名字進行匹配撰茎。
Provisioning Profiles的配置
Provisioning Profiles Directory Path:按照上面的填嵌牺,目的是為了配置拷貝后的位置,就是會在這個目錄下有上傳的描述文件的拷貝龄糊。
開始配置具體的項目
1逆粹、選擇FreeStyle Project
2、進入配置項
- Genaral(不需要配置)
- 源碼管理
這里就是設置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:
這里只展示必要配置的選項:
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
配置證書和描述文件了
我選了手動配置
這里好像只配置了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>
配置與構建
控制臺