jenkins 之 复杂发布场景概述

简介: jenkins 之 复杂发布场景概述

复杂发布场景概述

在企业中,要实现敏捷开发,必须结合jenkins的众多插件来实现更牛逼的特性。
思考一个问题:==企业中究竟如何进行管理项目发布的?代码的回滚怎么做?==

  1. 开发环境:一般在本地机房,前后端开发联调,后端改动代码后即可实时在开发调试环境更新,供前端自行调试。
  2. 测试环境:一般在本地机房,不同迭代对应不同的测试环境,如何保证环境不冲突,交付测试后如何最快通知相关人员跟进
  3. 离线/灰度/UAT环境:目前大部分在云环境上构建
  4. 生产环境:云服务器环境,如何快速备份发布多个节点,发布成功的通知
  5. 移动端:安卓、IOS打包后通知相关人员下载

开发测试环境在本地机房,生产环境在云服务器,如何做jenkins主从节点
Docker的构建、K8S构建等

参数化构建

背景:每次构建项目时都需要去修改一下配置,然后保存,再去立即构建。这样修改容易修改出错误,影响到执行脚本,且每次都要去修改配置,不容易修改,操作也比较麻烦。就像我们写固定代码一样,但有了参数后,代码的复用性大大提高,我们可以根据具体的参数做不同的操作,比如1是发布,2是回滚。

//没有参数化构建
public int add(){
    return 1 + 2;
}

//参数化构建
public int add(int a,int b){
    return a+b;
}

//从上面两个简单的可以看出 代码的复用性大大提高

我们需要使用到两个插件
插件:Build with ParametersExtended Choice Parameter,默认已经安装
在这里插入图片描述
其中用得最多的是String Parameter和选项参数:
String Parameter:就是一个使用字符串值的参数变量
在这里插入图片描述
Choice:给出多个选项,构建时可以手动选择参数,默认是Coices内的第一行数据
在这里插入图片描述
启动测试:
在这里插入图片描述
我们会发现这里需要我们填写数据,而且这些数据我们也可以获取到。
在这里插入图片描述
通过参数化构建,我们可以取到构建人员究竟是想根据参数做什么操作,我们可以提前在shell脚本中做好对应的判断,比如1-是发布,我们可以调用发布的脚本代码,0-回滚,可以通过参数判断调用回滚的代码。

项目更新消息推送

消息推送的本质就是拿到机器人的token值,在jenkins自动拉取项目之后,通过shell脚本的执行来达到实时信息的推送的效果!
消息推送一般有如下几种:企业微信群消息、钉钉群消息、飞书群消息、邮箱提醒、短信提醒等。
前3种是企业中首选,3种基本差不多,这里我以钉钉群消息推送为例,首选你需要有一个钉钉群,可以自己拉3个人建一个,然后在群管理中加一个机器人,如下:
在这里插入图片描述
添加好后你会得到一个钉钉提供给你的URL链接,里面包含有机器人的token主要用来接收消息我的如下:

#由于token不能外露,这里仅展示一部分
https://***.dingtalk.com/robot/***?access_token=***********3b3724917e21cc47055

我们先实现最基本的推送,组装如下的内容:

#!/bin/bash
#-*- coding:utf-8 -*-

Message='测试环境 nanjustar 发布,所有接口受到影响,当前时间:2021/7/14'

curl 'https://***.dingtalk.com/robot/***?access_token=***********3b3724917e21cc47055' \
   -H 'Content-Type: application/json' \
   -d "
  {\"msgtype\": \"text\", 
    \"text\": {
        \"content\": \"$Message\"
     }
  }"

在这里插入图片描述
实际上上述内容非常简单,利用shell的curl命令,远程调用该url,并传入对应的消息body体,body体为钉钉要求的格式。
jenkins的任务中添加shell执行脚本,将内容复制到jenkins中.

为了可以获取到用户信息,我们安装Build User Vars Plugin插件:
在这里插入图片描述
安装后可拿到的用户信息:

Variable Description 说明
BUILD_USER Full name (first name + last name) 全名
BUILD_USER_FIRST_NAME First name 名字
BUILD_USER_LAST_NAME Last Name
BUILD_USER_ID Jenkins user ID jinkins 用户ID
BUILD_USER_EMAIL Email address 用户邮箱

