美文网首页自动化打包iOS DeveloperiOS自动打包
Jenkins部署MacOS Slave实现持续集成(iOS)

Jenkins部署MacOS Slave实现持续集成(iOS)

作者: Dark_Angel | 来源:发表于2017-05-08 10:17 被阅读374次

    解决Linux服务器上的Jenkins无法构建Xcode工程

    前言

    由于Linux服务器无法安装Xcode,所以Jenkins无法通过shell来调用xcodebuild、xcrun等命令来构建Xcode工程,因此无法持续集成,敏捷开发。下面介绍一种配置Jenkins节点的方式,来实现Linux上的Jenkins构建Xcode工程,并上传ipa到蒲公英pgyer来进行测试。

    一、配置MacOS Slave

    Jenkins有个强大的功能,配置Slave(奴隶)服务器,来实现分布式部署构建。具体步骤如下:

    1. 配置Mac电脑。

    系统偏好设置 > 共享 中开启 远程登录,如下图:

    2. 创建节点。

    Jenkins > 系统管理 > 管理节点 > 新建节点,输入节点名称,记得勾选 Permanent Agent,点击OK。

    3. 配置节点。

    其中要保证/User/Shared/Jenkins/目录的权限为ssh链接的用户可读写。

    Host是Mac的ip地址,Credentials是ssh登录Mac时需要的账户和密码。可以添加一个

    下面的部分很重要

    PATH环境变量,需要在Mac上通过

    echo $PATH
    /opt/iOSOpenDev/bin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin/
    

    获取,然后copy过去。

    Keychains and Provisioning Profiles路径要填写正确。没有这个选项的安装Keychains and Provisioning Profiles Management插件。

    4. 最后保存。

    如果看到

    即添加Mac Slave成功,且Mac Slave在线。若连不上,请反复确认远程工作目录的权限。

    二、配置Jenkins系统设置。

    1. 上传证书和描述文件。

    Jenkins > 系统管理 > Keychains and Provisioning Profiles Management中上传打包用的证书和描述文件。如下图:

    保存。

    2. 在 Jenkins > 系统管理 > 系统设置(全局设置)中设置:

    很关键。Keychain的路径和密码需要填写Mac中登录用户的密码。

    3. 在 Jenkins > 系统管理 > Configure Global Security 中配置:

    开启Safe HTML。

    三、配置iOS项目。

    1. 安装插件。

    安装 build-name-setterdescription setter plugin插件。

    2. Jenkins > 新建

    3. General.

    这里添加了参数化构建过程,为了在每次Build时,可以填写更新说明,所以这里天添加了名为News的参数,当用户构建时填写了内容,可以在之后的脚本中通过${News}来获取News的值。

    这里指定Mac Slave服务器作为构建Xcode工程的Slave服务器,Xcode打包构建全部交给这个节点(Slave服务器)来完成。

    4. 源码管理。

    这里填写本地或者远程的代码仓库(如gitlab或者git)。下面的Branch填写指定分支。

    5. 构建触发器。

    这里暂时不设置,设置了可以自动化测试,和其他脚本配合使用。

    6. 构建环境。

    把之前上传的证书和描述文件添加上。

    设置Build名称,这里添加了自定义名称。注意,高级里面只勾选第一个,不要勾选 Set build name after build ends,否则会报错。

    7. 构建

    这里使用的脚本。

    export LANG="en_US.UTF-8"
    
    security -v unlock-keychain -p "yourpassword"
    
    ipa_name="URWork_iOS_beta"
    build_path="${WORKSPACE}/build/"
    fastlane gym --workspace URWorkClient.xcworkspace --scheme URWorkClient --clean --configuration Beta --export_method ad-hoc --output_name ${ipa_name} --output_directory ${build_path}
    
    curl -F "file=@${build_path}${ipa_name}.ipa" \
    -F "uKey=yourUKey" \
    -F "_api_key=yourApiKey" \
    -F "updateDescription=${News}" \
    https://www.pgyer.com/apiv1/app/upload
    

    最重要、最重要、最重要:

    Linux服务器上的Jenkins调用Mac Slave时,是通过之前设置的SSH登录的方式,而Apple为了安全,在ssh登录时,是不允许读取Keychains(钥匙串)的,所以 security -v unlock-keychain -p "yourpassword"这行命令就很重要了。在构建打包前,先解锁Keychains。

    当然这里 fastlane 已经提前通过Homebrew安装好了,这里不再赘述。

    整体脚本的流程是,先解锁Keychain,然后用fastlane快速打包,最后上传到蒲公英平台,等待测试。

    8. 构建后操作。

    附代码:

    <h3>更新说明:</h3><p>${News}</p><a href="http://www.pgyer.com/urwork_ios" style="display:block;margin:10px 0px;" target="_blank">点击跳转到下载页</a></br>![](http:https://img.haomeiwen.com/i5912049/8dc3cdb1c798b7e3?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    构建完成后,把之前用户输入的更新说明以及蒲公英下载地址二维码通通显示在Build Description中。

    四、整体测试

    1. 打开Jenkins。

    2. 点击develop_iOS。

    3. 点击Build with Parameters.

    4. 开始构建。

    5. 等待构建完成即可。

    这里也可以查看构建进度:点击最新的一次构建

    点击Console Output


    在这里可以查看一些日志,如果出错了,也可以在这里查询。

    五、总结。

    使用Jenkins打包Xcode工程整体过程很曲折,坑很多,按照这些来,可能还会遇到一些问题,附上一些链接,以供参考。

    相关文章

      网友评论

      • manajay:现在最新mac系统 使用签名插件失效 怎么解决
        Dark_Angel:@manajay 我这里就是最新的macOS 10.12.4,没有问题,你使用的fastlane可以尝试更新下,再试试

      本文标题:Jenkins部署MacOS Slave实现持续集成(iOS)

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