jenkins结合gitlable企业集成部署实战

news2025/1/16 5:44:55

简介
Jenkins是一个开源软件项目,起源于Hudson(Hudson是商用的),是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成

1.0 搭建jenkins

下载war包

http://updates.jenkins-ci.org/download/war/

启动方式一

war包直接启动
cat start.sh 
#!/bin/bash
#
cd /home/jenkins
. /etc/profile.d/java11.sh
java -version
java  -Xmx2048m -Xms2048m -XX:MaxPermSize=256M  -jar  jenkins.war  --httpPort=80  >> jenkins.log  2>&1  &

停止服务

cat stop.sh 
#!/bin/bash
#
kill -9 `ps -ef | grep jenkins |grep -v grep  | awk '{print $2}'`

启动方式二
将war包直接丢在tomcat下 用tomcat管理启动
在这里插入图片描述

2.0 安装jenkins插件

参考我之前的jenkins插件解决办法

https://blog.csdn.net/weixin_43546282/article/details/128572426?spm=1001.2014.3001.5501

3.0 发布方式一(根据commit_id进行部署发布)

3.1 创建视图,一般一个项目创建一个视图,当部署项目比较多的时候方便查找。
在这里插入图片描述
在这里插入图片描述

3.2 创建自由风格的任务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编写部署脚本

pwd
if [ $confirm = true ];then
pwd

dir="/home/dingding/saas5-xx"
project="yuxin-xx"
pro="saas5-xx"
jar_name="xxx-xx.jar"
server_name="yuxin-job"
echo "$project 项目编译"
.     /etc/profile.d/java11.sh 
.	  /etc/profile.d/maven.sh 
cd ${WORKSPACE}/yuxin-service/yuxin-service-job
mvn -s "/usr/local/maven/conf/settings-s5.xml"   clean  package  -Dmaven.test.skip=true -Plockin-prod

for  ip  in 192.168.2.xx 192.168.3.xx
do
echo "$ip  流量下线"
/data/jenkins/jenkinsenv/env3.9/bin/python /production/jenkins/conf/scripts/lockinNacos.py saas5 ${server_name} ${ip} del
sleep 2

echo "停止$project 服务"
ssh   root@$ip  "systemctl  stop  $project.service "
echo "copy $project 项目"
ssh   dingding@$ip  "if [ ! -e ${pro} ]; then mkdir ${pro};fi"
ssh   dingding@$ip  "cd ${pro} && if [ -f ${jar_name} ];then rsync -r --delete ${jar_name} ${jar_name}.bak;fi "
rsync  -avz target/${jar_name}  dingding@$ip:$dir
echo "启动$project 服务"
ssh   root@$ip  "systemctl  start $project.service "

echo "检测$project 服务"

sleep 2
echo "$ip  流量上线"
/data/jenkins/jenkinsenv/env3.9/bin/python /production/jenkins/conf/scripts/lockinNacos.py saas5 ${server_name} ${ip} add
done
else
	echo "no"
fi]

这是一个比较典型的服务部署脚本

1.拉去代码
2.项目编译
3.流量下线
4.停止服务
5.部署服务
6.检查服务
7.流量上线

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

部署发布的服务会在这边看到,红色表示失败,蓝色表示成功。
如果同一个仓库下有多个服务类似于微服务这种可以选择集合部署脚本(同一个commit_id)

