jenkins 之 复杂发布场景概述

举报
木字楠 发表于 2022/12/07 13:53:12 2022/12/07
【摘要】 在企业中,要实现敏捷开发,必须结合jenkins的众多插件来实现更牛逼的特性。

木字楠-header.gif


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

💡 创作目的:在企业中,要实现敏捷开发,必须结合jenkins的众多插件来实现更牛逼的特性。

☀️ 今日天气:2022-12-01 天空有小雪花飘落

📝 每日一言:有冬要来,有雪入怀。


🥫 复杂发布场景概述

在企业中,要实现敏捷开发,必须结合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\"
     }
  }"

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。