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实现远程传输和自动部署

前言

在之前的章节中,博主带着大家都是基于一台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

脚本如下:

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

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

bash 复制代码
#查看镜像
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项目来作为演示一步一步的带着大家在目标服务器实现自动部署。


相关推荐
sun0077001 小时前
ubuntu增加swap交换空间
linux·运维·服务器
苹果醋32 小时前
前端面试之九阴真经
java·运维·spring boot·mysql·nginx
疯狂吧小飞牛2 小时前
openssl颁发包含主题替代名的证书–SAN
运维·服务器·网络
qhd吴飞2 小时前
在linux下用二进制方式安装mysql8
linux·运维·服务器
刘登辉3 小时前
雷电模拟器charles代理抓包
运维·服务器
藤原拓远3 小时前
二.LoadBalancer负载均衡服务调用(1)
运维·负载均衡
抽象文学带师3 小时前
配置ssh免密登陆
运维·服务器·ssh
北'辰3 小时前
使用ENSP实现DHCP
运维·网络
.生产的驴4 小时前
Docker Seata分布式事务保护搭建 DB数据源版搭建 结合Nacos服务注册
数据库·分布式·后端·spring cloud·docker·容器·负载均衡
罔闻_spider5 小时前
cookie反爬----普通服务器,阿里系
运维·服务器