美文网首页Swift之家iOS之家
iOS持续集成使用Jenkins实现自动化打包

iOS持续集成使用Jenkins实现自动化打包

作者: 小小土豆dev | 来源:发表于2020-04-15 11:27 被阅读0次

    Jenkins是一款由Java编写的开源的持续集成工具。Jenkins运行依赖Java JDK,如果你未安装JDK,需要先去安装。

    Jenkins启动页面

    一:安装Jenkins

    首先我们安装Jenkins,我们可以通过Homebrew安装,也可以通过客户端安装,这里推荐大家使用Homebrew安装,因为通过客户端安装,后面配置过程中,你可能会遇到权限配置问题。

    如果你的Mac未安装Homebrew,需要先安装Homebrew。

    1.安装Homebrew,在终端输入(如果已安装,可跳过):

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    2.安装Jenkins,在终端输入安装命令:

    brew install jenkins

    安装成功结果:

    Jenkins安装成功

    可以看到结果提示,如果想在开机就启动Jenkins,可以使用命令 brew services start jenkins 来启动Jenkins,否则直接使用命令 jenkins 来启动。

    二:启动Jenkins

    1.在终端输入启动命令:

    jenkins

    第一次启动Jenkins,终端会打印出Jenkins管理员初始登录密码,复制这个密码,我们后面要使用

    启动Jenkins

    2.在浏览器输入:http://localhost:8080,访问Jenkins主页。结果如下:

    启动Jenkins

    根据页面提示我们可以在路径 /Users/wf/.jenkins/secrets/initialAdminPassword 文件里找到Jenkins初始登录密码,也可以使用我们上一步复制的密码。这两处的密码是一样的。

    3.在上一步输入密码,然后点击“继续”,进入插件安装页面

    启动Jenkins

    我们点击第一个”安装推荐的插件”(这里推荐选择第一个,我们安装Jenkins推荐的所有插件,否则后面我们要一个一个去安装好多插件),选择之后进入安装页面

    Jenkins安装中

    插件安装中,这里需要点时间,稍等一会。

    4.安装成功后,我们需要创建一个管理员用户

    创建Jenkins管理员

    填写你想输入的信息,然后“保存并完成”,进入下一个页面(这里你可以在你的记事本上把用户名和密码备份一下,如果你忘记了,后面再配置的话,会很麻烦)

    5.实例配置使用默认,不用修改,然后“保存并完成”。进入下一个页面

    Jenkins实例配置

    6.开始页面,点击“开始使用jenkins”

    开始使用jenkins

    三:进入Jenkins主页

    Jenkins主页

    1.在创建新任务之前,我们先安装一个插件。点击左侧的 Manage Jenkins -> Manage Plugins(插件管理)

    Manage Jenkins Manage Plugins(插件管理)

    2.选择可选插件,在右上角搜索框,输入插件名称:Git Parameter,然后勾选,点击“直接安装”

    Git Parameter

    安装成功后,返回首页

    四:创建任务

    1.点击“创建一个新任务”,进入创建页面

    创建任务

    2.输入项目名称,选择 Freestyle project(构建一个自由风格的项目) ,然后”确定”,进入配置页面

    创建任务

    General配置

    输入简单的项目描述

    项目描述

    源码管理配置

    1.在左侧勾选Git,然后输入你项目的Git仓库地址。然后我们需要添加一个账号(这里的账号就是你Git的用户名和密码,Jenkins会用来登录Git仓库拉取代码),点击“添加”

    源码管理

    2.添加页面:输入Git用户名和密码,点击”添加“。

    添加账号

    3.添加成功后,然后选择你刚才添加的账号。在分支栏你可以修改分支名称,这里我们先使用master,后面我们会做成动态的,根据用户手选分支,而不是写死。

    添加账号

    4.修改超时时间:如果你的工程比较大,那么建议修改一下Git的克隆和拉取时间,不然Jenkins拉取代码的时候会超时。在下面点击”新增“->选择”Advanced Clone behaviours“

    Advanced Clone behaviours

    然后根据下面,输入配置信息

    修改超时时间

    构建配置

    在构建配置选择 Execute shell,然后输入打包命令。打包命令可以去这里下载。具体的iOS打包命令含义可以去这里学习iOS自动打包ipa

    Execute shell

    输入构建命令

    构建命令

    然后保存,回到项目首页。

    五:构建项目

    1.点击左侧 Build Now(立即构建)

    构建项目

    2.构建中...

    构建中...

    3.构建成功,此时打开你的蒲公英,就会看到刚才打的新包

    构建成功

    六:参数化构建

    经过上面的步骤我们已经可以实现自动化打包,并上传到蒲公英。可是实际上的需求是:我们希望打包的时候可以手动选择某个分支,然后再选择某个环境,然后再自动化构建对应的包。这时就需要使用参数化构建。

    1.点击左侧”配置“,我们重新进入刚才的配置页面

    2.勾选参数化构建

    fdf递四方速递

    添加参数,选择Git Parameter

    大幅度Git Parameter发的

    然后配置Git构建参数信息:

    再次添加参数,选择Choice Parameter

    配置Choice Parameter打包环境参数信息

    sdfsfdfdf

    3.修改源码管理,将分支名称修改为我们上面Git Parameter里配置的Key名称(其实代表的就是分支名称)

    4.然后修改打包脚本,我们可以根据上面设置的名称 SRERVICE_ENVIRONMENT 来获取用户选择的环境,然后我们需要根据环境修改对应的代码。这里有两种方式:

    第一种:多Target打包,每个环境对应一个Target,我们打包的时候,根据SRERVICE_ENVIRONMENT的值打对应的Target就可以。

    第二种:根据SRERVICE_ENVIRONMENT,我们修改对应环境的代码。

    这里我们使用第二种方法:

    先看项目里的代码,我们的目的就是通过脚本修改常量 ENVIRONMENT 的值,看代码我们可以修改为DEV、TEST、Production 其中一项,变量 appEnv 会根据 ENVIRONMENT 的值返回对应的环境。

    看了代码,其实也就明白了,上面配置的打包环境字符串参数的值和代码里字符串值是对应的

    5.我们加入了分支选择和环境选择,所以需要修改打包脚本,去这里下载

    脚本讲解

    脚本一:file_app_path是要修改代码的swift文件路径,也就是我们会使用脚本修改这个文件里的 ENVIRONMENT 常量的值。

    file_app_path="./Test/AppEnv.swift"

    脚本二:找到我们要修改代码的swift文件,然后将 默认的字符串SRERVICE_ENVIRONMENT修改为打包时所选对应的定义好的字符串。

    # 更改打包环境

    environment="SRERVICE_ENVIRONMENT"

    target_environment=${SRERVICE_ENVIRONMENT}

    sed -i '' 's/'${environment}'/'${target_environment}'/g' $file_app_path

    environment变量:是我们项目里默认的字符串

    target_environment变量:是我们上面选择的环境对应的字符串

    最后一行脚本的作用就是替换,将 environment 替换为 target_environment 。

    脚本三:再打包完成之后,我们又将字符串替换回去,相当于恢复我们刚刚修改的代码,刚好和上面的相反

    # 更改打包环境

    sed -i '' 's/'${target_environment}'/'${environment}'/g' $file_app_path

    然后保存,此时之前的 Build Now 已经变成 Build with Parameters,点击

    6.然后保存,回到项目首页。

    七:再次构建项目

    在左侧选择”Build with parameters“,然后选择对应的分支,对应的环境,开始构建

    构建成功,再次打开你的蒲公英,就会看到刚才打的指定分支、指定环境的新包。

    你也可以扩展一些其他功能,比如打包完成后,给测试人员发送邮件。

    相关文章

      网友评论

        本文标题:iOS持续集成使用Jenkins实现自动化打包

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