一、起因
公司的服务端维护一份错误码文件:errorCode.json,同时客户端也需要根据这样一份错误码对用户进行提示,错误码Sample如下:
平时都是服务器的同学在群里说 “加了xxx协议,更新了错误码 -。-” 客户端的同学才会去errorCode.json所在的项目(项目计划)更新项目,然后复制出来放到自己的应用项目中。
这么操作,一来可能会让错误码更新不及时;二来这份文件返回的msg对用户并不友好,有时候需要我们手动设置对应的错误提示,代码中设置并不是一个好的选择,所以我们打算改造这份错误码,添加一些自定义的消息,如果存在自定义消息则使用自定义消息(这些不在本篇文章的讨论范围),改造后的json如下:
然后就出现了这么一个需求:
自动更新我们项目中的errorCode.json文件,同时要把我们的自定义消息合并进去。
后来想想正好用git + jenkins hooks的方式:当有更新push到GitLab(我们内部使用的git管理平台)的时候,调用jenkins的project hook去自动执行相应的job,这个job是个shell脚本,有三步操作:
二、经过
安装插件
进入【插件管理】界面安装以下插件:
Git client plugin
Git plugin
GitLab Plugin
AnsiColor(可选)这个插件可以让Jenkins的控制台输出的log带有颜色(就和linux控制台那样)
配置本地Git环境和Jenkins
配置Git
先在Jenkins所在机器 安装Git
安装好以后,添加git用户:12git config --global user.name "jenkins"git config --global user.email "jenkins@your-company.com"PS:GitLab中需要有一个对应的jenkins账号,用来拉取代码
生成本地账号的ssh秘钥
在命令行下(window下,使用Git Bash)进入主目录,执行以下命令:12ssh-keygen -t rsa -C "jenkins@your-company.com"cat ~/.ssh/id_rsa.pub然后复制出公钥,添加到GitLab对应账号(jenkins)的SSH Keys中,这个公钥是为了让jenkins在拉取代码的时候有相应权限
生成jenkins的ssh秘钥
在命令行下进入 jenkins的安装目录\.ssh,执行以下命令:12ssh-keygen -t rsacat id_rsa.pub然后复制出公钥,添加到GitLab对应账号(jenkins)的SSH keys中,这个公钥是为了让jenkins执行shell脚本时,如果shell脚本中有git命令,使其有拉取、提交代码的权限
配置Jenkins
在Jenkins中配置Git
进入【系统管理】->【系统设置】设置使用的Git命令行
配置Git账号
配置Gitlab信息
API Token获取方式
在Jenkins中配置Git账号
进入【Credentials】->【Global credentials(unrestricted】->【Add Credentials】
添加Job
新建一个【构建一个自由风格的软件项目】的Job
配置这个Job所用的Git项目信息
这里的Credentials就是在配置Git账号中设置的账号;如果不配置Git项目信息,Git Push之后这个Job不会自动执行配置触发器
这里的圈出来的URL,需要配置到Gitlab对应项目的Web Hooks中配置errorCode所在项目的Web Hooks
【Gitlab】->【选择项目】->【Settings】->【Web Hooks】
设置只有在收到push消息时才自动执行jenkins的job配置构建环境(可选)
shell脚本中如果会输出带颜色的文字,可以设置这个,使Jenkins的Web Console也输出相同的颜色配置执行的脚本并保存
update.sh脚本
|
|
ECode.jar
三、结果
一劳永逸,快哉。