jenkins部署流程图_一文教你使用 Jenkins 设计多环境、多项目持续集成环境!

9fc24cbe444a981ba815089bce4e1d3c.png

自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

目标:

  • 支持多分支、多环境、多项目、多套配置文件、多编程语言

  • 支持一键构建、集群发布

  • 支持一键回滚历史版本

  • 快捷配置添加新的部署项目

  • 支持多个项目使用同一个job发布或回滚

另外:也可以根据需要加入gitlab自动触发构建、自动化测试、钉钉通知、邮箱通知等需求

最终效果图

一键发布

5a608e1488727a6caedcfa6f778a4a70.png

一键回滚

46412e1f0b382d6ade0067bdf07530f7.png

Jenkins相关目录设计

----jenkins-ex      jenkins构建时使用到的目录------software      Jenkins安装目录--------master--------slave------backup        jenkins备份目录--------master------module        功能模块,每一类功能相关的文件放在对应的子文件夹中--------common----------script        各模块公用的脚本------publish       发布功能--------settings----------config    构建时配置文件。Eg: jenkins_profile.pubxml、项目配置文件等------------test-publish-template-app-config.json   项目映射配置表----------script    Jenkins job构件时调用的脚本(方法封装)------source-code   拉取的源代码存放目录--------test----------系统标识 ------------应用名------build-result      构建产物(编译后的结果)--------test----------系统标识 ----------应用名------temp-file 临时文件,job执行过程中产生的文件--------builder-history 构建历史记录文件--------job-params      构建过程中传递参数的文件------app-config  应用对应的环境配置文件--------test----------系统标识------------应用名------other-sub-module
……

约定及规范

jenkins job命名

  • job名全小写,多单词用”-”分割。(eg:publish-template-onekey-deploy)

  • job命名约定:模块名-环境-功能名。(eg:publish模块,publish-test-onekey-deploy)

  • 模块中组件job命名约定:模块-c-组件名。(eg:publish-c-pull-code)

  • job输入参数以”p_”为前缀

Jenkins job中的脚本命名(eg:powershell)

  • 变量全小写,多单词用”_”分割

规范约定

  • 代表路径的变量值,以”\”结尾

  • 备份名字中用“#”做分隔符,还原时好取参数(eg:p_app_key#2019-1219-1503)

架构设计

CICD架构图

CICD过程主要在两个局域网中执行:构建服务器(开发内网)和部署服务器(生产内网)
9bf56e3a96b5fb81f598ce0ea882164c.png

项目映射配置文件设计

想要实现使用一个job,通过下拉来” 发布|回滚”不同的项目,我们需要一个灵活的项目配置映射文件,类似如下:

592e45b4d96fdde29aa5fb4908b8ab6e.png

配置文件选项含义从命名上可以识别,主要包括:环境、代码分支、部署路径、拷贝排除文件列表、项目信息(项目唯一标识、目录文件夹名、源代码路径、开发语言、集群节点信息…)等等

  • app_config节点下的配置,可以覆盖父节点配置,适配项目特定的部署要求。

  • app_config是数组节点,可以轻松添加新的部署项目,实现新项目的快速CICD。

一键发布job设计

“一键发布”主要经历的阶段有:组合项目相关参数>>获取最新代码>>编译打包>>推送应用文件到服务器>>应用备份>>拷贝到Temp文件夹>>发布到部署目录

为了更好的实现和控制”一键发布”这些阶段,设计了如下输入参数:

3d6e332ddceab0f4944b3d0e7d2070aa.png
d2166a2b424c6a7151e56251c4cc583f.png

一键回滚job设计

实现思路:在”一键发布”时,将发布记录存到文件中,存储key为:p_app_key#2019-1219-1503。执行回滚时,选择要回滚的历史项目,先解析出p_app_key再获取项目配置信息,再回滚此项目的特定历史版本。

设计的输入参数如图:

da6ce0cee92bb57b3faabaada642b958.png
a9248b6092cc37917ff7f3aad0d5e575.png

简易多环境CICD流程

一般软件公司对于软件的开发、测试、发布都有好几个环境,所以针对各个环境都会有对应的CICD流程,这边设计了一个简易的多环境CICD流程图,如下:

