前言
由于工作原因,近期项目需要集成Jenkins 。因此参考了网上很多的资料,但是发现网上的资料都不是很全面,都有或多或少的坑,所以在此我根据我自己个人配置的经验总结一下Jenkins具体的安装及使用(如果有什么错误的地方请留言指正,谢谢。)。
本文内容部分摘自://www.greatytc.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。
安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080 (这个时候可能会打不开网页 请关闭防火墙开放8080端口)
这个时候如果你重启电脑会发现Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 会出现下图的重设初始密码的界面。
按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。
打开initialAdminPassword文件,复制出密码,就可以填到网页上去重置密码了。如下图
到这一步 Jenkins 已经安装完成了。
2. 安装插件 、 配置证书和描述文件、钥匙串
这时需要安装配置一下插件,系统管理->管理插件->可选插件
安装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配置错误或者是检查代码错误。
接下来我们配置证书、描述文件、钥匙串
点击系统管理->keychain and provision Profiles Management
这里需要注意的是 :上传的不是证书,需要的是描述文件和login.keychain
之前说过,系统自动生成了一个Jenkins用户 这个Jenkins 用于存储一些配置文件和信息等。我们可以在finder里面找到Jenkins用户的文件夹
下面
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文件夹下。
接下来就是上传keychain和描述文件了。
这里我们选刚刚拷贝过去的Jenkins文件目录下的keychain和描述文件。点击选取文件->搜索login.keychain,这里要注意下是否为Jenkins目录下的keychain。
上传完之后打开钥匙串,找到需要上传证书的名字 然后复制下来
然后点击 Add Code Signing Identity,分别把这名字粘贴过去。完成了之后大概如下:
接下来就是描述文件了。这里要注意一点,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles这个地址。然后按照上传keychain的步骤,把Jenkins用户目录下的描述文件上传上去就行啦
下图就是传完大概的样子
3. 配置项目
keychain配置好之后,接下来就是新建一个工程了。输入你的项目名称(项目名称会在Jenkins下生成一个文件夹)。构建一个自由风格的软件项目,点击ok
1.General
新建完之后点选丢弃旧的构建,配置一下保持构建的天数和最大个数
2.源码管理
然后配置源码管理,这是Jenkins拉取代码的地址(尽量精确到项目位置),如果Credentials没有,则点击右边的add
Repository URL 可以使用 HTTP 或 SSH 两种形式的,这里需要注意,如果是采用 HTTP 形式的话,后面配置 Credentials 需要选择 Username with password 项,输入登录用户名和密码:
如果是采用 SSH 形式的话(不要ssh://前缀),后面配置 Credentials 需要选择 SSH Username with private key 项,输入用户名(随便输入)和与Git上公钥对应的私钥:
/Users/{username}/.ssh/id_rsa
如果红色报错的话,请核对Git地址和私钥或用户密码对应。
Branch Specifier (blank for 'any'):默认是master,你可以根据实际情况进行编辑。
3.构建触发器
可以选择某种情况下触发项目构建,也可以不选。
4.构建环境
接下来配置构建环境,这里我们勾选Keychains and Code Signing Identities,选择login.keychain,然后选择对应的证书名字。同样勾选Mobile Provisioning Profiles,选择对应的描述文件。
5.构建
这里需要注意,如果你的项目是使用了cocoapods管理第三方库的话,这里需要增加一个脚本执行的步骤:Execute shell -> Xcode(即下一步骤) ,顺序不能错。这是因为,新版本的Xcode不能直接构建.xcworksapce项目,需要使用脚本。(PS:如果不是cocoapods管理的可以直接跳过这步)
#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语句出错,百分之九十都是这个错误。
坑提示:如果报错 如下图
mac注销当前用户,进入Jenkins用户,看是否安装了cocoapods,如果没有安装,需要安装一下,并且版本要与当前用户一致(Jenkins用户的密码可以在系统偏好设置->用户与群组设置。)
接下来构建Xcode
首先配置General,这里又有一个坑!!!!输出路径必须是workspace路径下的,然后会报权限不够等之类的问题
之后是Code signing & OS X keychain options
接下来是配置 Advanced Xcode build options。
tips:jenkins会在它的目录Home->workspace下建一个文件夹,这个文件夹名字就是你的项目名字(比如你的项目名字叫JenkinsProj,那么会存在Jenkins->Home->workspace->JenkinsProj这个文件夹)。${WORKSPACE}一般都会到Jenkins创建的文件夹下。
Build output diretory 还是老实点写在workspace下比较好,因为Jenkins创建的目录我觉得足够清晰了。之前我写在另一个用户下就会报权限问题。
注意:这个选项使用目录系统已经定位到 Jenkins目录下 。
一般这样配置完就可以成功打包了。
5.构建后操作
文档 blog.fir.im/jenkins/ 详细讲解了 如何打包生成二维码