jar容器部署成功无法访问_Jenkins流水线部署项目不同模块服务到不同服务器运行

前言

现在的项目开发一般都是基于多模块的,并且分开部署的,在打包的同时将不同的模块发送到不同的服务器再到具体服务器实现容器化部署或者普通运行部署,总的过程来说有点繁琐,但是利用jenkins的流水线(pipeline)加上万能的shell脚本可以大大简化这个过程

演示

60735f3d8fa84bd54d106cfa0e09cd16.gif

执行流程

实现思路

1. 利用pipeline实现基本的代码拉取,以及代码打包

2. 在不同的阶段实现不同的目的,比如我的目的是将打包后的不同jar包和其他脚本分发到不同的服务器上,然后实现部署运行

3. 但是有时候不打算运行,也就是在流水线执行过程中中间有提示(pipeline的input配置)可以选择是否在相应环境运行

4. 在具体服务器运行暂时是根据具体shell脚本利用DockerFile打成镜像,然后执行容器化部署,

具体部署步骤(以我github上的项目举例)

  • jenkins上新建一个流水线项目
  • 配置好GitHub项目地址和登录GitHub的凭据
4370abd5dc2ef5e10223ace7333389b4.png

jenkins配置

  • 在项目根目录创建JekninsFile文件
  • 并在jenkinsFile文件按照pipeline语法写上具体执行步骤,文件内容看后面单独放出来
  • 打开blue Ocean选在你新建的项目,点击运行
dc0e1cf0c3625b2402c58ad2fd0c3316.png
  • 这些基础的掌握后部署项目没问题了,但是实现部署逻辑还是要依赖JenkinsFile中的执行逻辑

jenkinsFile文件说明

大体执行逻辑

1. 拉取代码

2. 构建jar包

3. 发送至指定服务器

4. 项目启动(启动前会有提示,选择是否继续执行)

5. 脚本内容是具体不同模块打成容器镜像的shell,无非就是根据DockerFile文件打成镜像,然后启动镜像,这里不再放出

pipeline {    agent any    stages {     /* 模拟代码拉取步骤,因为在上面直接根据SCM拉取的代码,所以这里忽略,否则可以直接拉取,举例: git branch: "suke", credentialsId: '', url: ''*/        stage('拉取代码') {            steps {                echo "模拟代码拉取"                sh 'mvn --version'            }        }  /*这一步是打包过程*/        stage('构建jar包') {                    steps {                        sh 'mvn clean package'                        sh 'ls'                    }               }      /*打包完成后将文件发送到不同的服务器,这里我将所有文件发送到一个服务器部署,common-start.sh 就是将三个模块在目标服务器打成具体镜像的脚本*/        stage('发送至指定服务器') {                     steps {                          sh 'date'                          echo "项目构建结果路径:${WORKSPACE}"         sh 'scp ${WORKSPACE}/common-start.sh root@192.168.1.44:/home/suc'                          sh 'scp ${WORKSPACE}/AA/target/AA.jar root@192.168.1.44:/home/suc'                          sh 'scp ${WORKSPACE}/BB/target/BB.jar root@192.168.1.44:/home/suc'                          sh 'scp ${WORKSPACE}/CC/target/CC.jar root@192.168.1.44:/home/suc'                          echo '发送成功'                       }               }      /*等待手动去选择是否在目标服务器部署,避免出问题*/        stage('项目启动') {                    input {                                message "是否要启动项目?"                                ok "yes,continue"                                submitter "suc"                           }         /*继续的话直接运行脚本执行容器化部署*/                     steps {                          sh 'ssh root@192.168.1.44 sh /home/suc/common-start.sh /home/suc'                       }                     }    }    post {            always {                echo '删除构建文件夹'                deleteDir()  /* clean up our workspace */            }            success {                echo 'success'            }            unstable {                echo 'I am unstable :/'            }            failure {                echo 'failed'            }            changed {                echo 'Things were different before...'            }        }}

最后

  • 求点赞关注,有问题请留言@苏克分享

#程序员##自动化运维##DevOps#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值