当前位置: 首页 > news >正文

2024最新 Jenkins + Docker实战教程(七)- Jenkins实现远程传输和自动部署

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker+Git+Maven的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

2024最新 Jenkins + Docker实战教程(七)- Jenkins实现远程传输和自动部署

  • 前言
  • Publish Over SSH 介绍
  • 开始配置Publish Over SSH 插件
  • 编写目标服务器Sell脚本
  • 结语

前言

在之前的章节中,博主带着大家都是基于一台Jenkins服务器多个容器的形式实现的自动构建部署,当然这个也已经满足了大多数公司内网测试的要求,而有时候公司的应用服务器和Jenkins服务器是分开的,那么就需要实现通过Jenkins服务器通过SSH远程连接到应用服务器,上传部署文件并部署。

本章节复用第四章节教程中的的项目,Dockerfile相关内容请参考第四章节内容:
2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署

本章节就跟着博主一起来实现这个需求。在此之前请确认你已经构建了应用服务器且安装好了Docker环境,如博主的两台虚拟机

在这里插入图片描述

Publish Over SSH 介绍

Publish Over SSH 是 Jenkins 的一个插件,它提供了通过SSH协议与远程服务器进行文件传输和执行命令的功能。【插件地址】

Publish Over SSH 特性

  • SCP-通过 SSH(SFTP)发送文件
  • 在远程服务器上执行命令(可以为服务器配置或整个插件禁用)
  • 使用用户名和密码或公钥认证
  • 密码/密码短语在配置文件和 UI 中加密
  • SSH SFTP/SSH Exec 可用作构建过程中的构建步骤
  • 在 (maven) 项目构建之前或构建之后运行 SSH,无论构建是否成功
  • 可选择覆盖作业配置中每个服务器的身份验证凭据(如果全局配置中未为该服务器提供身份验证凭据,则提供这些凭据)
  • 如果文件传输失败,可选择重试(对于不稳定的连接很有用)
  • 允许在伪 TTY 中执行命令/脚本

开始配置Publish Over SSH 插件

在第二章中 :2024最新 Jenkins + Docker实战教程(二)- Jenkins相关配置 我们配安装了Publish Over SSH插件,今天我们就来学习如何使用这个插件

通过 「主页」->「系统管理」->「系统配置」 找到Publish Over SSH 配置项目
在这里插入图片描述
新增 SSH Server

在这里插入图片描述
新建一个任务 jenkins-demo-ssh 还是采用第四章节的项目,这里就不赘述了。

主要就是 Post Steps 有所改动 ,Add post-build step -> Send files or execute commands over SSH
在这里插入图片描述
开始配置需要传输的文件以及目标服务器存放的目录

Jenkins会默认找到任务的工作目录 即:
/home/jenkins-data/workspace/jenkins-demo-ssh

在这里插入图片描述

Source files 传输多个文件可以用 逗号分割

完成配置保存,我们开始执行 立即构建
在这里插入图片描述
登陆目标服务器 检查文件是否存在
在这里插入图片描述
ok 到了这一步我们已经实现了将Jar文件和Dockerfile文件传输,接下来我们设置目标服务器执行脚本让项目跑起来

编写目标服务器Sell脚本

在我们刚才新配置的SSH Server继续修改,找到 Exec command
在这里插入图片描述
脚本如下:

# 进入目标服务器存放传输文件目录
cd /data/jenkins-demo-ssh
#构建镜像
docker build -t jenkins-demo .
# 使用docker ps和grep来检查容器是否存在
if docker ps -a | grep "my-jenkins-demo" > /dev/null; thenecho "容器存在"#容器存在则停止并删除容器docker stop my-jenkins-demodocker rm my-jenkins-demo
elseecho "容器不存在"
fi
#运行容器
docker run -d -p 9090:9090 --name my-jenkins-demo jenkins-demo

继续测试构建执行,观察控制台输出,显示 Finished: SUCCESS 我们登陆目标服务器查看镜像和容器是否都存在了

#查看镜像
docker images
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
jenkins-demo   latest    924b3b68490a   11 minutes ago   672MB#查看容器
docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                       NAMES
8b836be4a639   jenkins-demo   "java -jar jenkins-d…"   13 minutes ago   Up 13 minutes   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   my-jenkins-demo

最后我们访问SpringBoot项目进行测试 http://192.168.1.21:9090/hello-jenkins

结语

通过使用JenkinsPublish Over SSH插件,可以轻松实现将项目部署到远程服务器,并在远程服务器上执行部署脚本。本文详细介绍了插件的安装和配置步骤,以及使用一个DEMO项目来作为演示一步一步的带着大家在目标服务器实现自动部署。


在这里插入图片描述

相关文章:

2024最新 Jenkins + Docker实战教程(七)- Jenkins实现远程传输和自动部署

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

WWW24因果论文(1/8) | 利用强化学习(智能体)进行因果问答

【摘要】因果问题询问不同事件或现象之间的因果关系。它们对于各种用例都很重要,包括虚拟助手和搜索引擎。然而,许多当前的因果问答方法无法为其答案提供解释或证据。因此,在本文中,我们旨在使用因果关系图来回答因果问题&#xf…...

比较kube-proxy模式:iptables还是IPVS?

kube-proxy是任何 Kubernetes 部署中的关键组件。它的作用是将流向服务(通过集群 IP 和节点端口)的流量负载均衡到正确的后端pod。kube-proxy可以运行在三种模式之一,每种模式都使用不同的数据平面技术来实现:userspace、iptables…...

