Jenkins实战应用–Jenkins构建中tag的应用
*系列汇总*
文章汇总地址如右:Jenkins入门教程。
如果相中哪个,点击进去便是。希望正在读这段话的你能够在这个小系列中获得自信以及喜悦!
1,缘起。
许多公司在做安卓的构建或者其他项目构建的同时,会有打tag
到Gitlab
的需求,这个需求的存在有其实在的价值意义,不仅仅让每一次我们发布过的代码有记录存留,也能够方便一些其他的功能(比如回滚),因此,今天就来说说这个事儿。
这个功能的实现依赖于Jenkins的git插件,不过一般都默认有安装。
先准备一个测试项目,内容如下:
然后来到Jenkins处,做一些简单的功能,能够用于测试验证即可。
执行shell处加一些简单的操作:
- git pull origin master
- echo "**********************************************"
- cat README.md
- echo "**********************************************"
进入正式配置之前需要先安装本文的主角Git Parameter插件
,插件详情,可以点我查看。
在构建后的操作中添加Git Publisher
,然后如图中所示配置:
在构建后操作当中选择Git Publisher
,然后如图配置:
- 配置一:定义tag名称,release-$BUILD_NUMBER这里取用了一个Jenkins的环境变量,用于每次的tag自增问题。
- 配置二:选中,以表示创建一个新的tag。
- 配置三:要推送的项目。
接着我们构建一下看看效果:
看样子tag已经打好并且推送到远程服务器去了。
现在去git里边看看是否有了。
图中圈起来的地方可以看到,正好与我们构建此时对应的,创建了三个标签。
现在我们模拟开发,更改一下项目文件内容,然后再构建一下看看情况。
来波操作:
- Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
- $ echo "第二次添加内容用于测试">> README.md
- Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
- $ git commit -a -m "add two"
- warning: LF will be replaced by CRLF in README.md.
- The file will have its original line endings in your working directory.
- [master 822b2f3] add two
- 1 file changed,1 insertion(+),1 deletion(-)
- Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
- $ git push
- Enumerating objects:5,done.
- Counting objects:100%(5/5),done.
- Delta compression using up to 4 threads.
- Compressing objects:100%(2/2),done.
- Writing objects:100%(3/3),307 bytes |76.00KiB/s,done.
- Total3(delta 0), reused 0(delta 0)
- To192.168.106.70:linux/eryajf.git
- 635b61c..822b2f3 master -> master
然后再去构建一下:
第四次构建,已经看到刚刚模拟开发所添加的内容了。
那么现在,就可以引出这个自动打tag的功能所带来的另外一个大方便了,那就是方便回滚。
2,回滚功能。
我们可以在参数化构建当中进行参数的定义,依赖于Git版本控制的特性,当用户选择的是构建时,可以选择对应的分支进行构建,当用户选择的是回滚是,那么可以选择对应的tag进行回滚。事实上与分支的构建回滚是一个道理,不过这里直接选择tag,也非常方便。
那么在验证之前,我们需要对Jenkins进行一些小小的调整,通过添加刚刚表述的参数,以及执行的shell的配合,来完成这样一个构建回滚各有分工的一个事情。
1,添加mode选项。
在参数化构建过程中先添加一个选项参数,从而让构建以及回滚两种情况存在。具体配置如图:
2,再添加branch选项。
然后添加一个用于构建不同代码分支的字符参数,这个是一个很常规的配置,就不做过多介绍,具体如图:
3,添加Git Parameter选项。
然后添加一个用于回滚不同tag的选项,这里的tag是我们项目自动生成的,随后会做一下总结,具体如图:
4,修改shell内容。
修改一下shell的执行内容,做一个简单判断,脚本如下:
- cd $WORKSPACE
- if[ $mode =="deploy"];then
- git checkout $branch
- git pull
- echo "**********************************************"
- cat README.md
- echo "**********************************************"
- else
- git reset --hard $tagbak
- echo "**********************************************"
- cat README.md
- echo "**********************************************"
- fi
如果你对Jenkins熟悉的话,那么看到这个地方,估计就已经能够知道,上边的功能是什么了。
我们的开发进行日常开发,然后进行日常构建,一切就走分支这一条了,没tag这边啥事儿,只不过在每次构建的时候,都创建一个与构建历史数一致的tag,为了不让这个tag浪费,那么我们就废物利用,通过这个自动生成的tag,实现了回滚的功能。
开发同学专注开发(branch),运维同学专注部署(deploy),一旦需要回滚(rollback),利用程序自动生成的tag(tag)来进行回滚咯。这,就是各有分工。
ok,最后是验证的时刻了。
3,验证。
验证也非常简单,通过三次构建即可验证:
- 构建一:初始内容,正常构建。
- 构建二:添加内容,正常构建。
- 构建三;直接回滚,验证结果。
1,构建一。
为了更清晰的看实验效果,我将刚刚的历史清空,重打鼓另开张,新建一个项目进行测试。
现在准备出测试文件,内容如下:
进行常规构建:
2,构建二。
模拟开发,添加内容:
进行常规构建:
3,构建三。
直接通过tag进行回滚。
然后查看构建结果:
.article-social .weixin:hover { background: rgba(255, 255, 255, 1) }
Jenkins实战应用–Jenkins构建中tag的应用的更多相关文章
- Jenkins 六: 构建中执行shell或者 windows的批处理程序
Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...
- jenkins实战(二):构建自由风格的maven项目
本系列打算全面介绍jenkins的常规使用,这是第二篇,之前的文章在: jenkins实战(一):war安装及插件安装 一.新建项目 1.新建项目 此处我们打算新建自由风格项目,见下图. 值得注意的是 ...
- K8S(08)交付实战-交付jenkins到k8s集群
k8s交付实战-交付jenkins到k8s集群 目录 k8s交付实战-交付jenkins到k8s集群 1 准备jenkins镜像 1.1 下载官方镜像 1.2 修改官方镜像 1.2.1 创建目录 1. ...
- JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建
在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...
- Jenkins:基于linux构建ivy项目
Jenkins:基于linux构建ivy项目 (二) 基于以上<Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)>的配置再进行对ivy项目构建: 启动tomcat ...
- jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置
很多时候,我们会有这样的应用场景:一个jenkins上的项目构建后,需要远程触发另一台机子上的jenkins中某个项目的构建,可以通过Parameterized Remote Trigger Conf ...
- Jenkins之使用Pyinstaller构建Python应用程序
目录 1. 极简概述 2. Jenkins配置 2.1 安装JDK 2.2 安装Jenkins 3. 安装Docker 4. 使用PyInstaller构建Python应用程序 4.1 Fork 一个 ...
- Jenkins和maven自动化构建java程序
转自:http://www.cnblogs.com/gao241/archive/2013/04/08/3008380.html,版权归原作者所有. Jenkins是一个非常出色的持续集成服务器,本文 ...
- jenkins使用Publish Over SSH中遇到的问题
在jenkins中想使用publish over ssh来在构建后发送XML或PNG文件至服务器,以便做其它的操作,安装完publish over ssh后,填加构建,发现在构建失败时,不传送文件,老 ...
随机推荐
- POJ1042 贪心钓鱼
题意: 你有H小时(H*12个单位)时间去用,有n个鱼池在一条直线上,一开始你在1的位置,可以选择在某些鱼池上钓鱼,但是如果持续在一个鱼池上钓鱼钓鱼速度回成线性减少,初始每个时间单位钓fi ...
- PowerShell-4.API调用以及DLL调用
PowerShell可以直接调用API,So...这东西完全和cmd不是一回事了... 调用API的时候几乎和C#一样(注意堆栈平衡): 调用MessageBox: $iii = Add-Type - ...
- scrapy爬虫案例--爬取阳关热线问政平台
阳光热线问政平台:http://wz.sun0769.com/political/index/politicsNewest?id=1&page=1 爬取最新问政帖子的编号.投诉标题.投诉内容以 ...
- 使用乌龟Git连接github
之前自己是在Gitee+乌龟Git来进行管理项目,因为特殊的需求,需要再Github+乌龟Git来进行管理项目,这盘博客主要讲解的就是这个. 安装环境 Git 安装参考链接:https://www.c ...
- 基于蒙特卡洛树搜索(MCTS)的多维可加性指标的异常根因定位
摘要:本文是我在从事AIOps研发工作中做的基于MCTS的多维可加性指标的异常根因定位方案,方案基于清华大学AIOPs实验室提出的Hotspot算法,在此基础上做了适当的修改. 1 概述 ...
- 优雅地使用命令行:Tmux 终端复用
转自:http://harttle.com/2015/11/06/tmux-startup.html 你是否曾经开过一大堆的Terminal?有没有把它们都保存下来的冲动?Tmux 的Session就 ...
- 获取CPU频率
#include <stdio.h> #include <string.h> float get_cpu_clock_speed() { FILE *fp; char buff ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- [Linux] 删除find到的目录
参考 https://www.centos.bz/2017/09/linux%E7%B3%BB%E7%BB%9F%E4%B8%8Bfind%E5%91%BD%E4%BB%A4%E9%80%92%E5% ...
- [bug] CDH 安装 Error : No matching Packages to list
信息 分析 我的系统是CentOS 7,而 cm 安装包是配合 redhat 6 的,应该选择 redhat 7 目录下的包 参考 https://community.cloudera.com/t5/ ...