在配置项目的时候一定要勾选Set jenkins user build variables
在这里插入图片描述
最终推送代码:

#!/bin/bash
#-*- coding:utf-8 -*-

if [ $type = 1 ];then
    typeDesc="发布"
else
    typeDesc="回滚"
fi

pname='\n项目名称:'${JOB_NAME}
vv='\n项目版本号:'${version}
handler_type='\n操作类型:'${typeDesc}

build_time="\n触发时间:$(date +%F-%T)"
build_u='\n触发人员:'$BUILD_USER_ID
Message='发布完成'${pname}${vv}${handler_type}$build_time${build_u}

curl 'https://***.dingtalk.com/robot/***?access_token=***********3b3724917e21cc47055' \
   -H 'Content-Type: application/json' \
   -d "
  {\"msgtype\": \"text\", 
    \"text\": {
        \"content\": \"$Message\"
     }
  }"

在这里插入图片描述
测试成功!

按分支发布

在实际开发过程中,一般会使用Git Flow流程开发,多个迭代伴随着多个分支,比如develop、release、master等分支,所以存在发布同分支代码的情况。

在jenkins拉取项目时,他默认的只会去mstaer分支去拉取,但是真正的开发中会有很多的分支。但是我们也不可能每次拉取都去配置中修改分支目录,所以我们在这里用配合参数化构建来进行配置。
在这里插入图片描述
选择指定分支发布,需要借助Git Parameter插件,也就是参数化构建中可选Git参数,插件安装如下:
在这里插入图片描述
插件添加之后我们会发现多了一个Git参数的选项:
在这里插入图片描述

目录
相关文章
|
5月前
|
jenkins Java 持续交付
【项目集成工具】Jenkins
【项目集成工具】Jenkins
|
12天前
|
监控 前端开发 jenkins
Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程
【4月更文挑战第29天】本文探讨了Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程。前端持续部署涉及代码提交、构建、测试和部署四个步骤。实现过程中需配置代码仓库、构建、测试和部署任务,安装相关插件并确保环境一致性。注意事项包括代码质量控制、环境一致性、监控预警和安全管理。通过Jenkins,可提升前端开发效率和质量,但需不断学习以应对技术发展。
|
27天前
|
数据挖掘 测试技术 Linux
【Docker项目实战】使用Docker部署Titra开源项目时间跟踪工具
【4月更文挑战第13天】使用Docker部署Titra开源项目时间跟踪工具
76 5
|
7月前
|
监控 jenkins 应用服务中间件
JenKins简介及安装
JenKins简介及安装
|
11月前
|
Java jenkins Shell
《项目实战》 Jenkins 与 CICD、发布脚本
《项目实战》 Jenkins 与 CICD、发布脚本
186 0
|
jenkins Java 应用服务中间件
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
310 0
【CI/CD技术专题】「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
|
jenkins Java 测试技术
使用 Jenkins 实现自动化部署演示效果| 学习笔记
快速学习使用 Jenkins 实现自动化部署演示效果。
129 0
使用 Jenkins 实现自动化部署演示效果| 学习笔记
|
jenkins .NET Linux
Jenkins 构建自动化.NET C ore 发布镜像
Jenkins 构建自动化.NET C ore 发布镜像
265 0
Jenkins 构建自动化.NET C ore 发布镜像
|
敏捷开发 前端开发 关系型数据库
Docker搭建开源版禅道以及项目基本流程介绍
禅道是一款国产开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理等于一体,是一款专业的研发项目管理软件,完整的覆盖了软件研发项目的整个生命周期。
Docker搭建开源版禅道以及项目基本流程介绍
|
jenkins Java 测试技术
jenkins安装部署实战
Jenkins安装部署 1、首先下载Jenkins.war包,官网:https://jenkins.io/download/,这块用的比较老,为了和配管的版本一致。 2、部署好Jdk和Tomcat 3、去apache官网下载maven软件包,部署好maven 4、svn环境,可以参考之前的博客配置web访问svn仓库篇。
973 0