当前位置: 首页 > 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项目来作为演示一步一步的带着大家在目标服务器实现自动部署。


在这里插入图片描述

相关文章:

  • MS Excel: 高亮当前行列 - 保持原有格式不被改变
  • 代码随想录-算法训练营day47【动态规划09:打家劫舍、打家劫舍II、打家劫舍III】
  • 基于python实现生命游戏
  • 【C++】---二叉搜索树
  • 小型海外仓如何选择第三方海外仓系统:多看多对比,性价比优先
  • 数据集的读取和处理
  • 【微机原理及接口技术】可编程计数器/定时器8253
  • C++标准模板(STL)- C 内存管理库 - 分配并清零内存 (std::calloc)
  • 怎么从视频中提取音频?这里有三种提取妙招
  • 19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正
  • 代码随想录算法训练营第22天(py)| 二叉树 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • Golang项目代码组织架构实践
  • 第一节:Redis的数据类型和基本操作
  • IPFoxy Tips:海外代理IP适用的8个跨境出海业务
  • C#多线程同步lock、Mutex
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Android Studio:GIT提交项目到远程仓库
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • GraphQL学习过程应该是这样的
  • HTTP请求重发
  • Java IO学习笔记一
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascript 原型链
  • JavaWeb(学习笔记二)
  • Java知识点总结(JavaIO-打印流)
  • jquery cookie
  • LeetCode29.两数相除 JavaScript
  • node和express搭建代理服务器(源码)
  • Spring Boot快速入门(一):Hello Spring Boot
  • springMvc学习笔记(2)
  • Vim 折腾记
  • vue学习系列(二)vue-cli
  • 翻译:Hystrix - How To Use
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 排序算法之--选择排序
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 我是如何设计 Upload 上传组件的
  • 用quicker-worker.js轻松跑一个大数据遍历
  • AI算硅基生命吗,为什么?
  • Java性能优化之JVM GC(垃圾回收机制)
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​低代码平台的核心价值与优势
  • ​马来语翻译中文去哪比较好?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #Linux(make工具和makefile文件以及makefile语法)
  • #每天一道面试题# 什么是MySQL的回表查询
  • #图像处理
  • (1)无线电失控保护(二)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别