iOS 中使用Jenkins进行持续集成

栏目: 服务器 · 发布时间: 7年前

内容简介:iOS 中使用Jenkins进行持续集成

从长远来看,重复单一易出错的操作将慢慢被机器所取代,具体到软件开发中就是,每次打包送测等操作是可以交给机器去自动执行的。以前打包给测试的流程是,测试拿了好几个手机过来,开发一一安装,然后送给测试慢慢测试。使用了持续集成之后将变成,开发本地提交代码,Jenkins等持续集成 工具 监测到代码变化,自动编译打包,生成开发包,测试直接拿着开发包安装测试即可。

Jenkins做的操作其实很简单,它只是将我们平时做的每一步重复的操作自动化了而已。因此,iOS中Jenkins要做的分为以下几步:

1.拉取远端代码

2.由于某种条件触发后开始自动编译,打包

3.将生成的ipa文件上传到指定位置,供测试下载测试

这三步中,每一步Jenkins什么都没做,它只是调用了Mac中的一些工具,具体的说就是使用了命令行工具。有的做成了可视化的插件,有的还是要通过自己写命令来实现。典型的就是编译和打包的命令是调用xcodebuild命令。

登录 Jenkins官网 下载Jenkins,需要注意的是在下载的时候勾选Mac平台下的PKG包,毕竟这是专门为Mac平台设计的。如下图

iOS 中使用Jenkins进行持续集成

下载下来以后,双击即可安装。安装时第一步是输入密码:

iOS 中使用Jenkins进行持续集成

我们打开terminal,执行cat命令即可(需要管理员权限)。

iOS 中使用Jenkins进行持续集成

下面的操作就等它完成即可。

iOS 中使用Jenkins进行持续集成

安装好后的页面大概是这样

iOS 中使用Jenkins进行持续集成

我们选择【系统管理】----【系统设置】,看看里面的一些配置信息。这边不截图了,大概说一下原理。

Jenkins安装好后会自己新建一个jenkins 用户,估计是出于易于管理的考虑,但对我们的一些操作影响还是蛮大的。也就是说,我们在Jenkins做的任何操作都是基于jenkins这个用户的,“~”代表的也不是管理员用户,而是jenkins用户目录,更多的具体的配置我将在稍后的配置中加以说明。

接下来,我们就可以开始创建项目了,点击【新建】,输入项目名称,这里我输入我的GitHub里的一个项目AutoLoadImageView。然后选择【构建一个自由风格的软件项目】,其他我没有试过,如果有兴趣的话你可以尝试一下,点击保存后便进入到详细设置页面,暂时做如下的设置并【保存】即可

iOS 中使用Jenkins进行持续集成

iOS 中使用Jenkins进行持续集成

点击【立即构建】,然后切到命令行查看,可以发现代码已经拉取到本地了。

iOS 中使用Jenkins进行持续集成

以上操作其实已经证明跑通了Jenkins拉取代码到本地的操作。当然仅仅这样还不能帮我实现自动编译,打包甚至上传的操作,需要我们在配置中做更多的设置,最起码证书和profile文件还没有设置。

回到配置页面,点击【构建模块下的execute shell】

iOS 中使用Jenkins进行持续集成

我们在出现的 shell 输入框中输入两个命令,看看我们之前的是否正确:

whoami

pwd

然后保存,并点击【立即构建】

iOS 中使用Jenkins进行持续集成

可以看到,当前用户确实是jenkins用户,当前的目录就是本项目的目录。

接下来本文的重点来了,我们要做的是编译打包,并生成ipa文件。在打包之前,我们要了解一个命令

xcodebuild 这是apple提供给我们的编译打包命令,具体的参数大家点进去看就可以,我这边说一下最重要的几个参数,以下是我们公司打包的参数,我这边拷进来供大家参考,原谅我敏感信息打码处理

iOS 中使用Jenkins进行持续集成

可以看到,这里xcodebuild命令执行了两次,第一次是设置编译打包的参数,第二次是设置输出目录等。 $project_name是笔者先前声明的项目名称变量,也就是说,如果你的项目名称是A,那么请在上面这段shell前加这么一句

# 工程名
project_name="A"

这样一来,下面shell脚本中所有出现的$project_name都会被替换成"A"(不包含引号)

其中

