IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir

前言

由于工作原因,近期项目需要集成Jenkins 。因此参考了网上很多的资料,但是发现网上的资料都不是很全面,都有或多或少的坑,所以在此我根据我自己个人配置的经验总结一下Jenkins具体的安装及使用(如果有什么错误的地方请留言指正,谢谢。)。

本文内容部分摘自:http://www.jianshu.com/p/7a2efc7c69fe          http://www.cocoachina.com/ios/20160804/17281.html。

Jenkins的主要作用及特点:

作用:

1.      持续、自动地构建/测试软件项目。

2.      监控一些定时执行的任务。

特点:

1.      易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。

2.      易于配置-所有配置都是通过其提供的web界面实现。   集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。

3.      生成JUnit/TestNG测试报告。

4.      分布式构建支持Jenkins能够让多台计算机一起构建/测试。

5.      文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

6.      插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

配置Jenkins  大概需要以下几步

1.搭建Jenkins环境

2.安装插件 、 配置证书和描述文件、钥匙串

3.配置项目

4.配置xcode 环境

5.构建后操作

1. 搭建Jenkins 环境

从官网https://jenkins.io/上下载最新的pkg安装包,选择 MAC OS。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080 (这个时候可能会打不开网页  请关闭防火墙开放8080端口)

这个时候如果你重启电脑会发现Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 会出现下图的重设初始密码的界面。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

打开initialAdminPassword文件,复制出密码,就可以填到网页上去重置密码了。如下图

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》
《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

到这一步 Jenkins 已经安装完成了。

2. 安装插件 、 配置证书和描述文件、钥匙串

这时需要安装配置一下插件,系统管理->管理插件->可选插件

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

安装GitLab插件

因为我们用的是GitLab来管理源代码,Jenkins本身并没有自带GitLab插件,所以我们需要依次选择 系统管理->管理插件,在“可选插件”中选中“GitLab Plugin”和“Gitlab Hook Plugin”这两项,然后安装。

安装Xcode插件

同安装GitLab插件的步骤一样,我们依次选择系统管理->管理插件,在“可选插件”中选中“Xcode integration”安装。

安装Keychains and Provisioning Profiles Management 插件

因为我们打包需要证书和描述文件,所以需要安装Keychains and Provisioning Profiles Management插件 依然选择系统管理->管理插件,在“可选插件”中选中“Keychains and Provisioning Profiles Management”安装。

安装完成后我们重启下jenkins,重新加载下插件。可以滑到最底下勾选重启,或者也可以在地址栏输入http://localhost:8080/restart

重启之后应该要输入用户名和密码,把刚刚注册的用户名密码输入进去。还有一个重要的步骤,我们先给Jenkins用户管理员的权限,避免后续的访问问题。系统偏好设置->用户与群组->点开锁,然后在Jenkins用户下勾选“允许用户管理这台电脑”。到这步最好给Jenkins用户设置一个密码,便于后期检查是否Jenkins配置错误或者是检查代码错误。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

接下来我们配置证书、描述文件、钥匙串

点击系统管理->keychain and provision Profiles Management

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

这里需要注意的是 :上传的不是证书,需要的是描述文件和login.keychain  

之前说过,系统自动生成了一个Jenkins用户  这个Jenkins 用于存储一些配置文件和信息等。我们可以在finder里面找到Jenkins用户的文件夹

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

下面

 1.Finder->前往文件夹->/Users/“你的mac用户名”/library

2.找到keychains 这个文件夹,拷贝

3.用上面那种方法放到Jenkins->Library文件夹下

为了避免描述文件也出现类似的找不到的错误,我们也把描述文件拷贝到Jenkins用户->Library。

1.Finder->前往文件夹->/Users/“你的mac用户名”/library(或者还有一个方法,打开xcode->preferences->找到你账号下的描述文件)

2.找到keychains 这个文件夹,拷贝”MobileDevice”整个文件夹

3.用上面那种方法放到Jenkins->Library文件夹下。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

