前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jenkins 之 复杂发布场景概述

jenkins 之 复杂发布场景概述

作者头像
木字楠
发布2023-10-17 10:42:43
2140
发布2023-10-17 10:42:43
举报
文章被收录于专栏:木字楠の空间木字楠の空间

复杂发布场景概述

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

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

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

参数化构建

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

代码语言:javascript
复制
//没有参数化构建
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主要用来接收消息我的如下:

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

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

代码语言:javascript
复制
#!/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

在这里插入图片描述
在这里插入图片描述

最终推送代码:

代码语言:javascript
复制
#!/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\"
     }
  }"
在这里插入图片描述
在这里插入图片描述

测试成功!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 复杂发布场景概述
    • 参数化构建
      • 项目更新消息推送
      相关产品与服务
      短信
      腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档