1.-workspace 指明的是工作空间的名称,如果指明了这个参数,那就必须要指明-scheme参数

2.-sdk,ENABLE_BITCODE 不多说了,看参数名就知道了

3.CODE_SIGN_IDENTITY 这个比较重要,他指明的是证书标识符。这个是从钥匙串中拷过来的,有一点需要注意的是,我们需要将自己的开发证书先拷贝到系统证书中。这是因为钥匙串中的证书拥有者是管理者,不是jenkins用户,jenkins用户是没有权限操作证书的

iOS 中使用Jenkins进行持续集成

4.PROVISIONING_PROFILE_SPECIFIER看名字就知道是profile文件,同上,我们需要将管理员目录中的profile拷贝到jenkins的profile目录中,其中管理员profile目录在:

/Users/kyson/Library/MobileDevice/Provisioning Profiles/ (根据实际情况,将kyson改成你的用户目录)

jenkins的profile目录位于(如果没有相应目录则自己建):

/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/(如果你没有访问Library目录的权限,记得使用chomod命令添加相应的权限)

iOS 中使用Jenkins进行持续集成

有读者问道不知道自己的证书对应的profile是哪个,因为Provisioning Profiles 目录下有好多的文件,这里笔者也没有什么特别好的方法,推荐的是,先删除掉本地的所有profile文件,然后自己到苹果官网下载对应的profile文件,安装以后,就可以在Provisioning Profiles目录下看到相应的文件名了。虽然有点笨,但很保险,有新的办法还请赐教,谢谢^_^。

5.archive -archivePath ./$project_name.xcarchive

根据需要指定打包路径,其中扩展名记得要是.xcarchive (其中$project_name是笔者在shell中声明的一个变量,比如,你的项目的名称是A,那么对应的打包文件就是A.xcarchive)

有读者写成了archive - ./$project_name.xcarchive 请注意,这是错误的。因为-archivePath是archive的子命令,archive命令用于告诉编译器,这里是要执行打包命令,后面的archivePath子命令指定打包路径

6.-configuration Release 这个不是必须的,因为默认打的就是Release包,倒是如果你想打Debug包可以单独设置

7.-destination generic/platform=iOS 也是指明打包的类型

接下来的就是指明打包的路径了

8.-exportArchive -archivePath ./$project_name.xcarchive 同上,不赘述了

9.-exportOptionsPlist archieveOpt.plist 这里的archieveOpt.plist,是我们要自己新建的plist文件,该文件是用于指明打包的类型和teamid

iOS 中使用Jenkins进行持续集成
        teamID    C9YH4WL4***    method    development

可以看到这个plist中有两个字段,一个是teamID,一个是method,teamID很好理解,就是打包使用的证书的teamID

iOS 中使用Jenkins进行持续集成

method对应的是打包类型,一般有development,distribution等选项可供选择

10.-exportPath ./ 指明ipa的输出目录就在当前目录,可以根据需要进行自行调整

保存以上编辑,点击【立即构建】不出意外的话就能编译打包成功了,可以看到在Jenkins的工作目录中多了两个文件:

iOS 中使用Jenkins进行持续集成

其实准确的说是两个包,其中.xcarchive 包中包含了dsym符号表文件和app文件,ipa是我们最终需要的打包文件。

至此,所有的流程已经圆满成功。

Jenkins打包真是个耐性子的活,跟技术关系不大,因此我还会再贴一些小细节,如果我能想起来的话~

在公司的真实开发过程中很少会将代码上传到Github的,一般来说是公司内部的Gitlab服务器,大概的流程是一样的,主要是ssh需要重新生成。原因也不言而喻了:以前的ssh针对的是管理员用户,现在如果jenkins用户想要push代码到远端,那肯定需要给jenkins用户添加ssh,方法也是很简单的

iOS 中使用Jenkins进行持续集成

首先要切到jenkns用户,然后进入到.ssh文件夹,最后调用

ssh-keygen

命令(本人机子已经生成过了,因此有id_rsa和id_rsa.pub等文件)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Clean Architecture

Clean Architecture

Robert C. Martin / Prentice Hall / 2017-9-20 / USD 34.99

Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”) By applying universal rules of software architecture, you can dramatically improve developer producti......一起来看看 《Clean Architecture》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试