IDEA实现SpringBoot项目的自打包自发布自部署

目录

前言

正文

操作背景

自发布

自部署

尾声


下面是正文内容:


前言

最近在研究项目的打包发布以及其在生产环境下的部署

谈谈SpringBoot后端项目的自动打包,以及发布到Github Releases和部署到服务器

还是以之前的这个校园墙仓库为例

Github仓库地址:GitHub - Pleasurecruise/NottinghamWall: 宁波诺丁汉大学校园墙(个人项目,管理端已上线)

服务器端项目地址:NottinghamWall/backend at main · Pleasurecruise/NottinghamWall · GitHub

正文

操作背景

项目仓库每次进行更改更新的时候都需要重新进行打包发布非常的麻烦,所以可以用Github Action来替代这一重复的操作,实现自动化操作,提高开发效率和软件质量。

GitHub CLI(Command-Line Interface)是 GitHub 提供的一个命令行工具,旨在使用户能够从终端或命令行界面直接与 GitHub 交互。通过 GitHub CLI,用户可以执行许多在 GitHub 网站上执行的操作

Continuous Integration (CI):持续集成。开发人员频繁地将代码变更合并到主分支中,每次合并都会触发自动化构建和测试过程。这种方法能够快速发现和修复问题,确保代码库始终处于一个可工作状态。

Continuous Deployment (CD):持续部署。每次通过自动化测试的代码变更都会自动部署到生产环境中。这意味着代码一旦被提交并通过测试,就会立即被发布给用户。持续部署要求非常高的自动化测试覆盖率和严格的质量控制。

自发布

从上图可以看到在第一行的最右边就是给出的Github Action的一个示例。

下面的配置文件就是基于这个config进行了适当的更改

当然也可以自己新建一个工作流文件然后复制粘贴下面的配置文件

复制代码
name: SpringBoot Built and Release
on:
  push:
    branches:
      - main
    paths:
      - 'backend/**'
jobs:
  build:
    permissions: write-all
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Setup Java JDK
      uses: actions/setup-java@v4.2.1
      with:
        java-version: '17'
        distribution: 'temurin'
        cache: maven
    - name: maven-settings-xml-action
      uses: whelk-io/maven-settings-xml-action@v20
      with:
        repositories: ''
        servers: ''
    - name: Build with Maven
      run: mvn package -B -DskipTests --file backend/pom.xml
    - name: GH Release
      uses: softprops/action-gh-release@v2.0.6
      with:
        files: backend/wall-server/target/wall-server-*.jar
        tag_name: NottinghamWall-backend-v1.0

上面的配置文件实现的主要操作:

在backend文件夹下有新的push文件的时候触发操作

  • 配置远程的maven环境
  • 将项目进行打包
  • 发布到Github Release

实现效果:

自部署

参考资料:【教程帖】 java项目更新,Springboot部署教程 - Linux面板 - 宝塔面板论坛

https://help.aliyun.com/zh/sae/user-guide/use-the-alibaba-cloud-toolkit-for-intellij-idea-plug-in-to-deploy-an-application

Cloud Toolkit 之 Command 编写指南-阿里云开发者社区

我用的是阿里云的轻量级服务器,操作过程涉及到了宝塔面板

(其实也可以通过Maven插件实现自上传但这里没有使用)

需要事先做的准备:

在本地IDEA中安装插件

在宝塔面板软件商店配备插件Redis Nginx Tomcat等

操作步骤:

①首先设置本地的自上传配置

每次执行打包操作前:由于项目蕴含多模块,所以需要将上次的父级模块执行clean install子模块执行clean package

每次执行打包后:需要对springboot项目进行重启,执行的脚本内容(restart-springboot.sh

复制代码
source /etc/profile
killall java
nohup java -jar /www/NottinghamWall-1.0-SNAPSHOT.jar > nohup.log 2>&1 &

②宝塔面板设置Java项目运行

在服务器上找到上传的包,我这里将打包好的jar包放置在了/www/NottinghamWall目录下

项目执行命令在选中项目jar路径后会自动生成

关于运行端口的设置自行在命令行中或者application.yml中进行解决

当看到显示项目在运行中,并且在项目日志中看到下面的内容就说明启动成功了

可能会用的到的指令:sudo lsof -i:8080 kill -9 PID

尾声

笔记总结于鄙人代码日常

相关推荐
期待のcode15 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐15 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲15 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红15 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥15 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v15 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地15 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl2002092516 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei16 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot
记得开心一点嘛17 小时前
Redis封装类
java·redis