之前用的Jenkins 用起來(lái)太笨重,后來(lái)發(fā)現(xiàn)Fastlane 做持續(xù)集成挺不錯(cuò)就試了試。腳本打包,然后上傳到第三方分發(fā)平臺(tái),最后發(fā)郵件通知某人
Fastlane安裝:
系統(tǒng)要求:macOS或 Linux 使用 Ruby 2.0.0及以上版本 終端執(zhí)行:
sudo gem install fastlane --verbose
確保Xcode安裝了最新版本的命令行工具:
xcode-select --install
Fastlane使用:
1:cd 你的項(xiàng)目根目錄
2:fastlane init
根據(jù)提示,配置你的app
這里需要配置apple id 項(xiàng)目唯一標(biāo)識(shí)等
此時(shí)你的項(xiàng)目中已經(jīng)集成了fastlane
生成腳本
vim build_using_gym.sh
#!/bin/bash
#計(jì)時(shí)
SECONDS=0
#假設(shè)腳本放置在與項(xiàng)目相同的路徑下
project_path=$(pwd)
#取當(dāng)前時(shí)間字符串添加到文件結(jié)尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定項(xiàng)目的scheme名稱
scheme="項(xiàng)目名稱"
#指定要打包的配置名
configuration="Adhoc"
#指定打包所使用的輸出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method參數(shù)
export_method='ad-hoc'
#指定項(xiàng)目地址
workspace_path="$project_path/項(xiàng)目名稱.xcworkspace"
#指定輸出路徑
output_path="project_path/APP"
#指定輸出歸檔文件地址
archive_path="$output_path/項(xiàng)目名稱_${now}.xcarchive"
#指定輸出ipa地址
ipa_path="$output_path/項(xiàng)目名稱_${now}.ipa"
#指定輸出ipa名稱
ipa_name="項(xiàng)目名稱_${now}.ipa"
#獲取執(zhí)行命令時(shí)的commit message
commit_msg="$1"
#輸出設(shè)定的變量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
#先清空前一次build
gym --workspace ${workspace_path} --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
#上傳到fir
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
#輸出總用時(shí)
echo "===Finished. Total time: ${SECONDS}s==="
執(zhí)行腳本
./build_using_gym.sh
shell發(fā)郵件
有時(shí)候會(huì)使用腳本完成一系列的自動(dòng)化工作,工作完成后還需要郵件通知相關(guān)人員,此時(shí)可以使用第三方的工具:SendEmail,最新版本sendEmail-v1.56.tar.gz
下載地址:http://caspian.dotconf.net/menu/Software/SendEmail/
#!/bin/bash
email_reciver="12313@163.com 123123@126.com"
#發(fā)送者郵箱
email_sender=213123123@qq.com
#郵箱用戶名
email_username=213123123
#郵箱密碼
#使用qq郵箱進(jìn)行發(fā)送需要注意:首先需要開啟:POP3/SMTP服務(wù),其次發(fā)送郵件的密碼需要使用在開啟POP3/SMTP服務(wù)時(shí)候騰訊提供的第三方客戶端登陸碼。
email_password=ieurwor
file1_path="附件一路徑"
file2_path="附件二路徑"
#smtp服務(wù)器地址
email_smtphost=smtp.qq.com
email_title="iOS客戶端更新"
email_content="謝謝!"
./sendEmail -f ${email_sender} -t ${email_reciver} -s ${email_smtphost} -u ${email_title} -xu ${email_username} -xp ${email_password} -m ${email_content} -a ${file1_path} ${file2_path} -o message-charset=utf-8
持續(xù)集成中遇到的一些問題
1: {"code":501,"message":"Unknown method","data":[]} curl: (6) Could not resolve host: APP 上傳API地址錯(cuò)誤
2: curl: (26) couldn't open file? 上傳應(yīng)用時(shí)候 應(yīng)用路徑不對(duì)
3: {"code":2,"message":"Data of file can not be empty","data":[]}===Finished 應(yīng)用路徑不對(duì) 少@
4: ./build_using_gym.sh: line 39: gym: command not found
sudo gem install gym
Fetching: gym-2.0.0.gem (100%)
ERROR:? While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/gym
sudo gem install gym -n /usr/local/bin
5:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xcodeproj
https://github.com/fastlane/fastlane/issues/5313
This likely happens because you updated the rubygems gem of your system ruby installation. The default one that ships with macOS customises the default binary directory, but if you update it to any other version (e.g. by doing gem update —system), you will lose that. sudo gem install fastlane -n /usr/local/bin should work as an alternative.