基本思路是通过脚本判断git特定分支是否有更新。此处需要先配置好环境,clone
并 checkout
到要持续集成的分支。然后通过git pull
简单判断是否有更新。如果有就开始打包。
打包部分用最原始的xcodebuild
。所有证书配置都采用苹果提供的automatic
。后面再不邮件发送的脚本。
然后上传到蒲公英,此处蒲公英官网提供了curl
示例命令。
OK,脚本如下
#处理
cd ${workspacePath}
git pull | grep "Already up to date."
#如果有更新内容就编译打包
if [ $? -ne 0 ]; then
#clean
xcodebuild -scheme ${projectName} -project "${workspacePath}${projectName}.xcodeproj" -configuration Releas clean build
#archive
xcodebuild -scheme ${projectName} -project "${workspacePath}${projectName}.xcodeproj" -configuration Releas archive -archivePath "${archivePath}${projectName}"
#export
xcodebuild -exportArchive -archivePath "${archivePath}${projectName}.xcarchive" -exportPath ${archivePath} -exportOptionsPlist "${ADHocExportOptionsFile}" -allowProvisioningUpdates
#是否导出成功
if [ $? -ne 0 ]; then
echo "${date}:打包失败" >> $log
#发送邮件表示失败
else
#上传蒲公英
ipaPath="${archivePath}${projectName}.ipa"
curl -F "file=@$ipaPath" -F "uKey=${uKey}" -F "_api_key=${api_key}" https://www.pgyer.com/apiv1/app/upload
fi
else
echo "${date}:没有更新" >> $log
fi
这里面有一个配置文件:ADHocExportOptions.plist
<?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>destination</key>
<string>export</string>
<key>manifest</key>
<dict>
<key>appURL</key>
<string>https://www.example.com/aap/foo.ipa</string>
<key>displayImageURL</key>
<string>https://www.example.com/image.57x57.png</string>
<key>fullSizeImageURL</key>
<string>https://www.example.com/image.57x57.png</string>
</dict>
<key>method</key>
<string>ad-hoc</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>teamID</string>
</dict>
</plist>
最后配置系统定时任务定时执行脚本,比如每5min执行一次。这个时间最合理的是看电脑配置,间隔时间尽量大于一次打包并上传的时间,否则两次执行脚本可能就会有交叉。实际使用中交叉的概率很低。当然最好的办法是采用ps -ef|grep "bash <sh脚本>"
的方法判断是否正在执行脚本,当然是判断正在执行的脚本数量。这些就凭大家喜好了。我这里主要保持脚本简洁可用,这样学习起来比较容易。
网友评论