54328fd61fd7d16633bc7e4e4eeb218c.png

自动触发CICD还是手动触发CICD???,我认为:

  • 开发环境采用手动触发:因为对于开发环境,提交代码比较频繁,而且有时候提交到git也并不想触发CICD。可以采取每晚定时自动触发CICD,便于异常代码及时抛出

  • 测试环境采用自动触发:因为测试代码的 git 分支合并是有条件限制的,合并频率比较少

  • 生产环境采用手动触发:因为生产环境的发布,有严控发布时间的,手动触发控制力强

作者:滴答的雨
https://www.cnblogs.com/heyuquan/p/jenkins-multi-env-cicd-architecture.html

end

最新整理的 2TB 干货资源,包括但不限于:架构师、大数据、Docker、运维、数据库、redis、MongoDB、电子书、Java基础、Java实战项目、ELK Stack、机器学习、BAT面试精讲视频等。只需在公众号对话框回复关键字:1024 即可免费获取全部资料。 

推荐阅读  点击标题可跳转

1、再见!蚂蚁金服

2、葵花宝典!一文搞定 Nginx 限流配置

3、四核、独显!首批"重庆造"纯国产 PC 问世

4、Redis性能指标监控!你知几何?

5、面试官:kill -9 进程杀不掉,怎么办?

6、要干掉oracle?阿里推出国产开源的JDK!

看完本文有收获,请分享给更多人

关注「民工哥技术之路」加星标,提升IT技能

0a1fe71435002482e62e3f9c505b43ef.png

好文章,朕在看」❤️↓↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

udp 使用connect优点_一文搞懂TCP和UDP的区别

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇。TCP/IP协议集包括了超文本传输协议(HTTP)、文本传输协议(FTP)、远程登录协议(Telnet)、internet协议(IP)、internet控制信息协议(IMCP)等&#xff0…

小森生活显示无可用服务器,《小森生活》无可用游戏服务器解决教程 无可用网关服务器怎么办...

导读小森生活无可用网关服务器是什么意思?怎么解决?小森生活无可用网关服务器这个提示在进入游戏中会出现哦,很多玩家都无法正常进入游戏怎么解决呢,现在就来告诉给大家详细解决方法吧~小森生活无可用游戏服务器...小森生活无可用…

矢量归一化_浅析矢量网络分析仪误差模型及校准

最近跟业界一位同仁讨论了矢量网络分析仪的误差模型及校准过程,简单整理了一下,分享给大家,欢迎一起讨论。矢网的误差模型确实不太好理解,一般只有研发矢网或者专攻测试技术的人员才会深入探究。使用矢网测试之前,都是…

数据库表名大小写_某教程学习笔记(一):09、MYSQL数据库漏洞

她其实并不喜欢你,只是在寂寞的时候,你刚好撞上去,刚好你对她好,刚好你能入她眼,刚好她来着不拒,这所有都是刚好。。。---- 网易云热评一、MYSQL语句创建数据库create database test;选择要操作的数据库use…

arcgis几何修复有作用吗_修复损坏的 shapefile

一、SHP文件Shapefile文件(简称SHP)作为ESRI一种经典的数据格式,被很多其他软件所支持,如CAD、MapGIS等,虽然也有一些限制(如无法进行拓扑分析、字段长度为10个字符等),但其仍然是广泛使用的空间数据格式。用得多了,有…

服务器存档修改,云服务器存档修改器

云服务器存档修改器 内容精选换一换修改云服务器信息,目前支持修改云服务器名称及描述。您可以在API Explorer中直接运行调试该接口。PUT /v2.1/{project_id}/servers/{server_id}参数说明请参见表1。参数说明参数是否必选描述project_id是项目ID。获取方法请参见获…

contains方法_【原创】Pandas数据处理系列(二):常用处理方法笔记

Pandas的魅力在于处理数据的灵活性,但是由于太灵活,会导致使用者很容易忘记各类方法。在Pandas学习这件事情上,真正体现了好记性不如烂笔头的方法特性。故特用此文章记录Pandas常用的数据处理方法,需要用的时候,打开此…