pipeline {
    agent {
    	#项目标签
        label 'xxxxxx_jenkins'
    }
    environment {
    	#项目仓库地址
        GITURL = 'git@xxxx.xxx.net:xxx/xxxx-xxxx.git'
    }
    #job01
         stage('prod-saas5-yx-oa') {
            steps{
                build job: 'prod-saas5-yx-oa', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: true],
                    [$class: 'StringParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        }
    #job02
         stage('prod-saas5-yx-log-manager') {
            steps{
                build job: 'prod-saas5-yx-log-manager', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: true],
                    [$class: 'StringParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        } 

    }
}

在这里插入图片描述
如图所示多个项目继续写下去即可,最终的效果如图所示
在这里插入图片描述
在这里插入图片描述

4.0 发布方式二(根据分支发布)

前面创建任务的模式不变,配置参数有细微的变化
在这里插入图片描述
配置高级
在这里插入图片描述
在这里插入图片描述
其他配置保持不变
在这里插入图片描述
分支模式集合部署
选择流水线任务模式
在这里插入图片描述
在这里插入图片描述
批量部署脚本参考,多个任务写多个stage

pipeline {
    agent any
    
    environment {
        GITURL = 'git@xxxxxx.xxxxx.net:xxxxx/xxxxx-xxxxx.git'
    }

    stages {
        stage('dev-saas5-web') {
            steps {
                build job: 'dev-xx-web', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: 'true'],
                    [$class: 'GitParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        }
        stage('dev-saas5-xx-xxx') {
            steps {
                build job: 'dev-xxx-web-xxx', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: 'true'],
                    [$class: 'GitParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        }

    }
}

在这里插入图片描述
在这里插入图片描述
两种方式都能实现任务的批量部署与发布,但是需要注意的是分支与commit_id相同才能用

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

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

相关文章

新的跨平台渲染引擎:Ab3d.DXEngine 5.2 Crack

用于 WPF 和 WinForms 的 DirectX 11 3D 渲染引擎 Ab3d.DXEngine 是一种超快的 3D 渲染引擎,可用于 .Net 桌面应用程序。采集 by Ω578867473 Ab3d.DXEngine采用超快的多线程渲染技术,可以充分利用显卡,提供与使用C时几乎相同的极致性能。 该…

javaEE 初阶 — 线程安全的集合类

文章目录1. 多线程环境使用 ArrayList多线程使用队列3. 多线程环境使用哈希表3.1 Hashtable3.2 ConcurrentHashMap4. 相关面试题1. 多线程环境使用 ArrayList java 标准库里的大部分集合类都是 “线程不安全” 的。 多个线程使用同一个集合类对象,很有可能会出问题。…

WebDAV之葫芦儿·派盘+Air Explorer

Air Explorer 支持WebDAV方式连接葫芦儿派盘。 电脑本地硬盘不够,网盘云存储已经成为存储的一种趋势。网盘限额,数据存在多个网盘内,操作麻烦还费事。 Airexplorer可以完美解决这个困扰。Air Explorer是一款非常不错的云存储账户管理软件,常见的在线云存储服务器都支持;还…

六道算法基础题详解

目录 1.力扣第217题:存在重复元素 2.力扣第53题:最大子数组和 3.力扣第1题:两数之和 4.力扣第88题:合并两个有序数组 5.牛客BM1题:反转链表 6.牛客BM2题:链表内指定区间反转 1.力扣第217题&#xff1…

6.1、应用层概述

1、基本概述 应用层是计算机网络体系结构的最顶层\color{red}最顶层最顶层,是设计和建立计算机网络的最终目的\color{red}设计和建立计算机网络的最终目的设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。 早期基于文本的应用(电子邮件…

RNNoise:学习噪声抑制

目录 1. RNNoise简介 2. 噪声抑制 3. 深度学习和循环神经网络 4. 一种混合的方法 6. 关于数据集 7. 从python到C语言 8. 其他资源 RNNoise:学习噪声抑制 原文地址:RNNoise: Learning Noise Suppression (jmvalin.ca) 1. RNNoise简介 该例子展示…

共享购深度解析——新玩法解读

共享经济模式以合理配置网络资源、减少销售市场交易费用、推动私营经济强势来袭等优点颠覆性创新地严重影响传统商业模式,根据“自由者”的协同,共享经济模式给供需彼此更自由选择和由上而下的制度变革,提高了经济形势高效率,变成…

Pytorch 环境和分布偏移与错误使用机器学习例子

假设我们训练了一个贷款申请人违约风险模型,用来预测谁将偿还贷款或违约。 这个模型发现申请人的鞋子与违约风险相关(穿牛津鞋申请人会偿还,穿运动鞋申请人会违约)。 此后,这个模型可能倾向于向所有穿着牛津鞋的申请人…

代码随想录算法训练营第十六天二叉树 java : 104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

文章目录前言深度是个啥,高度又是啥Leetcode 104.二叉树的最大深度题目讲解Leetcode 111.二叉树的最小深度题目讲解Leetcode 222.完全二叉树的节点个数(优先掌握递归题目讲解总结前言 今天将主要围绕 深度和高度 来展开 复习一下递归三部曲 确定递归函…

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题(亲测有效)

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题(亲测有效) 文章目录问题描述问题分析解决方法1解决方法2解决方法31) 修改基本设置2)修改配置文件问题描述 我的电脑环境是:Windows 10 Excel 2016版本。 文件…

【前端之旅】Nginx快速入门

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【Blender UV映射02】智能UV映射 创建和应用法线纹理

写在前面 前面的学习记录: 【Blende UV映射01】创建UV 使用UV贴图处理纹理 依旧是跟着Blender 2.8 UV Mapping教程,本文是教程的P8-P12的过程记录。 1 一些操作记录 调整滚轮缩放 如果发现Blender缩放过快, 键盘的"/"数字键…

Java并发编程实战 学习笔记 Day7

并发编程是比较进阶的知识,涉及到很多底层的东西,学习起来是比较困难的。并发编程的bug更多的是偶发性的,很难复现,排查起来也很困难,要想快速解决问题,就要理解并发编程的本质,追本溯源&#x…

Android ANR bugreport log分析

最近工作中频繁遇到设备ANR问题,而且是概率性的那种,于是决定花点时间找找规律复现分析下 说道这里,抓日志是问题解决的最有效途径,这里不得不说一下 bugreport log,其实网上关于它的分析方法有很多,在此仅仅是为了记录…

小型水库在线监测解决方案

一、方案背景水利部全国水利普查显示我国共有水库98002座,其中小型水库93308座。水库对防汛减灾、供水保障和农业灌溉等至关重要,水库的稳定运行关系到下游人民群众的生命财产安全,关系到当地经济发展和社会稳定。在2020年11月18日国务院常务…

EasyVim:简单强大的VIM配置

EasyVim 简单强大的vim配置,熟练后可大大提高开发效率(VS Code的两倍以上)。 安装 安装过程需要从github下载很多插件,国内尽量挂VPN git clone https://github.com/yuesong-feng/EasyVim cd EasyVim/ sh ./install.sh vim :P…

JavaScript基础(16)_数组方法、数组遍历、foreach

数组方法unshift():向数组开头添加一个或多个元素,并返回新的数组长度。向前边插入元素以后,其他的元素索引会依次调整。push():向数组的末尾添加一个或多个元素,并返回数组新的长度。该方法会将数组新的长度作为返回值返回。shift():删除数组…

【工具推荐】 Obsidian 插件 Obsidian to Flomo 一键同步内容到 Flomo 插件

目录一、Obsidian、Flomo、Obsidian to Flomo 他们都是什么?1. 什么是 Obsidian ?2. 什么是Flomo ?3. 什么是Obsidian to Flomo ?二、如何安装 Obsidian to Flomo ?三、插件使用方法1. 启用插件并配置API四、如何使用插…

《2022大数据产业年度创新技术突破》榜重磅发布丨金猿奖

‍年度金猿榜单/奖项本届“数据猿年度金猿策划活动——2022大数据产业创新技术突破榜单/奖项”由金猿&数据猿共同推出。‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年下半年度,由数据猿、金猿组委会共同推出的第五届 “年度金猿季大型主题策划活动”…

Unity Netcode for GameObjects多人联机(源文件)

一、安装Netcode for Gameobjects Netcode for Gameobjects是Unity新推出的联机解决方案,该解决方案目前处于初期,相关功能不是很完善,但是用起来还不错。下面介绍一下相关用法。 首先下载安装Netcode for Gameobjects,其官方网站…