CSS:浮动

▐ 文档流: 由于网页默认是一个二维平面,当我们在网页中一行行摆放标签时,块标签会独占一行,行标签则只占自身大小,这种情况下要实现网页布局就很麻烦了,所以我们就需要通过一些方法来改变这种默认的布局方…...

SQL 语言:嵌入式 SQL 和动态 SQL

文章目录 基本概述嵌入式 SQL动态 SQL总结 基本概述 嵌入式SQL和动态SQL是两种在应用程序中嵌入和使用SQL语句的方法。它们都允许开发人员在编程语言中编写SQL语句,以便在应用程序中执行数据库操作。然而,这两种方法在实现方式、性能和灵活性方面存在一…...

Java Object类方法介绍

Object作为顶级类,所有的类都实现了该类的方法,包括数组。 查询Java文档: 1、object.eauqls(): 其作用与 有些类似。 : 是一个比较运算符,而不是一个方法。 ①可以判断基本类型,也可以判断引用类型。 ②若…...

2024 京麟ctf -MazeCodeV1

文章目录 检查代码思路一个字节的指令注意附上S1uM4i佬们的exp https://www.ctfiot.com/184181.html 检查 代码 __int64 __fastcall check_solve(char *a1) {__int64 result; // rax__int64 v2; // rax__int64 index_step; // rax__int64 v4; // rax__int64 v5; // rax__int64…...

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…...

自学动态规划——零钱兑换

零钱兑换 322. 零钱兑换 - 力扣(LeetCode) 注意几个关键的地方: 因为每次都是找min,所以我们不能将所有元素都初始化为0,不然最后结果一定是0,这里我设置为0x3f3f3f3f,表示无解。当amount0的…...

kafka单机安装及性能测试

kafka单机安装及性能测试 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,并于2011年开源,随后成为Apache项目。Kafka的核心概念包括发布-订阅消息系统、持久化日志和流处理平台。它主要用于构建实时数据管道和流处理应用&#xff…...

2024.05.29学习记录

1、css面经复习 2、代码随想录二刷 3、rosebush upload组件初步完成...

6.10 Libbpf-bootstrap(一,简介)

写在前面 在看完前面的介绍,是不是感觉看了也就看了。但是,如果想要像BCC那样使用libbpf编写BPF程序,该怎么开始呢? 那么这就需要libbpf-bootstrap了。 libbpf-bootstrap是官方推荐的一个范式,就像我们写PPT的模版。简单来说可以简化我们的BPF开发流程,它可以帮助我们…...

2.1.2 基于配置方式使用MyBatis

文章目录 实战目标实战步骤1. 创建Maven项目2. 添加项目依赖3. 创建用户实体类4. 创建用户映射器配置文件5. 创建MyBatis配置文件6. 创建日志属性文件7. 测试用户操作8. 运行测试方法 预期结果实战方法结论 实战目标 本实战的目标是演示如何使用MyBatis框架来操作数据库。通过…...

使用NuScenes数据集生成ROS Bag文件:深度学习与机器人操作的桥梁

在自动驾驶、机器人导航及环境感知的研究中,高质量的数据集是推动算法发展的关键。NuScenes数据集作为一项开源的多模态自动驾驶数据集,提供了丰富的雷达、激光雷达(LiDAR)、摄像头等多种传感器数据,是进行多传感器融合…...

氢燃料电池汽车行业发展

文章目录 前言 市场分布 整车销售 发动机配套 氢气供应 发展动能 参考文献 前言 见《氢燃料电池技术综述》 见《燃料电池工作原理详解》 见《燃料电池发电系统详解》 见《燃料电池电动汽车详解》 市场分布 纵观全球的燃料电池汽车市场,截至2022年底&#xff…...

Linux服务器配置ssh证书登录

1、ssh证书登录介绍 Linux服务器ssh登录有密码登录和证书登录两种。如果使用密码登录,容易遭受密码泄露或者暴力破解,我们可以使用ssh证书登录并禁止使用密码登录,ssh证书登录通过公钥和私钥来完成整个连接过程,公钥保存在服务器…...

端口扫描利器--nmap

目录 普通扫描 几种指定目标的方法 TCP/UDP扫描 端口服务扫描 综合扫描 普通扫描 基于端口连接并响应(真实) ​ nmap -sn 网段(0/24)-sn 几种指定目标的方法 单个IP扫描 IP范围扫描 扫描文件里的IP 扫描网段,(排除某IP) 扫描网段(排除某清单IP) TCP/UDP扫描 -sS …...

React基础知识笔记

Reat简介 React:用于构建用户界面的 JavaScript 库。由 Facebook 开发且开源。是一个将视图渲染为html视图的开源库 第一章:React入门 相关js库 react.development.js :React 核心库react-dom.development.js :提供 DOM 操作的…...

筛选的艺术:数组元素的精确提取

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、筛选的基本概念 二、筛选的实际应用案例 1. 筛选能被三整除的元素 2. 筛选小于特定值…...

SQLServer2022新特性JSON_PATH_EXISTS测试输入 JSON 字符串中是否存在指定的 SQL/JSON 路径

SQLServer2022新特性JSON_PATH_EXISTS测试输入 JSON 字符串中是否存在指定的 SQL/JSON 路径 参考官方文档 https://learn.microsoft.com/en-us/sql/t-sql/functions/json-path-exists-transact-sql?viewsql-server-ver16 1、本文内容 语法参数返回值示例相关内容 适用于&a…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...