美文网首页
iOS使用fastlane和jenkins进行自动打包并上传到蒲

iOS使用fastlane和jenkins进行自动打包并上传到蒲

作者: 依然飞翔 | 来源:发表于2018-04-09 13:49 被阅读0次

    前言

    年后有感于为业务和测试部门频繁的打包,太过于影响开发,就尝试搭建了一个自动化打包的平台,把自己从繁琐的打包中解救出来。

    本文主要用了fastlane和jenkins上传到蒲公英,需要发布到App Store可以去参考一下其他文章。

    fastlane安装

    在搭建的过程中我主要参考了iOS自动化打包发布(Jenkins + Fastlane + GitLab + 蒲公英) - 简书,其中fastlane的安装在这篇文章写的简单明了,在这里我就不做过多的赘述了。

    蒲公英的fastlane配置的安装,和fastlane的配置也可以参考以上文章,我主要说一下我在配置fastlane脚本时遇到的一些坑。

    1.打开终端,cd你工程的根目录并执行以下命令:

    fastlane init

    中间会让你输入苹果开发者账号的账号和密码,之后会在你项目工程的目录下生成一个fastlane文件夹,里面有Fastlane的配置文件,一个是Appfile文件,一个是Fastfile文件(如果要上传AppStore的话还有Deliverfile文件)。Appfile保存苹果开发者的相关信息、项目的相关信息等。Fastfile是运行脚本。

    在写FastFile文件时,我遇到一坑,因为我们项目比较老,在打包的时候的时候出现了5个选项,我的gym如下:

    image

    然后使用fastlane打包出现下面的情况:

    image

    一下子出现了5个scheme,然后要手动输入数字才能够继续进行打包,然后我查资料,参考了这个Fastlane的gym指令 - CSDN博客,在gym里加入scheme参数解决了这个问题,参数的值要写scheme全拼,不要写数字。

    最后的gym如图所示:

    image

    jenkins安装

    jenkins安装我主要参考了蒲公英的开发文档,蒲公英 - 文档中心 - 使用 Jenkins 实现持续集成 (iOS)

    在 Mac 环境下,我们需要先安装 JDK,然后在Jenkins 的官网下载最新的 war 包。下载完成后,打开终端,进入到 war 包所在目录,执行以下命令:

    java -jar jenkins.war --httpPort=8080

    记住一定要用war包,我一开始去官网下载了jenkins的pkg包,安装后一直出错,最后换成war包之后才好。

    jenkins的配置

    最基本的配置我就不再赘述了,请参考蒲公英 - 文档中心 - 使用 Jenkins 实现持续集成 (iOS),在这我主要说一下jenkins本身一些有意思的功能和脚本的配置。

    jenkins在build的时候可以添加一些参数,我根据我们的需求在jenkins上添加了两个参数,如图所示:

    image

    第一个参数的作用是打包的时候能够输入一些日志,便于进行版本管理,第二个参数则是选择打测试包还是生产包,根据这个参数的值我们进行文件的替换。加入参数后build时的效果如图:

    image

    jenkins脚本设置

    这一步主要用来打包 ipa 并上传到蒲公英。我们点击“增加构建步骤”,选择 "Execute Shell"。输入你的脚本,我们能在这一步做很多事。

    #取到我们设置的参数,判断是打生产还是测试包
    
    if [ $BUILD_TYPE == "Release" ]; 
    
    then
      #我在svn上放的是测试环境的url文件,打生产包的时候把我放在根目录的生产环境的URL文件和里面的进行替换
        cp -rp $WORKSPACE/UrlHeader.h $WORKSPACE/yingxiao/Third        
    
    
    fi
    
    IPANAME="jinkens-myapp"
    
    #fastlane的参数配置
    fastlane gym --export_method enterprise --output_name ${IPANAME} --clean true --configuration Release
    
    #创建json日志文件,用于存储蒲公英给我们返回的信息
    
    postfiledir=${WORKSPACE}/tmp
    postfilename=$postfiledir/upload_app.txt
    if [ ! -e "$postfiledir" ]; then
        mkdir $postfiledir
        echo "创建了日志文件夹"
    fi
    if [ ! -e "$postfilename" ]; then
        touch $postfilename
        echo "创建了日志文件"
    fi
    
    #上传到蒲公英并接收蒲公英返回的信息,并在jenkins的build History上展示返回的二维码图片
    
    curl -F "file=@${IPANAME}.ipa" -F "uKey=" -F "_api_key=" http://www.pgyer.com/apiv1/app/upload >${postfilename}
    url=$(cat ${postfilename}|awk -F'"' '{print $(NF-1)}'|sed 's#\\##g')
    echo "appQRCodeURL:<img src=$url>" 
    
    #经测试,生产环境的url文件把测试的url文件替换后,再打测试包发现jenkins没把svn上的测试环境url文件拉下来,所以结束的时候删除工作空间
    
    rm -rf $WORKSPACE
    

    执行完毕成功的结果是:


    8FD6BB4D-1F96-41D8-8887-320D178E75A0.png

    相关文章

      网友评论

          本文标题:iOS使用fastlane和jenkins进行自动打包并上传到蒲

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