*系列汇总*

这是一个系列文章,大大小小到今天惊然发现竟然已经累计二十篇了,也就不得不做一个小汇总。回想当初写第一篇文章的时候,就已经决心事无巨细,一应认真的走下来,回头遮望,看着皇皇这么多文章,一股强烈的成就感就此油然而生,于是便有了这些汇总整理。在这个过程当中,好像也帮助过不少的人,这是让我尤其开心的事情,同时也结识了一些志同道合的朋友,再没有比这更让人觉得愉悦的事情啦!也希望以后写出更多类似的系列文章。

文章汇总地址如右:Jenkins入门教程。

如果相中哪个,点击进去便是。希望正在读这段话的你能够在这个小系列中获得自信以及喜悦!


1,缘起。

许多公司在做安卓的构建或者其他项目构建的同时,会有打tagGitlab的需求,这个需求的存在有其实在的价值意义,不仅仅让每一次我们发布过的代码有记录存留,也能够方便一些其他的功能(比如回滚),因此,今天就来说说这个事儿。

这个功能的实现依赖于Jenkins的git插件,不过一般都默认有安装。

先准备一个测试项目,内容如下:

然后来到Jenkins处,做一些简单的功能,能够用于测试验证即可。

执行shell处加一些简单的操作:

  1. git pull origin master
  2. echo "**********************************************"
  3. cat README.md
  4. echo "**********************************************"

进入正式配置之前需要先安装本文的主角Git Parameter插件,插件详情,可以点我查看。

在构建后的操作中添加Git Publisher,然后如图中所示配置:

在构建后操作当中选择Git Publisher,然后如图配置:

  • 配置一:定义tag名称,release-$BUILD_NUMBER这里取用了一个Jenkins的环境变量,用于每次的tag自增问题。
  • 配置二:选中,以表示创建一个新的tag。
  • 配置三:要推送的项目。

接着我们构建一下看看效果:

看样子tag已经打好并且推送到远程服务器去了。

现在去git里边看看是否有了。

图中圈起来的地方可以看到,正好与我们构建此时对应的,创建了三个标签。

现在我们模拟开发,更改一下项目文件内容,然后再构建一下看看情况。

来波操作:

  1. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  2. $ echo "第二次添加内容用于测试">> README.md
  3. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  4. $ git commit -a -m "add two"
  5. warning: LF will be replaced by CRLF in README.md.
  6. The file will have its original line endings in your working directory.
  7. [master 822b2f3] add two
  8. 1 file changed,1 insertion(+),1 deletion(-)
  9. Administrator@liqilong MINGW64 ~/Desktop/gittest/eryajf (master)
  10. $ git push
  11. Enumerating objects:5,done.
  12. Counting objects:100%(5/5),done.
  13. Delta compression using up to 4 threads.
  14. Compressing objects:100%(2/2),done.
  15. Writing objects:100%(3/3),307 bytes |76.00KiB/s,done.
  16. Total3(delta 0), reused 0(delta 0)
  17. To192.168.106.70:linux/eryajf.git
  18. 635b61c..822b2f3 master -> master

然后再去构建一下:

第四次构建,已经看到刚刚模拟开发所添加的内容了。

那么现在,就可以引出这个自动打tag的功能所带来的另外一个大方便了,那就是方便回滚。

2,回滚功能。

我们可以在参数化构建当中进行参数的定义,依赖于Git版本控制的特性,当用户选择的是构建时,可以选择对应的分支进行构建,当用户选择的是回滚是,那么可以选择对应的tag进行回滚。事实上与分支的构建回滚是一个道理,不过这里直接选择tag,也非常方便。

那么在验证之前,我们需要对Jenkins进行一些小小的调整,通过添加刚刚表述的参数,以及执行的shell的配合,来完成这样一个构建回滚各有分工的一个事情。

1,添加mode选项。

在参数化构建过程中先添加一个选项参数,从而让构建以及回滚两种情况存在。具体配置如图:

2,再添加branch选项。

然后添加一个用于构建不同代码分支的字符参数,这个是一个很常规的配置,就不做过多介绍,具体如图:

3,添加Git Parameter选项。

然后添加一个用于回滚不同tag的选项,这里的tag是我们项目自动生成的,随后会做一下总结,具体如图:

4,修改shell内容。

