Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。
本文为基于mac系统的jenkins配置和部署。
1.安装前准备
1.1 下载安装包jenkins (mac版)
1.2配置jenkins安装环境
检查你的mac 是否已经安装jdk,没有的话请安装。
检查你的apachectl是否已经开启,浏览器输入“http://localhost:80”, 出现“ it works” 表示apachectl已经启用,未启用的请安装。
1.3 开始安装
点击jenkins安装包,一路默认就好。
1.4 启动jenkins 并自启动
(1)终端启动
在终端中到达jenkins.war的目录下,输入
java - jar jenkins.war --httpPort ==8888
//注 :通过端口8888,访问http://localhost:8888
(2)自启动
设置默认端口
sudo defaults write /Library/Preferences/org.jenkins-ci httpPort ' 9999'
读取设置
defaults read /Library/Preferences/org.jenkins-ci
自启动
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
取消自启动
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
(如果自启动不成功,请用终端启动jenkins.war的方法)
浏览器出现以下画面,安装完成
2. jenkins的配置
2.1 增加Xcode插件
在jenkins的系统管理中,找到管理插件,可选插件的tab下搜索 xcode,勾选安装,点击直接安装。这样重启jenkins的话,就会在job 的构建中下拉选择处看到xcode的支持选项。
2.2 点击左侧的系统管理—>系统设置进入如下界面:
2.3 JDK配置
配置JDK,请在每一节下面单击Add(新增) 按钮,这里将添加实例的名称 和绝对地址。下图描述了这两个部分。
JDK别名:给你看的,随便你自己,叫阿猫阿狗都可以
JAVA_HOME:这个是本机JDK的安装路径(错误的路径会有红字提示你的)
自动安装:不推荐这个选项
Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息
2.4配置发件人地址
2.5 subVwesion配置
Subversion Workspace Version:Subversion 的版本号,选择你对应的版 本号就行了。
接着,点击”应用””保存”。
2.6 Configure Global Security(安全设置)
在已运行的Jenkins主页中,点击左侧的系统管理— >Configure Global Security进 入如下界面:
设置如上图,保存后系统管理中就出现管理用户的选项。页面右上角也会出现 登录/注册的选项。
2.7 管理用户设置
在右上角点击注册
点击sign up按钮,提示你现在已经登录.返回首页.
登录后和匿名账号看到的首页有几点不同,如下图红框所示:
2.8 向jenkins导入开发所需证书
- 先将iOS的开发所需证书导入你的Mac上(放在系统中)
- 将“/System/Library/Keychains/”下的文件复制到“~/Library/Keychains/*”
- 将“/System/Library/MobileDevice/Provisioning\Profiles”下的文件 复制到“~/Library/MobileDevice/Provisioning\Profiles/*”
(注:~/Library/下没有的后两个目录的自己创建即可)
3 创建打包项目
3.1新建自由风格构建任务
在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:
这时,需要为新的构建任务指定一个名称。(这里输入的任务名称为:Ant_test) 这里有几种的任务类型可供选择,鉴于初步介绍,先选择构建一个自由风格的软件项目。对于其他的类型,经常使用的是拷贝已存在任务;这主要为了能在现有的任务基础上新建任务。点击OK按钮,
3.2 源码管理配置
演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示如下图:
点击 enter credential 输入SVN用户名和密码
SVN地址:例如 https://192.168.50.7/svn/Personal/mobile/trunk/iOS/ iOS_Mobileclient/Platform/SafeClient
3.3 构建触发器
在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构 建。
Poll SCM:这是CI系统中常见的选项。当你选择此选项,你可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。
- 第一个参数代表的是分钟minute,取值 0~59;
- 第二个参数代表的是小时 hour,取值0~23;
- 第三个参数代表的是天 day,取值1~31;
- 第四个参数代表的是月 month,取值1~12;
- 最后一个参数代表的是星期 week,取值0~7,0 和 7 都是表示星期天。
如H/5 * * * * 表示的就是每5分钟检查一次源码变化。
如:H/2 * * * * 每两分钟进行一次检查
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很 有帮助。
3.4 构建配置
因为我的项目是用Mac 下脚本实现的打包,所以我选择的是Execute shell, 在出现的方框中写下你的批处理命令行(如:本项目就是自动打包、发送命令行)即可
打包脚本命令:(将项目打包并发送到当前目录的上一目录内,以当前日期为 名的文件夹内)在jenkibs的日志输出中能查到路径
参考脚本我放文件夹里了(文件名:脚本)
点击“应用”“保存”就可以了。
3.5 立即构建
点击左侧菜单中的“立即构建”,进行一次新的构建,如下图
一旦构建完成后,完成后的任务将会下图。
在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代 表“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来 介绍作业的总体状况:
构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
- Successful:完成构建,且被认为是稳定的。
- Unstable:完成构建,但被认为不稳定。
- Failed:构建失败。
- Disabled:构建已禁用。
构建稳定性: 当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布 一个稳健指数(从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
3.6 调试
如果构建失败,通过点击构建历史(Build History)中某个具体的构建链接, 您就能跳转到Jenkins为这个构建实例而创建的构建主页上。如下图
单击Console Output(控制台输出)。如果工作已完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中,Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:
(有利于快速的找到你的问题所在,并不停的调试)
注:图中第二行就是你的打包后文件输出的路径。
你可以直接前往打包后的输出路径获取.ipa 文件。打包iOS项目就完成了。
Q&A:
- Jenkins Xcode 证书设置错误 Code Sign error: No matching codesigning identity found: No codesigning identities
Jenkins 集成Xcode 项目的时候在证书上遇到了问题。实际上如果在本地的话。只要Xcode工程里选择了项目就不需要重新设置证书了。jenkins会自动找到这个证书,只要在build setting 里设置的是正常的。并且在xcode 里能正常编译。
- Check dependencies
Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“qingyunDeveloper”) were found.
如果遇到类似的错误 解决办法:
首先打开keychain keys 找到apple 的开发者证书。然后复制。 再选择左边的系统(system)把刚复制的证书放进去。
如果这个还没有解决。
接下来第二步:
找到你用户下的Provisioning Profiles 文件。目录为 /Users/xxx/Library/MobileDevice/Provisioning Profiles
xxx表示你自己的用户名,把这里面所有的证书复制到/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 这个文件。