找回密码
 立即注册
查看: 398|回复: 0

[linux] jenkins+docker实现可持续自动化部署springboot项目

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-10 18:05:28 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-10 18:24 编辑

1. 引言

在现代软件开发过程中,实现持续集成和持续部署(CI/CD)已成为提升开发效率和代码质量的关键步骤。Jenkins作为一种广泛使用的开源自动化服务器,能够帮助开发团队实现CI/CD流程。本文将介绍如何结合Jenkins和Docker来实现Spring Boot项目的自动化部署。

1.1 什么是Jenkins

Jenkins是一款开源的自动化服务器,用于实现持续集成和持续交付。它支持各种版本控制系统,并可以通过插件扩展其功能,适用于各种编程语言和构建工具。

1.1.1 Jenkins的特点

(1) 开源免费:Jenkins是完全开源的,拥有活跃的社区和丰富的插件支持。

(2) 可扩展性强:通过插件系统,Jenkins可以集成各种开发工具和服务。

(3) 用户友好:Jenkins提供了直观的Web界面,便于配置和管理。

1.2 什么是Docker

Docker是一种容器化技术,通过将应用程序及其依赖打包到容器中,实现一致的开发、测试和生产环境。Docker容器轻量、快速、可移植性强,广泛用于现代软件开发和部署流程中。

1.2.1 Docker的特点

(1) 轻量级:Docker容器共享主机操作系统内核,启动速度快,占用资源少。

(2) 一致性:容器化应用程序在不同环境中具有一致的行为,减少了环境配置问题。

(3) 易于管理:通过Dockerfile可以定义应用程序的构建和运行环境,便于版本控制和自动化部署。

2. 环境准备

在开始配置Jenkins和Docker之前,需要准备好以下环境:

(1) 安装Jenkins:可以通过官方文档下载安装包并启动Jenkins服务。

(2) 安装Docker:确保主机上已经安装并运行Docker服务。

(3) 配置Jenkins Docker插件:在Jenkins插件管理页面中安装Docker插件,以便Jenkins与Docker进行交互。

3. 配置Jenkins项目

在Jenkins中配置一个新的项目,用于构建和部署Spring Boot应用程序。

3.1 创建自由风格的软件项目

在Jenkins主页面中,点击“新建项目”,选择“自由风格的软件项目”,并为项目命名。

3.2 配置源码管理

在项目配置页面,选择源码管理工具(如Git),并填写代码仓库的URL和凭据。

3.3 配置构建触发器

配置构建触发器,可以选择以下触发方式:

(1) 定时构建:使用CRON表达式定时触发构建。

(2) 版本控制钩子:配置Git钩子,代码提交时自动触发构建。

3.4 配置构建环境

在构建环境部分,选择“提供Docker环境”选项,并配置Docker镜像和容器设置。可以使用官方的JDK镜像作为构建环境。

4. 编写Jenkinsfile

Jenkinsfile用于定义Jenkins流水线脚本,实现自动化构建、测试和部署。

4.1 示例Jenkinsfile

  1. pipeline {
  2.      agent {
  3.          docker {
  4.              image 'openjdk:11'
  5.              args '-v /var/run/docker.sock:/var/run/docker.sock'
  6.          }
  7.      }
  8.      stages {
  9.          stage('Checkout') {
  10.              steps {
  11.                  git 'https://github.com/your-repo/springboot-app.git'
  12.              }
  13.          }
  14.          stage('Build') {
  15.              steps {
  16.                  sh './mvnw clean package'
  17.              }
  18.          }
  19.          stage('Build Docker Image') {
  20.              steps {
  21.                  script {
  22.                      dockerImage = docker.build("your-repo/springboot-app<img src="static/image/smiley/default/shy.gif" border="0" smilieid="8" alt=":$">{env.BUILD_ID}")
  23.                  }
  24.              }
  25.          }
  26.          stage('Push Docker Image') {
  27.              steps {
  28.                  script {
  29.                      docker.withRegistry('https://index.docker.io/v1/', 'docker-hub-credentials') {
  30.                          dockerImage.push("${env.BUILD_ID}")
  31.                          dockerImage.push('latest')
  32.                      }
  33.                  }
  34.              }
  35.          }
  36.          stage('Deploy') {
  37.              steps {
  38.                  sshagent(['your-ssh-credentials-id']) {
  39.                      sh '''
  40.                      ssh user@server 'docker pull your-repo/springboot-app:latest && docker stop springboot-app || true && docker rm springboot-app || true && docker run -d --name springboot-app -p 8080:8080 your-repo/springboot-app:latest'
  41.                      '''
  42.                  }
  43.              }
  44.          }
  45.      }
  46. }
复制代码


4.2 配置说明

(1) Checkout阶段:从Git仓库中检出代码。

(2) Build阶段:使用Maven构建Spring Boot应用。

(3) Build Docker Image阶段:基于构建结果生成Docker镜像。

(4) Push Docker Image阶段:将Docker镜像推送到Docker Hub。

(5) Deploy阶段:通过SSH连接到部署服务器,拉取最新的Docker镜像并运行容器。

5. 结论

通过结合Jenkins和Docker,可以实现Spring Boot项目的持续自动化部署。Jenkins负责自动化构建和测试,而Docker确保应用在一致的环境中运行。通过合理配置和使用Jenkinsfile,开发团队可以大幅提升开发效率和部署速度。

希望本文能帮助你理解如何使用Jenkins和Docker实现Spring Boot项目的自动化部署,为你的CI/CD流程提供参考和指导。


/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:33 , Processed in 0.054109 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表