美文网首页iOS开发技巧iOS开发攻城狮的集散地iOS
iOS 持续集成——Xcode server&Bots自

iOS 持续集成——Xcode server&Bots自

作者: weiweilong | 来源:发表于2018-03-06 14:27 被阅读168次
    前言:一直想学习一下iOS的持续集成,最近开发企业内部app,打包测试发布更加频繁。所以有时间就研究了一下关于自动打包。

    说起自动打包,首先想到的肯定是Jenkins,Jenkins可提供各种插件使用,支持不同平台,并且还是免费的。Jenkins + fastlane可实现构建、上传、测试、证书管理等一系列自动化。但是我在搭建好环境,安装好插件,配置好仓库ssl和开发证书,尝试了n次后,就是没有成功。。无奈对脚本语言的不熟悉。但是最近看到了关于Xcode server的东西,Xcode是支持持续集成的,之前的macOS Server是需要在Apple开发网站中下载的,并且还需要开发者账号的兑换码。在Xcode9更新后,macOS Server中的Xcode部分就直接集成到了Xcode中。但是有开发账号还是可以兑换一个macOS Server作为网站服务器😏。

    言归正传,这是一篇技术文!首先看下使用Server&Bots在持续集成时可以做什么。

    • 指定远程仓库,获取具体分支最新代码,可合并操作。
    • 进行自动Archive,对代码进行静态分析,对代码进行单元测试,配置debug release。
    • 设置打包签名 证书。
    • 开始持续集成触发条件。(定时、在有新代码提交时、手动)
    • 持续集成前执行的脚本(pre-integration script)、持续集成后执行的脚本(post-integration script)。

    流程开始:

    1、Xcode->Preferences->server&bots,选择当前Mac登录账户,打开。
    server&bots.png
    2、创建bot

    server的开关打开,代表server已经启动。然后开始创建bot。
    首先解释一下bot:bot是一个构建工作的描述。一个bot对应一个独立工作空间,相对于jenkins,,bot可以类比jenkins的一个项目。持续集成的配置都在bot中设置。

    开始创建bot
    • 第一步打开需要持续集成的项目(前提需要这个项目需要已经上传到远程仓库)。

    • 选择并配置服务。 Product->create Bots。server 下拉选择add new server,在列表中选择本机已启动的服务器,输入用当前mac登录的户名和密码。content as选择registered user。Xcode Server的账户配置可在Xcode-> Preferences->accounts中修改。


      create new bot.png
    • next 工程资源控制。next 选择工程需要持续集成的分支,我的测试工程中就只有一个分支,所以没有选择。就只有master了。


      source control.png
    • next 编译打包配置。archive expert选择使用plist文件自定义选项,plist文件在手动执行archive后,在导出的ipa文件夹中有ExportOptions.plist。选择plist文件,plist文件在企业证书打包时很重要,需要配置ipa下载路径、图片下载路径等。Configuration选择release,后面需要上传蒲公英。

    bulid configuration.png
    • next 构建触发器配置。Integrate 选项中有periodically(周期性触发)、On commit(提交时触发)、Manually(手动触发),根据需要选择触发条件,这里选择手动触发。
    bot Integrate.png
    • next 证书签名配置。首先顶部options中有提供自动管理证书的选项,顶部也可切换手动添加证书到server。这里我选择的是手动添加打包需要的证书。


      手动打码不容易.png
    • next 设置环境变量。这一步可设置预集成和后整合触发器所需的环境变量,执行的Run Script构建阶段所需的任何环境变量。环境变量设置可参考Xcode服务器环境变量参考。但是这里并没有用到。直接下一步🤷‍♀️。

      Configure environment.png
    • 配置bot触发器。可设置集成前后的脚本、邮件发送服务。这里点击左下角 + 添加一个post-integration script。右边可勾选触发器触发的动作。根据需要选择触发动作,这里只选择当构建成功才执行脚本(只勾选success)。

    post-integration script.png

    又到写脚本的时候了。这里只需要配置将打好的ipa,调用蒲公英提供api上传即可。首先打开蒲公英提供的蒲公英api文档

    蒲公英api.png

    获取到ukey和_api_key后,编写脚本,掉接口上传。脚本如下:

    #!/bin/sh
    curl -F "file=@$XCS_PRODUCT" \
    -F "uKey=you uKey" \
    -F "_api_key=you _api_key" \
    https://qiniu-storage.pgyer.com/apiv1/app/upload
    

    然后在确保代码commit之后,command+9 选择创建的bot,点击Integration开始,没错误就代表成功了。


    success.png

    蒲公英管理后台也能看到上传的应用,简单的持续集成就算完成了。有问题欢迎提问。

    相关文章

      网友评论

      • 那个写代码的:大佬牛皮
      • SwordDevil:兄弟 我卡到创建bot,这块我创建的时候提示Creating a bot requires that the project be under source control that is accessible by the server.
        SwordDevil:@weiweilong 兄弟 要不加下QQ聊吧 我对这块挺感兴趣的 看到你文章 想试一下 你QQ多少?
        SwordDevil:@weiweilong 没上传到远程仓库~ 但是上传到自己服务器的SVN上面了
        weiweilong:“第一步打开需要持续集成的项目(前提需要这个项目需要已经上传到远程仓库)。”
        兄嘚项目有上传到远程仓库了吗
      • isletn:Mark

      本文标题:iOS 持续集成——Xcode server&Bots自

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