模板多个列表级联_如何使用word制作模版?word怎样使用模板?

Word模板的使用教程:使用Word预设模板首次打开Word时,显示的第一个窗口会询问您要打开的文件。有几种选择。您可以打开一个新文档,这意味着将打开一个没有文本或样式的新文件。在新的空白文档中显示的唯一样式是在空白文件模板中设置的样式。…

联想gen系列服务器,Hpe Microserver Gen10 Plus开箱

Hpe Microserver Gen10 Plus开箱2021-04-19 10:53:2325点赞69收藏83评论心水很久的gen10 plus终于到了,关注了很久终于下手了,在值得买好像都没看到gen10 plus的开箱,那我就来一个开箱吧,本来是一个gen8升级到gen10plus的过程&…

加密选项_Zoom终于为免费账户也提供了端到端通讯加密的选项

受 COVID-19 健康危机的影响,世界各地的人们的工作和日常生活都发生了极大的改变。与此同时,以 Zoom 为代表的云会议解决方案,已经成为了许多人协同工作和网络授课的首选解决方案。问题在于,免费版的 Zoom 服务迟迟未能引入端到端…

c++ map 初始化_如何调整Linux内核启动中的驱动初始化顺序?

如何调整Linux内核启动中的驱动初始化顺序?【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处&…

mysql group_concat去重_mysql 数据库group_concat函数的一些用法

对于group_contact函数一般懂一点sql的人来说,并不算太陌生,它主要配合group by 使用,起着分组时,将涉及行的相应的字段串联成一个字段如下表a:我们按照type分类,并将对应的名称按逗号分隔保存为一个names字…

mysql 5.5 查询_mysql5.5数据库优化--定位慢查询

什么是慢查询mysql记录下查询超过指定时间的语句,被称为“慢查询”;启动慢查询日志1.查询是否把索引的SQL记录到慢查询日志中SHOW VARIABLES LIKE log_queries_%2.将查询到的值若为OFF,表示没有记录,就开启记录SET GLOBAL log_que…

svn mysql认证_SVN基于MySQL认证

SVN的简介和工作原理Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但是普通应用在Linux上。SVN主要是通过两种方式来工作:即…

mysql 日期类型比价_MySQL 日期时间类型怎么选?

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类…

怎么才能点一下excel中的超链接就显示出图片?_Excel如何批量建立超链接,搭建工作台...

本篇是“建立工作导航”第3讲如果您错过了前两篇:点墨楼:高效秘技!用EXCEL制作导航页和日志表管理日常工作​zhuanlan.zhihu.com点墨楼:批量提取文件名,快速建立EXCEL工作台文件路径​zhuanlan.zhihu.com为了提高工作效…

全局修改elementui message 右边弹出_ElementUI 只允许 $message 提示一次

场景:在某个API接口中调用了ElementUI的Message方法,在加了loading的情况下,多次请求会重复调用Message方法。Message时间长会重叠,时间段看不清提示内容,很烦~~~~这波是…

mysql 存树 闭包表_关系型数据库树形关系存储-闭包表

前言在关系型数据库中,有一种逻辑关系比较难处理,这种就是树形结构。目前有很多主流的处理方案,比如说直接在业务表中存储上一级id,这样就可以用递归查询SQL的形式找到某一节点的父节点,子节点,或者兄弟节点…

很大的.xls 文件导入sqlserver2005导入不全_python3 接口测试数据驱动之操作 excel 文件...

python3 接口测试数据驱动之操作 excel 文件1.4 操作 excel 文件Python 中一般使用 xlrd 库来读取 Excel 文件, xlrd 库是 Python 的第三方库。1.4.1 xlrd 库安装Xlrd 库跟其他第三方库一样,都是通过 pip install xlrd 命令来安装。安装成功之后,在 C:Py…

php mysql练手_ThinkPHP5练手Demo实战

最近有个朋友有个小需求,刚好有时间,也刚好准备研究一下tp5,听说tp5规范了,而且更傻瓜化了。便做了这个论坛的小Demo,开源出来玩玩,改天做两个模版。说句实话,TP5模型层,数据库层真的…