接下来就是上传keychain和描述文件了。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

这里我们选刚刚拷贝过去的Jenkins文件目录下的keychain和描述文件。点击选取文件->搜索login.keychain,这里要注意下是否为Jenkins目录下的keychain。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

上传完之后打开钥匙串,找到需要上传证书的名字 然后复制下来 

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

然后点击 Add Code Signing Identity,分别把这名字粘贴过去。完成了之后大概如下:

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

接下来就是描述文件了。这里要注意一点,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles这个地址。然后按照上传keychain的步骤,把Jenkins用户目录下的描述文件上传上去就行啦 

下图就是传完大概的样子

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

3. 配置项目

keychain配置好之后,接下来就是新建一个工程了。输入你的项目名称(项目名称会在Jenkins下生成一个文件夹)。构建一个自由风格的软件项目,点击ok

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

1.General

新建完之后点选丢弃旧的构建,配置一下保持构建的天数和最大个数

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

2.源码管理

然后配置源码管理,这是Jenkins拉取代码的地址(尽量精确到项目位置),如果Credentials没有,则点击右边的add

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

Repository URL 可以使用 HTTP 或 SSH 两种形式的,这里需要注意,如果是采用 HTTP 形式的话,后面配置 Credentials 需要选择 Username with password 项,输入登录用户名和密码:

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

如果是采用 SSH 形式的话(不要ssh://前缀),后面配置 Credentials 需要选择 SSH Username with private key 项,输入用户名(随便输入)和与Git上公钥对应的私钥:

/Users/{username}/.ssh/id_rsa

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

如果红色报错的话,请核对Git地址和私钥或用户密码对应。

Branch Specifier (blank for ‘any’):默认是master,你可以根据实际情况进行编辑。


3.构建触发器

可以选择某种情况下触发项目构建,也可以不选。

4.构建环境

接下来配置构建环境,这里我们勾选Keychains and Code Signing Identities,选择login.keychain,然后选择对应的证书名字。同样勾选Mobile Provisioning Profiles,选择对应的描述文件。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

5.构建


《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

这里需要注意,如果你的项目是使用了cocoapods管理第三方库的话,这里需要增加一个脚本执行的步骤:Execute shell -> Xcode(即下一步骤) ,顺序不能错。这是因为,新版本的Xcode不能直接构建.xcworksapce项目,需要使用脚本。(PS:如果不是cocoapods管理的可以直接跳过这步)

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

#bin/bsah – l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的项目名称

/usr/local/bin/pod update –verbose –no-repo-update

注意:没有#bin/bsah – l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8   /usr/local/bin/  这几句可能会造成编译器读不懂pod语句。当你构建的时候提示pod语句出错,百分之九十都是这个错误。

坑提示:如果报错 如下图


《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

mac注销当前用户,进入Jenkins用户,看是否安装了cocoapods,如果没有安装,需要安装一下,并且版本要与当前用户一致(Jenkins用户的密码可以在系统偏好设置->用户与群组设置。)

接下来构建Xcode

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

首先配置General,这里又有一个坑!!!!输出路径必须是workspace路径下的,然后会报权限不够等之类的问题

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

之后是Code signing & OS X keychain options

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

接下来是配置 Advanced Xcode build options。

tips:jenkins会在它的目录Home->workspace下建一个文件夹,这个文件夹名字就是你的项目名字(比如你的项目名字叫JenkinsProj,那么会存在Jenkins->Home->workspace->JenkinsProj这个文件夹)。${WORKSPACE}一般都会到Jenkins创建的文件夹下。

Build output diretory 还是老实点写在workspace下比较好,因为Jenkins创建的目录我觉得足够清晰了。之前我写在另一个用户下就会报权限问题。

《IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir》

注意:这个选项使用目录系统已经定位到 Jenkins目录下 。

一般这样配置完就可以成功打包了。

5.构建后操作  

文档  blog.fir.im/jenkins/    详细讲解了 如何打包生成二维码

点赞