Jenkins的持续集成与持续部署

系统总体架构

在这里插入图片描述

  • Gitlab
    Gitlab是一款主要用于代码管理的工具,相较于GitHub,可以自己搭建服务器,这可以避免因为网络速度慢导致部署效率低下,同时,自己搭建服务器,安全性更高。
  • Jenkins
    Jenkins主要用于管理版本,进行代码的编译和部署。
  • Webhooks
    用来轻松的连接Gitlab和Jenkins的纽带。

持续集成与持续部署系统的工作原理

使用jar包部署项目的整体流程

  1. 使用git客户端将代码push到gitlab。
  2. gitlab的webhook插件会通知Jenkins进行工作。
  3. Jenkins从gitlab上拉取代码并使用Maven进行编译打包。
  4. Jenkins将jar包发到服务器。
  5. Jenkins调用服务器上的shell脚本停止之前的服务,并启动jar包。

搭建Jenkins系统

安装Gitlab

通过docker部署Gitlab

安装Jenkins

采用Tomcat+jenkins.war包部署的方式安装:

  1. 从官网(https://jenkins.io)下载war包,注意Jdk的版本
  2. 将war包放在Tomcat的webapps下
    /opt/apache-tomcat-8.5.88/webapps
  3. 修改tomcat配置文件
    在/opt/apache-tomcat-8.5.88/conf/server.xml的节点下添加URIEncoding=“UTF-8”,如下:
  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               URIEncoding="UTF-8"
               />
  1. 启动Tomcat
cd /opt/apache-tomcat-8.5.88/bin
nohup ./startup.sh &
  1. 访问"localhost:8080/jenkins",如果无法访问,请检查端口号是否占用,请检查Jenkins的版本与JDK的版本是否一致。

  2. 配置Jenkins的全局信息与安装插件请参考这篇文章

使用jenkins编译打包服务

  1. Jenkins构建一个Maven项目

Genneral随便填:
在这里插入图片描述

源码管理:URL后面记得加XXXX.git

在这里插入图片描述
构建触发器:当有代码提交到Gitlab上时,自动Build。
在这里插入图片描述
Build部分:
在这里插入图片描述
Post Steps:build成功之后,运行shell脚本,在本地部署jar系统。
在这里插入图片描述
脚本如下:

#!/bin/bash
export jar_name=demo1-0.0.1-SNAPSHOT.jar
export port=8099
echo "jar_name is ${jar_name}, port is ${port}"

pid=`jps -l |grep ${jar_name}  |awk '{print $1}'`
echo "pid is ${pid}"

if [[ -n "${pid}" ]]
then
	echo "删除进程"
	kill -9 ${pid}
    sleep 5
fi

cd /root/.jenkins/workspace/demo1/target/
chmod 777 ${jar_name}
echo "start ${jar_name} process"
export BUILD_ID=dontKillMe
nohup java -jar -Dserver.port=${port}  ${jar_name} >/data/log/${jar_name}.log &
echo "end ${jar_name} process"
  1. Gitlab中配置webhook
    输入与Jenkins联系的url
    勾选Trigger中的Push event选项
    去掉Enable SSL verification选项
    单机Add Webhook按钮
    在这里插入图片描述
    之后会在下方出现一个Webhook,点击测试按钮,若出现成功则表示配置成功。
    在这里插入图片描述
    现在如果有新代码提交,jenkins就会自动打包并部署了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国内免费版ChatGPT

目录 前言&#xff1a;网站大全 1. ChatGPT是什么 2. ChatGPT的发展历程 3. ChatGPT对程序员的影响 4. ChatGPT对普通人的影响 5. ChatGPT的不足之处 前言&#xff1a;网站大全 AI文本工具站 (laicj.cn) ——gpt-3.5 功能强大(推荐&#xff09; Chatgpt在线网页版-…

Compose For Desktop 实践:使用 Compose-jb 做一个时间水印助手

前言 在我之前的文章 在安卓中实现读取Exif获取照片拍摄日期后以水印文字形式添加到照片上 中&#xff0c;我们已经实现了在安卓端读取 Exif 信息后添加文字水印到图片上。 也正如我在这篇文章中所说的&#xff0c;其实这个需求使用手机来实现是非常不合理的&#xff0c;一般…

jenkins入门与安装

一、实验环境 selinux iptables off 主机名IP系统版本gitlab10.10.10.200rhel7.5jenkins10.10.10.10rhel7.5tomcat10.10.10.11rhel7.5 二、安装jenkins 1、解压安装包 下载地址&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ [rootjenkins ~]# tar xf …

视频截取动图怎么做?分享在线视频转gif小窍门

如何将一段视频制作成gif动图表情包呢&#xff1f;Gif表情包常见的制作方法就是将电影、电视剧中的某个画面截取出来做成gif表情包。那么&#xff0c;如何从视频中截取GIF呢&#xff1f; 一、怎样才能完成视频转gif制作&#xff1f; 通过使用GIF中文网的视频转gif&#xff08…

RT-Thread 1. GD32移植RT-Thread Nano

1. RT-Thread Nano 下载 RT-Thread Nano 是一个极简版的硬实时内核&#xff0c;它是由 C 语言开发&#xff0c;采用面向对象的编程思维&#xff0c;具有良好的代码风格&#xff0c;是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小&#xff0c;功能包括任务处理…

多维时序 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多变量时间序列预测

多维时序 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多变量时间序列预测预测结果基本介绍模型特点程序设计学习总结参考资料 预测结果 基本介绍 多维时序 | MATLAB实现CN…

字符串String

目录 String 字符串比较 charAt 取数组中的值 案例 substring 案例&#xff1a;手机号加密​ StringBuilder StringBuilder提高效率原理图 StringJoiner 字符串拼接底层方法 String 创造方法 直接赋值通过new关键字 / 构造方法 字符串比较 equals &#xff1a;要求比…

小白安装 stabel diffusion 篇

windows 系统安装 stabel diffusion 软件的方法其实很简单&#xff0c;只有 4 步&#xff08;安装过程遇到的报错问题&#xff0c;本文有详细的解决方案&#xff0c;都是我踩过的坑&#xff0c;给大家探路了&#xff09;&#xff1a; 1、安装 python&#xff08;建议安装 3.10…

Spark 2:Spark Core RDD算子

RDD定义 RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象&#xff0c;代表一个不可变、可分区、里面的元素可并行计算的集合。 Resilient&#xff1a;RDD中的数据可以存储在内存中或者磁盘中。 Distribut…

玩客云刷NAS

测试路由器支持IPV6 参考 这里 我用的是TPlink WDR7660 支持IPV6 主要设置桥模式 玩客云刷写固件 参考 这里 还有这里 玩客云固定IP 参考这里 sudo armbian-config 选择Network 选择有线网络->ip 选择static 然后根据自己情况进行设置 点击OK即可 更新国内源 参考这里 证书…

Flowable 生成的表都是干嘛的?(一)

一.简介 Flowable 默认一共生成了 79 张数据表&#xff0c;了解这些数据表&#xff0c;有助于我们更好的理解 Flowable 中的各种 API。 接下来我们就对这 79 张表进行一个简单的分类整理。 ACT_APP_*&#xff08;5&#xff09;ACT_CMMN_*&#xff08;12&#xff09;ACT_CO_*…

rtl仿真器-epicsim安装和测试

前言 epicsim 是芯华章的仿真器&#xff0c;基于iverilog 据说速度快两倍。 源码 github https://github.com/x-epic/EpicSim gittee https://gitee.com/x-epic/ 公司网站 https://www.x-epic.com/index.html#/en/developer 维护中了 安装 依赖 有些 apt-get install 就可…

大量名片图片转excel表格文件怎么转?有什么好办法?

随着市场经济的发展和社交交往的频繁&#xff0c;名片作为有效沟通方式&#xff0c;优雅和高效地传递个人或公司信息的同时&#xff0c;时常成为人们忙碌生活的问题之一&#xff1a;对于一个拿到的名片&#xff0c;我们需要将它收藏或转录至手机、电脑等媒介记录&#xff0c;但…

Kali-linux使用假冒令牌

使用假冒令牌可以假冒一个网络中的另一个用户进行各种操作&#xff0c;如提升用户权限、创建用户和组等。令牌包括登录会话的安全信息&#xff0c;如用户身份识别、用户组和用户权限。当一个用户登录Windows系统时&#xff0c;它被给定一个访问令牌作为它认证会话的一部分。例如…

谈谈包装类与泛型

目录 包装类 基本数据类型与对应的包装类 装箱和拆箱 装箱 拆箱 泛型 什么是泛型 泛型的语法与使用 泛型的编译 擦除机制 泛型的上界 泛型方法 提到泛型的话&#xff0c;我们就先提一下包装类吧&#xff01; 包装类 在Java中&#xff0c;由于基本类型不是继承自Ob…

Linux内核(十五)sysrq 详解 II —— 代码框架详解

文章目录 sysrq模块初始化流程图sysrq模块代码详解sysrq产生kernel crash事件流程sysrq 整体框架图sysrq 框架中添加自定义实例 Linux 版本&#xff1a;Linux version 3.18.24 sysrq模块初始化流程图 sysrq模块源码路径&#xff1a;linux-3.18.24.x/drivers/tty/sysrq.c 编译…

C++控制台打飞机小游戏

我终于决定还是把这个放出来。 视频在这&#xff1a;https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停&#xff0c;建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss&#xff08;上面视频2分47秒&#xff09;。 挺好…

Oracle数据库中了locked1勒索病毒攻击后怎么办,什么是locked1勒索病毒

Oracle数据库是一种被集团企业广泛使用的关系型数据库管理系统&#xff0c;但是随着科学技术的不断发展&#xff0c;在现代互联网环境中数据库安全性成为了一个非常重要的问题。而其中主要的威胁就是勒索病毒攻击。一旦数据库被勒索病毒攻击入侵&#xff0c;许多重要的数据就会…

消息中间件概念

什么是消息队列 消息队列是消息中间件的一种实现方式。 什么是消息中间件&#xff1f; 将消息中间件需要理解一下什么是消息和中间件&#xff1f; 消息 消息是指软件对象之间进行交互作用和通讯利用的一种方式。 中间件 百度百科的介绍&#xff1a; ​ 中间件&#xff08;Mid…

gma 1.1.6 | 2.0.0a1 (2023.05.14) 更新日志

从现在开始&#xff0c;gma 开始同步更新 gma 2 的前期预览版&#xff0c;并与 gma 1 的正式版同步发布。 gma 1.1.6 更新日志 新增 1、添加 3组 新的指北针样式。 修复 1、【map】高分辨栅格数据集内存溢出问题。   添加高分辨率栅格数据集且进行强制数据缩放时 偶现内存…