Jenkins Pipeline 流水线方式部署 SpringBoot 项目2

简介: Jenkins Pipeline 流水线方式部署 SpringBoot 项目

Jenkins Pipeline 流水线方式部署 SpringBoot 项目1:https://developer.aliyun.com/article/1394466

四、Git Pull Code

我们做第一步,就是编写一个Jenkins 脚本,拉取 Github 上的代码。

 pipeline {
     agent any
     stages {
        stage('git pull 拉取代码') {
             steps {
               // Get some code from a GitHub repository
               git branch: 'main', credentialsId: 'b6013989-c0b0-4511111111f7', url: 'https://github.com/ningzaichun/hello-springboot'
            }
         }
         stage('编译构建') {
             steps {
              echo '编译构建'
             }
         }
          stage('项目部署') {
               steps {
                 echo '项目部署'
             }
         }
     }
 }

这样的执行结果应当如下:

image.png

相关日志说明:

image.png

但其实这一栏还有许多可以配置的东西,但是目前没用上,就暂且不说,等到后来用上,再去查文档和检索。

五、Maven 编译

我们在上一个步骤中增加一个步骤,即增加一个 stage(){}

最简单的编译构建方式莫过于maven clean package 哈哈

 pipeline {
     agent any
     stages {
        stage('git pull 拉取代码') {
             steps {
               // Get some code from a GitHub repository
               git branch: 'main', credentialsId: 'b6013989-c0b0-11-b11133bf7', url: 'https://github.com/ningzaichun/hello-springboot'
            }
         }
        stage('编译构建') {
             steps {
                 sh label: '', script: 'mvn clean package'
             }
         }
          stage('项目部署') {
               steps {
                 echo '项目部署'
             }
         }
     }
 }

执行结果应当如下:

image.png

在日志中也是可以看到我们已经构建成功啦

image.png

六、打包镜像,发布至镜像仓库

编译成功后,就是打包成镜像

在helloSpringBoot的项目中,我有编写了一个十分简单的Dockerfile文件的,如下:

 FROM java:8
 ​
 WORKDIR app
 ​
 COPY target/*.jar app.jar
 ​
 CMD ["java", "-jar", "app.jar"]

我们可以利用这个Dockerfile 来进行Docker打包

docker 一些基础命令,我就不再提起了,

如果有不太了解Dockerfile编写的小伙伴,可以看看这篇文章☞:Dockerfile

如果是对docker 一些命令不是非常熟悉的小伙伴,可以看这篇☞:Docker 基本命令

 pipeline {
     agent any
     stages {
        stage('git pull 拉取代码') {
             steps {
               // Get some code from a GitHub repository
               git branch: 'main', credentialsId: 'b6013111113bf7', url: 'https://github.com/ningzaichun/hello-springboot'
            }
         }
        stage('编译构建') {
             steps {
                 sh label: '', script: 'mvn clean package'
             }
         }
          stage('清除旧镜像及容器') {
               steps {
                  //定义镜像名称
                 // 构建之前,需要先删除原有的镜像
                 sh "docker rm -f hellonzc"
                 sh "docker rmi -f hellospringboot:v0.0.1"
                 sh "docker rmi -f registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
             }
         }
           stage('构建与发布镜像') {
               steps {
    //编译,构建本地镜像
                 sh "mvn clean package"
                 sh "docker build -t hellospringboot:v0.0.1 . "
                 // 登录阿里云镜像
                 sh "docker login --username=nzc1115 --password=1111111 registry-vpc.cn-heyuan.aliyuncs.com"
                 sh " docker tag hellospringboot:v0.0.1 registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
                 //发布镜像
                 sh " docker push registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
             }
         }
     }
 }

执行结果:

image.png

相关日志:

image.png

七、拉取镜像,运行容器

就是再多个步骤罢了~

pipeline {
    agent any
    stages {
       stage('git pull 拉取代码') {
            steps {
              // Get some code from a GitHub repository
              git branch: 'main', credentialsId: 'b60111111133bf7', url: 'https://github.com/ningzaichun/hello-springboot'
           }
        }
       stage('编译构建') {
            steps {
                sh label: '', script: 'mvn clean package'
            }
        }
         stage('清除旧镜像及容器') {
              steps {
                 //定义镜像名称
              // 构建之前,需要先删除原有的镜像
        sh "docker rm -f hellonzc"
        sh "docker rmi -f hellospringboot:v0.0.1"
            }
        }
          stage('构建与发布镜像') {
              steps {
   //编译,构建本地镜像
                sh "mvn clean package"
                sh "docker build -t hellospringboot:v0.0.1 . "
                // 登录阿里云镜像
                sh "docker login --username=nzc15 --password=11113 registry-vpc.cn-heyuan.aliyuncs.com"
                sh " docker tag hellospringboot:v0.0.1 registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
                //发布镜像
                sh " docker push registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
            }
        }
         stage('运行容器') {
              steps {
      sh "docker rmi -f registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
         sh " docker pull registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
         sh "docker run -d -p 8080:8080 --name hellonzc registry-vpc.cn-heyuan.aliyuncs.com/ningzaichun/jenkins:v0.0.1"
            }
        }
    }
}

补充

关于脚本中构建好本地镜像,在拉取前又删除本地镜像,再拉取的矛盾问题,

  • 其实我就是将命令效果全部展示出来,
  • 另一方面就是如果是要部署到其他服务器上的话,
  • 这条命令再加上另一台服务器的信息,就是可以用上的啦。

执行结果:

image.png

相关日志:

image.png

小结

其实如果是看过我那篇Maven部署的朋友,应该能够感受到,在这篇文章中,好像pipeline好像和那篇文章差不多,可能这篇还更显繁琐。

我要说明,这篇文章顶多是pipeline流水线任务的入门篇,看一眼大概,知道有pipeline任务,它的优势更多的体现在多任务构建,微服务构建,还有源码存储jenkins Pipeline 脚本文件等等

以单体项目来执行,可能没法完全体现它的优势,并且我也没有弄它的最佳实践,所以可能看完会略显失望

慢慢来啦~,这个东东详细说起来,也没有大家想象的那么简短

后记

首先还是要对之前到这个系列文章的小伙伴,说一句抱歉,非常不好意思。

因为我个人的疏忽错误,导致对照着前面文章安装环境的小伙伴,来看这篇文章进行实操时,仍然需要重新搭建一遍实操环境

对此感到十分抱歉,希望各位读者能够见谅,前文我也已经修正错误,同时也希望大家继续支持这个专栏,给予我一些正向反馈

做的不好的地方也请各位读者、朋友、小伙伴能够及时指出,非常感谢各位!

如存有疑问,也请大家友善留言,我会在看到的第一时间尽快回复你。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
10月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
701 3
|
10月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
1014 2
|
10月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
1010 2
|
10月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
541 2
|
10月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
382 0
|
10月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
793 0
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
292 0
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
298 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

推荐镜像

更多