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参数的选项:
在这里插入图片描述

目录
相关文章
|
2月前
|
运维 安全 jenkins
Jenkins适合哪些场景
【10月更文挑战第18天】Jenkins适合哪些场景
|
1月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
56 2
|
4月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
9天前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
48 12
|
29天前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
1月前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
66 4
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
76 0
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
218 0
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
96 1
|
4月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
71 2