美文网首页程序员iOS开发技术分享
XcodeServer持续化集成进阶

XcodeServer持续化集成进阶

作者: a2ebcc3676c1 | 来源:发表于2016-05-17 11:47 被阅读823次

    上一篇文章中介绍介绍了Xcode Server的搭建过程,需要参考的同学请自行传送XcodeServer持续化集成。但是在实际工作当中,我们需要更加自动化的流程体验,让开发者从繁琐的测试、打包、发布平台中解放出来。Xcdoe Server提供的Triggers功能给我们带来了极大的便利,我们只需添加自定义的脚本,基本上可以实现一键一条龙服务。

    1、流程

    • 开发完成后,开发人员手动设置标识符(后面会详细说明)、选择证书并上传代码。
    • Server服务器检测到代码更新,开始集成。集成成功后运行脚本。
    • 脚本中判断标识符,识别当前是开发版、测试版还是正式版。
    • 根据版本进行平台发布。

    2、细节

    • 标识符可以是一个文件,也可以是一个字段,大家可以结合自己的项目任意设定。我是在项目的配置文件中声明了一个APP变量,它的状态表示开发版、测试版、正式版。上传代码前我需要修改APP的值。
    • 由于我的流程中需要Server服务器在有代码更新的时候开始集成,所以Schedule需设置成On Commit。


      12.png
    • Triggers可以在Integration前后添加脚本,其实更合理的做法应该是在Before Integration中添加脚本判断标识符,如果仅仅是提交更新并不希望打包,在这里exit,但本人没有找到打断Integration的方法,所以只能放弃。
    • 现在的做法是所有操作在After Integration的脚本中执行。
      • 开发版:只打包,不做其他操作。
      • 测试版:给开发人员测试的版本,证书选择开发证书,可以上传到蒲公英。
      if [ "$APP" = "TEST" ];then
      

    echo "测试版,上传到蒲公英"
    IPA_NAME=$(basename "${XCS_ARCHIVE%.}".ipa)
    IPA_PATH="${XCS_OUTPUT_DIR}/ExportedProduct/Apps/${IPA_NAME}"
    curl -F "file=@${IPA_PATH}" -F "uKey=userkey" -F "_api_key=apikey" http://www.pgyer.com/apiv1/app/upload
    - 正式版:选择生产证书,直接上传到AppStore,如果需要发布到TestFlight,需要登录iTunesConnect设置。
    if ["$APP" = "RELEASE"];then
    echo "正式版,上传到TestFlight"
    altoolPath='/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool'
    IPA_ARCHIVE=$(basename "${XCS_ARCHIVE%.
    }".ipa)
    IPA_ARCHIVE_PATH="${XCS_OUTPUT_DIR}/ExportedProduct/${IPA_ARCHIVE}"
    "$altoolPath" --upload-app -f ${IPA_ARCHIVE_PATH} -u "username" -p "password"
    - 上传到AppStore需要用到Altool这个工具,路径如下
    /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool
    如果使用上面路径出现问题,请参考`正式版`代码。 - 如果出现下面报错
    altool[] *** Error: Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application.
    在终端输入下面代码即可 (修改/usr权限`sudo chmod -Rf 777 usr/*`)
    ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms
    ```
    - Altools详细用法请参考Altools使用说明

    • Xcode Server还提供了邮件通知服务。只是我在使用的过程中似乎并没有效果,知道使用方法的童鞋请不吝指教🙏。


      14.png

    有关Xcode Server 的更多用法,期待大家的交流。

    相关文章

      网友评论

        本文标题:XcodeServer持续化集成进阶

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