Phabricator集成Jenkins-配置篇

1、安装插件:

根据github上面的phabricator-jenkins-plugin插件readme文件进行配置。

在Jenkins安装插件页面搜索phabricator-jenkins-plugin插件并且安装:

1.1、Phabricator新加bot账号配置

  1. 在Phabricator用户管理中创建一个bot账号:

    在创建界面中需要填写邮箱地址,因为此账号会自动通过验证,如果没有可用的邮箱了,可以伪造一个邮箱地址。
  2. 通过管理员身份进入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
2
cd $WORKSPACE/$project
echo "using commitId:"$commitId

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
2
3
4
5
cd $WORKSPACE/${project}
echo "using commit id:"$commitId
git clean -xdf
git checkout .
git reset --hard $commitId

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自动化构建测试

  1. 进行Harbormaster配置:https://phabricator.example/harbormaster/plan/(替换成实际域名)
  2. 点击Create Build Plan
  3. 输入build plan的名称,这里我们输入:提交代码审查触发自动化构建测试
  4. 然后点击Create Build Plan
  5. 进入Maven自动化构建测试的Build Plan,点击Add Build Step按钮
  6. 点击选择Make HTTP Request

其中
URI的配置

http://phabricator.example/job/mvn_automated_construction_test/buildWithParameters?token=token_abtest&DIFF_ID=${buildable.diff}&PHID=${target.phid}&git_url=${repository.uri}&project=${repository.callsign}&commitId=${buildable.commit}

注意,域名要替换为phabricator的实际域名,job名称要替换为实际的名称,token要设置为您在job的配置界面中设置的实际的token值

When Complete:选择Wait on Message

2.2.2、添加land提交代码后自动构建

配置与上一步类似,build plan名称可以设置为提交代码触发自动化构建其中URI有所区别:

http://phabricator.example/job/mvn_commit_automated_construction/buildWithParameters?token=token_abtest&DIFF_ID=${buildable.diff}&PHID=${target.phid}&git_url=${repository.uri}&project=${repository.callsign}&commitId=${buildable.commit}

注意job的名称为:mvn_commit_automated_construction

2.3、Phabricator中Herald的配置

2.3.1、配置提交代码评审触发自动化构建

  1. 进行Herald配置:https://phabricator.example/herald/(替换成实际域名)
  2. 点击Create Herald Rule
  3. New Rule for选择Differential Revisions继续
  4. Role Type选择Global
  5. 进入配置表单

Rule Name可以配置为:Maven自动化构建测试

假设我们想让游戏引擎组项目组项目的所有仓库都执行提交代码审查后触发自动化构建,则具体配置规则:

1
2
3
4
5
6
When all of these conditions are met:

Repository projects include any of 游戏引擎组
Take these actions every time this rule matches:

Run build plans: Plan 3 提交代码审查触发自动化构建测试.

2.3.2、配置land代码到仓库之后触发自动化构建规则

与上一步类似,注意New Rule for选择Commit,具体配置规则:

1
2
3
4
5
6
When all of these conditions are met:

Repository projects include any of 游戏引擎组
Take these actions every time this rule matches:

Run build plans: Plan 2 提交代码触发自动化构建.
arthinking wechat
欢迎关注itzhai公众号,欢迎关注itzhai公众号,获取更多最新的文章