Docker系列之Jenkins+Git实现流水线部署SpringBoot项目

1. 概述

本文使用Docker、Jenkins和Gitee持续部署SpringBoot项目,小伙伴们需要提前准备好Docker和Jenkins开发环境,有不清楚如何安装Docker和Jenkins的小伙伴可以参阅Docker系列之CentOS8安装DockerDocker系列之搭建Jenkins持续集成Maven项目
,其中在Docker安装Jenkins时需要加上–privileged=true和-v /usr/bin/docker:/usr/bin/docker以方便在Jenkins中使用Docker指令。完整的安装指令如下:

jenkins:
    container_name: jenkins
    image: jenkins/jenkins:lts-jdk11
    restart: unless-stopped
    privileged: true
    ports:
      - '8082:8080'
      - '50000:50000'
    volumes:
      - /home/docker/jenkins:/var/jenkins_home:rw
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /home/soft/maven/apache-maven-3.8.5:/var/java/maven
      - /var/java/repository:/var/java/repository:rw
      - /usr/bin/docker:/usr/bin/docker

前提环境要求如下:
JDK:11
Maven:3.8.5
Docker:20.10.14
Jenkins:latest

2. 新建SpringBoot项目

2.1. 引入dockerfile插件

新建一个SpringBoot项目,在pom.xml中引入docker镜像制作插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <configuration>
        <repository>${project.artifactId}</repository>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

2.2. 编写Dockerfile文件

在项目根目录下新建Dockerfile文件,输入以下内容

FROM openjdk:11.0.14.1-oracle
MAINTAINER xxxx
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
EXPOSE 8099

2.3. 编写Jenkins文件

在项目根目录下新建Jenkins文件,输入以下内容

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xlhj023/docker-jenkins.git']]])
            }
        }
        stage('package and build project, deploy images') {
            steps {
                sh '/opt/app/deploy.sh'
            }
        }
    }
}

本文所使用的Jenkins服务器和目标服务器都是同一台服务器,流水线只有拉取代码和部署项目两个步骤,若需要将应用镜像部署到其他服务器,可以将jar包或镜像文件上传到目标服务器,也可以先将镜像推送到镜像仓库,再从目标服务器拉取镜像进行部署

3. 部署脚本deploy.sh编写

进入Jenkins容器内部,在/opt/app目录下新建deploy.sh文件,输入下面shell脚本

#!/bin/bash
project_name=docker-jenkins
tag=latest

imageId=`docker images -q $project_name`
echo "镜像ID为:$imageId"

if ["$imageId" != ""];then
  containerId=`docker ps -a | grep -w $project_name | awk '{print $1}'`
  echo "容器ID为:$containerId"
  if["$containerId" != ""];then
    docker stop $containerId
    docker rm $containerId
    echo "删除容器成功"
  fi
  
  docker rmi $imageId
  mvn clean package dockerfile:build
else
  echo "构建新镜像"
  mvn clean package dockerfile:build
fi

docker run -di -p 8099:8099 $project_name:$tag
echo "启动容器成功"

注意,除了第一次部署外,都需要先将原有的镜像和容器删除,再进行镜像制作和容器发布

4. Jenkins发布流水线

新建一个任务,命名为docker-jenkins,选择流水线,点击确定
新建任务
进入流水线制作界面,如下图所示:
流水线
流水线定义处选择Pipeline script from SCM,在SCM处选择Git,输入Git仓库地址和账户信息,最后点击保存,回到Dashboard界面,点击立即构建

5. 验证

任务构建完成后,进入日志管理控制台查看日志信息
日志
进入服务器,输入命令docker images查看镜像
查看镜像
输入命令docker ps查看容器
查看容器

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要从0到1使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架,你可以按照以下步骤进行: 1. 安装 DockerDocker Compose Docker 是一个容器化平台,可以方便地创建、分发和运行应用程序。Docker Compose 是一个工具,可以用来定义和运行多个 Docker 容器的应用程序。因此,首先需要在你的机器上安装 DockerDocker Compose。 2. 创建 Git 仓库并将代码上传 在 Git 上创建一个新的仓库,并将你的项目代码上传到该仓库。这将成为你的代码库,所有的代码都将从这里拉取。 3. 编写测试用例 使用 Pytest 编写测试用例,这是 Python 中的一个测试框架,可以帮助你编写和运行测试用例。 4. 安装 Jenkins 并配置 Jenkins 是一个流行的 CI/CD 工具,可以自动构建、测试和部署应用程序。安装 Jenkins 后,需要配置 Jenkins 服务器和构建代理,以便它们可以与你的 Git 仓库、Docker 和其他工具进行交互。 5. 创建 Jenkins 任务和流水线Jenkins 上创建任务和流水线,以便自动化构建、测试和部署应用程序。你可以使用 Jenkinsfile 来定义流水线,指定要执行的构建、测试和部署步骤。 6. 集成 Allure 报告 Allure 是一个开源的测试报告框架,可以生成漂亮、交互式的测试报告。集成 Allure 后,你可以在 Jenkins 构建中生成测试报告,并使用 Allure 插件在 Jenkins 中查看报告。 7. 构建和测试 Docker 镜像 使用 Dockerfile 构建 Docker 镜像,并使用 Docker Compose 运行容器。在容器中运行测试用例,以确保应用程序在 Docker 中运行正常。 8. 集成 Pytest、Allure 和 Docker 将 Pytest、Allure 和 Docker 集成到 Jenkins 流水线中,以便自动化构建、测试和部署应用程序。 以上是从0到1使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架的基本步骤。需要注意的是,这只是一个基本框架,你需要根据自己的实际情况进行调整和优化,以便更好地满足你的项目需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值