持续集成 MAC 配置 Jenkins +OCLint ios 代码扫描并生成 pmd 报告

大浪 · 2016年06月16日 · 最后由 大浪 回复于 2016年06月16日 · 2670 次阅读

首先来看下报告

关于 oclint 我还在摸索中,规则和原理我还没弄清楚,目前只是搭了个环境,有大神不小心看到直接忽略吧.....

一:准备环境

1、MAC
2、Jenkins,我用的是安装包,传送门:Jenkins 下载
3、OCLint,下载,OCLint 下载,了解详情可以在官网,OCLint 教程
4、xctool ,替代 xcode 编译 下载直接终端 brew install xctool
5、需要的 Jenkins 插件, git、pmd,在插件管理添加

二:配置

这里怎么安装就不详细描述了,关于如何生成 pmd 报告 OCLint 官网有比较好的步骤,移步CI

我详细讲下我操作过程中遇到的一些问题。
1、主目录问题
Mac 安装 Jenkins 默认目录是在/Users/Shared/Jenkins/Home,所以工作目录也会在这个目录下面,而我们只有/Users/userXXX/目录下面的文件操作权限,如果要在/Users/Shared/Jenkins/Home 操作(新建或者删除文件),系统会提示输入 user 密码才能操作,所以 Jenkins 操作文件的时候会有权限问题导致失败。此时有一个方案是修改 Jenkins 的主目录:

Jenkins 储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改:
使用你 Web 容器的管理工具设置 JENKINS_HOME 环境参数.
在启动 Web 容器之前设置 JENKINS_HOME 环境变量.
(不推荐) 更改 Jenkins.war(或者在展开的 Web 容器) 内的 web.xml 配置文件.
这个值在 Jenkins 运行时是不能更改的. 其通常用来确保你的配置是否生效.
],设置 Jenkins 本身提供的方法,但是我试了修改 JENKINS_HOME 参数,还是不能修改成功,可能是我的能力问题,有能力的可以实际操作下。还有一个方案是增加新节点,因为增加节点的时候可以设置远程工作目录,这个时候就可以把工作目录设置在/Users/userXXX/下面。操作:
系统管理-管理节点-新建节点,到节点设置界面:

保存,然后就可以在构建执行状态栏看到新建的节点了,点击进入节点

点击 luanch,下载 slave-agent.jnlp,点击下载 slave.jar 到本地
终端运行:图片中的命令
等待节点启动。后在 project 设置一下节点名称。完成这步。
2、command not found 问题
如果不在系统设置里设置全局属性,本机的一些命令在 Jenkins 是无法使用的,首先:
终端输入:echo $PATH,把得到的值添加到系统设置 Environment variables 中。
3、开发者证书问题
从 git 上拉取代码,会把 App.xcodeproj 一并拉下来,这个配置文件包含了开发者证书签名,如果你不能拿到开发的证书,build 是不会通过的,所以要把这个文件替换成自己项目的。方式是先用 xcode 把打开自己拉取的项目,在配置选项中把它改为自己的 bundle 和 team,在 Xcode 中 build,如果能成功,把 App.xcodeproj 保存到 jenkins 项目中,每次拉取代码的时候在构建步骤中用命令替换一下这个文件,就能保证是每次 build 都是自己的证书,可以持续集成。但是这个方案并不是最好方法,如果开发修改了项目的依赖就不能编译了。还有一种方案是:
在编译之前用 sed 修改掉 project.pbxproj,project-Info.plist 的 bundle id。

4、全局变量问题
参考链接

共收到 2 条回复 时间 点赞

请使用 markdown 。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册