• 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
    在这里插入图片描述
    脚本如下:

    # 进入目标服务器存放传输文件目录
    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 我们登陆目标服务器查看镜像和容器是否都存在了

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


    在这里插入图片描述

  • 相关阅读:
    近期面试128题汇总(有超详细答案)
    排序算法(1)
    搭建自己的搜索引擎——oh-my-search使用
    Vue3使用render画图标实践
    STM32F1与STM32CubeIDE编程实例-NEC协议红外接收与解码
    统计物理学复习----热力学的基本规律
    几道面试题记录20231023
    Springboot集成websocket实现消息推送和在线用户统计
    SpringMVC(3)——REST风格
    【李宏毅机器学习2021】Task05 网络设计的技巧
  • 原文地址:https://blog.csdn.net/lhmyy521125/article/details/139291193