修改一下shell的执行内容,做一个简单判断,脚本如下:

  1. cd $WORKSPACE
  2. if[ $mode =="deploy"];then
  3. git checkout $branch
  4. git pull
  5. echo "**********************************************"
  6. cat README.md
  7. echo "**********************************************"
  8. else
  9. git reset --hard $tagbak
  10. echo "**********************************************"
  11. cat README.md
  12. echo "**********************************************"
  13. 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的应用的更多相关文章

  1. Jenkins 六: 构建中执行shell或者 windows的批处理程序

    Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...

  2. jenkins实战(二):构建自由风格的maven项目

    本系列打算全面介绍jenkins的常规使用,这是第二篇,之前的文章在: jenkins实战(一):war安装及插件安装 一.新建项目 1.新建项目 此处我们打算新建自由风格项目,见下图. 值得注意的是 ...

  3. K8S(08)交付实战-交付jenkins到k8s集群

    k8s交付实战-交付jenkins到k8s集群 目录 k8s交付实战-交付jenkins到k8s集群 1 准备jenkins镜像 1.1 下载官方镜像 1.2 修改官方镜像 1.2.1 创建目录 1. ...

  4. JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建

    在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...

  5. Jenkins:基于linux构建ivy项目

    Jenkins:基于linux构建ivy项目 (二) 基于以上<Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)>的配置再进行对ivy项目构建: 启动tomcat ...

  6. jenkins:一个jenkins项目远程触发另一个jenkins项目构建配置

    很多时候,我们会有这样的应用场景:一个jenkins上的项目构建后,需要远程触发另一台机子上的jenkins中某个项目的构建,可以通过Parameterized Remote Trigger Conf ...

  7. Jenkins之使用Pyinstaller构建Python应用程序

    目录 1. 极简概述 2. Jenkins配置 2.1 安装JDK 2.2 安装Jenkins 3. 安装Docker 4. 使用PyInstaller构建Python应用程序 4.1 Fork 一个 ...

  8. Jenkins和maven自动化构建java程序

    转自:http://www.cnblogs.com/gao241/archive/2013/04/08/3008380.html,版权归原作者所有. Jenkins是一个非常出色的持续集成服务器,本文 ...

  9. jenkins使用Publish Over SSH中遇到的问题

    在jenkins中想使用publish over ssh来在构建后发送XML或PNG文件至服务器,以便做其它的操作,安装完publish over ssh后,填加构建,发现在构建失败时,不传送文件,老 ...

随机推荐

  1. pod详解

    什么是pod? 官方说明: Pod是Kubernetes应用程序的最基本执行单元-是你创建或部署Kubernetes对象模型中的最小和最简单的单元. Pod表示在集群上运行的进程.Pod封装了应用程序 ...

  2. 推荐个开源在线文档,助道友领悟 Django 之“道”

    本文面向有手(需要一点点 Python Django 基础)的小伙伴,急需文档管理者食用最佳. 作者:HelloGitHub-吱吱(首发于 HelloGitHub 公众号) 嗷嗷待哺的小白:" ...

  3. Vue method与computed的区别

    为了说明method与computed的区别,在此我想先来看看computed属性在vue官网中的说法: 模板内的表达式是非常便利的,但是它们实际上只用于简单的运算.在模板中放入太多的逻辑会让模板过重 ...

  4. hdu4791水题

    题意:       打印东西,给你区间和每个区间的价格,然后输入任务张数,输出最少花费..    题解:       昨晚的小测试就有这个题目,当时蒙B了,怎么也读不懂题目,一直纠结怎么把150拆成1 ...

  5. hdu2722 简单最短路,处理好输入就行

    题意:       从左上角走到右下角,有的最短时间,每段路径的长度都是2520,每段上都有自己的限制速度,方向. 思路:      直接写就行了,就是个最短路,权值是2520/限制,输入的时候细心点 ...

  6. POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)

    题意:       给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走. 思路:       感觉很赞的一个题目,据说证明是什 ...

  7. hdu2492 数状数组或者线段树

    题意:      给你一些人,每个人有自己的攻击力,输入的顺序就是每个人的顺序,他们之间互相比赛,两个人比赛的条件是必须在他们两个位置之间找到一个人当裁判,这个裁判的攻击力必须在他们两个人之间,问你最 ...

  8. PHP Proxy 负载均衡技术

    <?php $whitelistPatterns = array( ); $forceCORS = false; $anonymize = true; $startURL = "&qu ...

  9. Win64 驱动内核编程-34.对抗与枚举MiniFilter

    对抗与枚举MiniFilter MiniFilter 是目前杀毒软件用来实现"文件系统自我保护"和"文件实时监控"的方法. 由于 MiniFilter 模型简单 ...

  10. json对象的获取

    <script type="text/javascript"> var person = { //json对象定义开始 name:'tom', //字符串 age:24 ...