Git+Jenkins之自动构建
来源:互联网 发布:两单片机串口通信实例 编辑:程序博客网 时间:2024/05/29 07:17
公司的服务端维护一份错误码文件:errorCode.json,同时客户端也需要根据这样一份错误码对用户进行提示,错误码Sample如下:
{"200": {"0": {"msg": "成功"}},"300": {"100": {"msg": "错误1"},"101": {"msg": "错误2"}}}
平时都是服务器的同学在群里说 “加了xxx协议,更新了错误码 -。-” 客户端的同学才会去errorCode.json所在的项目(项目计划)更新项目,然后复制出来放到自己的应用项目中。
这么操作,一来可能会让错误码更新不及时;二来这份文件返回的msg对用户并不友好,有时候需要我们手动设置对应的错误提示,代码中设置并不是一个好的选择,所以我们打算改造这份错误码,添加一些自定义的消息,如果存在自定义消息则使用自定义消息(这些不在本篇文章的讨论范围),改造后的json如下:
{"200": {"0": {"msg": "成功"}},"300": {"100": {"msg": "错误1","cmsg": "这是给用户看的消息"},"101": {"msg": "错误2"}}}
然后就出现了这么一个需求:
自动更新我们项目中的errorCode.json文件,同时要把我们的自定义消息合并进去。
后来想想正好用git + jenkins hooks的方式:当有更新push到GitLab(我们内部使用的git管理平台)的时候,调用jenkins的project hook去自动执行相应的job,这个job是个shell脚本,有三步操作:
- update git project
- merge errorCode.json(此处是使用java做的,怎么方便怎么弄)
- push to git project
二、经过
安装插件
进入【插件管理】界面安装以下插件:
Git client plugin
Git plugin
GitLab Plugin
AnsiColor (可选)这个插件可以让Jenkins的控制台输出的log带有颜色(就和linux控制台那样)
配置本地Git环境和Jenkins
配置Git
先在Jenkins所在机器 安装Git
安装好以后,添加git用户:
git config --global user.name "jenkins"git config --global user.email "jenkins@your-company.com"
PS:GitLab中需要有一个对应的jenkins账号,用来拉取代码
生成本地账号的ssh秘钥
在命令行下(window下,使用Git Bash)进入主目录,执行以下命令:
ssh-keygen -t rsa -C "jenkins@your-company.com"cat ~/.ssh/id_rsa.pub
然后复制出公钥,添加到GitLab对应账号(jenkins)的SSH Keys中,这个公钥是为了让jenkins在拉取代码的时候有相应权限
生成jenkins的ssh秘钥
在命令行下进入 jenkins的安装目录\.ssh ,执行以下命令:
ssh-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脚本
#!/bin/bash##################################################################### 目录结构:# .../ErrorCode# tools/# ECode.jar //用java写的转换json工具# color.sh# config.properties //ECode.jar用的配置文件,配置json文件路径什么的# update.sh# plan_project/# ....../clientErrorCode.json# android_application_project/# ....../clientErrorCode.json### 注意:# 需要把 ErrorCode/下的所有文件的所有者设置为jenkins,# 否则jenkins执行这个脚本的时候,会因为缺乏读写权限导致更新、提交git失败####################################################################source /Users/compile/ErrorCode/tools/color.shcd /Users/compile/ErrorCode/cd toolsechoBlue "update plan_project.."cd ../plan_projectgit pull origin masterif [ $? -ne 0 ]; then echoError "update plan_project(clientErrorCode.json) from git failed" exit 1fiechoBlue "update android_application_project.."cd ../android_application_projectgit checkout developgit pull origin developif [ $? -ne 0 ]; then echoError "update android_application_project from git failed" exit 1ficd ../toolsjava -jar ECode.jarif [ $? -eq 0 ]; then cd ../android_application_project git commit -am "update clientErrorCode.json by jenkins auto script" if [ $? -ne 0 ]; then echoError "commit android_application_project failed" exit 1 fi git push origin develop if [ $? -ne 0 ]; then echoError "push android_application_project failed" exit 1 fi exit 0else echoError "merge clientErrorCod.json failed" exit 1fi
[color.sh] on Github
公司的服务端维护一份错误码文件:errorCode.json,同时客户端也需要根据这样一份错误码对用户进行提示,错误码Sample如下:
{"200": {"0": {"msg": "成功"}},"300": {"100": {"msg": "错误1"},"101": {"msg": "错误2"}}}
平时都是服务器的同学在群里说 “加了xxx协议,更新了错误码 -。-” 客户端的同学才会去errorCode.json所在的项目(项目计划)更新项目,然后复制出来放到自己的应用项目中。
这么操作,一来可能会让错误码更新不及时;二来这份文件返回的msg对用户并不友好,有时候需要我们手动设置对应的错误提示,代码中设置并不是一个好的选择,所以我们打算改造这份错误码,添加一些自定义的消息,如果存在自定义消息则使用自定义消息(这些不在本篇文章的讨论范围),改造后的json如下:
{"200": {"0": {"msg": "成功"}},"300": {"100": {"msg": "错误1","cmsg": "这是给用户看的消息"},"101": {"msg": "错误2"}}}
然后就出现了这么一个需求:
自动更新我们项目中的errorCode.json文件,同时要把我们的自定义消息合并进去。
后来想想正好用git + jenkins hooks的方式:当有更新push到GitLab(我们内部使用的git管理平台)的时候,调用jenkins的project hook去自动执行相应的job,这个job是个shell脚本,有三步操作:
- update git project
- merge errorCode.json(此处是使用java做的,怎么方便怎么弄)
- push to git project
二、经过
安装插件
进入【插件管理】界面安装以下插件:
Git client plugin
Git plugin
GitLab Plugin
AnsiColor (可选)这个插件可以让Jenkins的控制台输出的log带有颜色(就和linux控制台那样)
配置本地Git环境和Jenkins
配置Git
先在Jenkins所在机器 安装Git
安装好以后,添加git用户:
git config --global user.name "jenkins"git config --global user.email "jenkins@your-company.com"
PS:GitLab中需要有一个对应的jenkins账号,用来拉取代码
生成本地账号的ssh秘钥
在命令行下(window下,使用Git Bash)进入主目录,执行以下命令:
ssh-keygen -t rsa -C "jenkins@your-company.com"cat ~/.ssh/id_rsa.pub
然后复制出公钥,添加到GitLab对应账号(jenkins)的SSH Keys中,这个公钥是为了让jenkins在拉取代码的时候有相应权限
生成jenkins的ssh秘钥
在命令行下进入 jenkins的安装目录\.ssh ,执行以下命令:
ssh-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脚本
#!/bin/bash##################################################################### 目录结构:# .../ErrorCode# tools/# ECode.jar //用java写的转换json工具# color.sh# config.properties //ECode.jar用的配置文件,配置json文件路径什么的# update.sh# plan_project/# ....../clientErrorCode.json# android_application_project/# ....../clientErrorCode.json### 注意:# 需要把 ErrorCode/下的所有文件的所有者设置为jenkins,# 否则jenkins执行这个脚本的时候,会因为缺乏读写权限导致更新、提交git失败####################################################################source /Users/compile/ErrorCode/tools/color.shcd /Users/compile/ErrorCode/cd toolsechoBlue "update plan_project.."cd ../plan_projectgit pull origin masterif [ $? -ne 0 ]; then echoError "update plan_project(clientErrorCode.json) from git failed" exit 1fiechoBlue "update android_application_project.."cd ../android_application_projectgit checkout developgit pull origin developif [ $? -ne 0 ]; then echoError "update android_application_project from git failed" exit 1ficd ../toolsjava -jar ECode.jarif [ $? -eq 0 ]; then cd ../android_application_project git commit -am "update clientErrorCode.json by jenkins auto script" if [ $? -ne 0 ]; then echoError "commit android_application_project failed" exit 1 fi git push origin develop if [ $? -ne 0 ]; then echoError "push android_application_project failed" exit 1 fi exit 0else echoError "merge clientErrorCod.json failed" exit 1fi
[color.sh] on Github
- Git+Jenkins之自动构建
- git+jenkins自动构建一
- git+jenkins自动构建二
- gradle + git +jenkins 自动构建打包
- jenkins+maven+git自动构建环境搭建
- Mark jenkins + git 完成自动构建
- jenkins 配置git+Maven自动构建发布
- win10+jenkins+git+自动发布(搭建+构建)
- jenkins+gradle+git构建Android自动打包
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署
- Jenkins 自动构建之日程表配置
- JENKINS+MAVEN+GIT+TOMCAT自动构建部署记录
- 基于git maven jenkins的自动构建发布系统三
- git+jenkins构建
- Jenkins自动构建
- C# Jenkins 自动构建
- jenkins 自动构建项目
- LIBSVM在matlab下的使用安装
- Git-数据库的基本使用方法
- 1Z0-051 30. Evaluate thefollowing CREATE TABLE commands
- 小白学分布式程序开发4-数据一致性模型
- jquery文件上传
- Git+Jenkins之自动构建
- USB-HID技术报告(VR接口)
- 完美解决 eclipse 与 AS 共用 SDK 导致 eclipse ADT 无法使
- 【剑指offer】【从尾到头打印链表 】【栈应用】【注意出栈后size()的变化】
- 2017年5月iOS招人心得答案总结(基础篇)
- 如何从头搭建一个搜索引擎_pylucene,分词,语言编码问题
- 微服务前端部分备份
- PAT乙级1007. 素数对猜想 (20)
- 监听手机浏览器的返回按钮事件