美文网首页
iOS持续集成脚本

iOS持续集成脚本

作者: CAICAI0 | 来源:发表于2018-12-17 01:40 被阅读16次

基本思路是通过脚本判断git特定分支是否有更新。此处需要先配置好环境,clonecheckout 到要持续集成的分支。然后通过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脚本>"的方法判断是否正在执行脚本,当然是判断正在执行的脚本数量。这些就凭大家喜好了。我这里主要保持脚本简洁可用,这样学习起来比较容易。

相关文章

网友评论

      本文标题:iOS持续集成脚本

      本文链接:https://www.haomeiwen.com/subject/lqifkqtx.html