1、安装插件:
根据github上面的phabricator-jenkins-plugin插件readme文件进行配置。
在Jenkins安装插件页面搜索phabricator-jenkins-plugin
插件并且安装:
1.1、Phabricator新加bot账号配置
- 在Phabricator用户管理中创建一个bot账号:
在创建界面中需要填写邮箱地址,因为此账号会自动通过验证,如果没有可用的邮箱了,可以伪造一个邮箱地址。 - 通过管理员身份进入Phabricator用户管理界面,选择刚刚创建的用户 --> Manage --> Edit Setting,点击
Conduit API Tokens
,然后点击Generate Token
按钮生成一个token:
并且复制该token,下一步会用到。
1.2、Jenkins配置
进入Jenkins
系统配置界面(https://ci.example.com/configure,替换成实际域名),跳到`Phabricator`配置区域,点击添加按钮进行添加Jenkins凭证提供者:
弹出表单如下:
按照如上表单进行填写,其中类型选择Phabricator Conduit Key
,Phabricator URL填写您的Phabricator系统的实际访问地址,Conduit Token
填写上一步复制的token,点击保存即可生成Jenkins
访问Phabricator
的凭证。
注意,为了能够让Jenkins正确访问到对应的代码仓库,您同事需要给上一步配置的bot账号授权访问代码仓库。
2、使用
2.1、新建Jenkins Job
2.1.1、新建Phabricator代码评审前自动化构建测试Job
Job名称设置为:mvn_automated_construction_test
在Jenkins管理界面中添加一个Job
(或者修改现有的Job集成Phabricator),然后点击Configure
按钮,进入配置界面。
参数化构建过程:
勾选参数化构建过程
,分别添加一下参数:
- project 仓库地址 字符类型
- git_url 仓库方位地址 字符类型
- token Jenkins的口令 字符类型
- commit_id git提交hash串
- DIFF_ID
- PHID
Build Triggers
参数化构建过程中的token
需要在Jenkins里面配置好,为了支持通过token访问Jenkins系统,您需要安装[Build Token Root Plugin](https://wiki.jenkins.io/display/JENKINS/Build+Token+Root+Plugin)
,并且在Build Triggers
中设置token:
Source Code Management
在Source Code Management
配置区域:由于我们统一使用Git仓库,这里选择Git
。
Repositories:
- Repository URL:$git_url
- Credentials:这里需要新增一个Jenkins凭证,类型选择
SSH Username with private key
,把私钥添加进去,添加完成之后,这里选择刚刚添加到凭证即可,配置界面参考如下附图。
Branches to build:
- Branch Specifier (blank for ‘any’):$commitId
Additional Behaviours:
- Check out to a sub-directory:$project(为仓库代码创建子文件夹)
Build Environment
勾选Apply Phabricator Differential
。
Work directory填写:$project
注意,
2.0.2
版本的phabricator plugin有bug,不支持参数化构建过程,Work directory
只能填写具体的目录地址,为了修复这个bug,如果需要支持参数化构建,需要手工修复下,修复后的插件地址:
Pre Steps
添加执行 shell
。
这里简单的填写提示脚本:
1 | cd $WORKSPACE/$project |
Build
Root POM:./${project}/pom.xml
Goals and options:clean install -U
Post-build Actions
Post to Phabricator
- Comment on Success 勾选
- Comment with console link on Failure 勾选
- Add Custom Comment:file_name(如果您需要自定义Jenkins在Phabricator Revision中的评论,这里可以填写自定义评论文件的文件名,对应的文件需要存放在Jenkins workspace目录下Job的文件夹里面)
2.1.2、新建Phabricator代码land到代码仓库之后触发自动化构建Job
Job名称设置为:mvn_commit_automated_construction
整体配置与新建Phabricator代码评审前自动化构建测试Job
配置类似,在创建该Job的时候,可以直接从新建Phabricator代码评审前自动化构建测试Job
复制一份。
Pre Steps
添加执行 shell
。
内容:
1 | cd $WORKSPACE/${project} |
Build
Goals and options:clean install -U
或者如果,您正在编译到是jar项目,可以执行deploy到私服:
Goals and options:clean deploy
2.2、Phabricator中Harbormaster配置
首先需要在Phabricator中添加Harbormaster配置,该配置会通过Herald规则触发,后续会对配置进行说明。
2.2.1、添加Maven自动化构建测试
- 进行
Harbormaster
配置:https://phabricator.example/harbormaster/plan/(替换成实际域名) - 点击
Create Build Plan
- 输入build plan的名称,这里我们输入:
提交代码审查触发自动化构建测试
- 然后点击
Create Build Plan
- 进入
Maven自动化构建测试的Build Plan
,点击Add Build Step
按钮 - 点击选择
Make HTTP Request
其中
URI的配置
注意,域名要替换为phabricator的实际域名,job名称要替换为实际的名称,token要设置为您在job的配置界面中设置的实际的token值
When Complete:选择Wait on Message
。
2.2.2、添加land提交代码后自动构建
配置与上一步类似,build plan名称可以设置为提交代码触发自动化构建
其中URI有所区别:
注意job的名称为:mvn_commit_automated_construction
2.3、Phabricator中Herald
的配置
2.3.1、配置提交代码评审触发自动化构建
- 进行
Herald
配置:https://phabricator.example/herald/(替换成实际域名) - 点击
Create Herald Rule
New Rule for
选择Differential Revisions
继续- Role Type选择
Global
- 进入配置表单
Rule Name可以配置为:Maven自动化构建测试
假设我们想让游戏引擎组
项目组项目的所有仓库都执行提交代码审查后触发自动化构建,则具体配置规则:
1 | When all of these conditions are met: |
2.3.2、配置land代码到仓库之后触发自动化构建规则
与上一步类似,注意New Rule for选择Commit
,具体配置规则:
1 | When all of these conditions are met: |