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等文件)


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

查看所有标签

猜你喜欢:

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

破壁书

破壁书

邵燕君 主编、王玉玊 副主编 / 生活•读书•新知三联书店 生活书店出版有限公司 / 2018-6-1 / 88.00

*一本神奇的网络文化辞典,解读二次元、宅文化、网文、游戏、流行文化,让人大开眼界; *245个网络文化核心关键词,追本溯源,讲述背后文化演变与有趣故事,读来恍然大悟,知其然,更知其所以然; *北大中文系学术团队数年研究成果,曹文轩、韩少功、李敬泽、猫腻顾问推荐,三联生活书店花3年倾力打造; *百度 查不到、词条不过时、形式新颖丰富、文章可读性强、学术上经得起推敲,五大特点打造权威......一起来看看 《破壁书》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换