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

目录

前言

正文

操作背景

自发布

自部署

尾声


 

  • 🔭 Hi,I’m Pleasure1234
  • 🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.
  • 👯 I’m studying in University of Nottingham Ningbo China
  • 📫 You can reach me by url below:
  • My Blog Website: https://blog.yiming1234.cn 
  • My CSDN Blog: https://yiming1234.blog.csdn.net
  • My Email:Pleasure@yiming1234.cn
  • My Github:Pleasurecruise (自由的世界人) · GitHub
  • It's my pleasure to see you follow me!

原文地址:IDEA实现SpringBoot项目的自打包自发布自部署 - Pleasure的博客

下面是正文内容:


前言

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

谈谈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

尾声

笔记总结于鄙人代码日常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/801098.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—raid5阵列热备盘同步失败导致lun不可用的数据恢复案例

服务器存储数据恢复环境: 华为S5300存储中有一组由16块FC硬盘组建的RAID5磁盘阵列(包含一块热备盘)。 服务器存储故障: 该存储中的RAID5阵列1块硬盘由于未知原因离线,热备盘上线并开始同步数据,数据同步到…

[iOS]内存分区

[iOS]内存分区 文章目录 [iOS]内存分区五大分区栈区堆区全局区常量区代码区验证内存使用注意事项总结 函数栈堆栈溢出栈的作用 参考博客 在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 还记得OC是C的超类 所以C的内存分区也是一样的 iOS系统中&a…

sping总览

一、spring体系 1. spring是什么? 轻量级的开源的J2EE框架。它是一个容器框架,主要实现了ioc,同时又通过aop实现了面向切面编程,它又是一个中间层框架(万能胶)可以起一个连接作用,比如说把myba…

Django任务管理:项目定时执行及简单管理界面

1、用django-admin命令创建一个Django项目 django-admin startproject task_manager 2、进入到项目下用命令创建一个应用 cd task_manager python manage.py startapp tasks 3、进入models.py定义数学模型 第2步得到的只是应用的必要空文件,要开始增加各文件实际…

【java计算机毕设】图书馆书库管理系统java MySQL ssm vue maven项目设计源代码+文档PPT 小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】图书馆书库管理系统java MySQL ssm vue maven项目设计源代码文档PPT 小组作业 2项目介绍 系统功能: 图书馆书库管理系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改个人信…

y7000p 2020h风扇狂转解决办法

方法1(不推荐) 电源选项限制99% 这两个100%都修改为99%,这样可以限制睿频,但是不推荐,因为会显得有些卡顿注意方法2只在win10下尝试过,win11需要你们自测 方法2(强烈推荐!&…

2.3-基于RNN的语言模型的学习与评价

文章目录 1引言2 RNNLM的代码实现2.1初始化2.2前向和反向传播 3语言模型的一个评价指标-困惑度3.1数据量为一时困惑度的计算3.2数据量为多个的时候困惑度的计算 4 基于PTB数据集的RNNLM的学习的实现 1引言 所有代码位于:https://1drv.ms/f/s!AvF6gzVaw0cNjpx9BAtQYG…

docker-compose部署redis-exporter

一、安装prometheus 1、安装 version: 3.1services:redis-exporter:image: bitnami/redis-exporter:latestcontainer_name: redis-exporterports:- 9121:9121environment:TZ: Asia/Shanghaicommand:- --redis.addrredis://127.0.0.1:6379# - --redis.passwordlabels:org.labe…

如何设计统计量及相关假设检验

一、如何设置H0和H1假设 谁做H0,谁做H1,在统计学的假设检验里是有约定俗成的规定的。即:status quo(默认/现状)是H0,而新观点或试图challenge现状的是H1。H1也叫research hypothesis,所以我们做…

Postman、Apifox、Apipost用哪个?

Postman、Apifox、Apipost都是流行的API接口管理工具,它们各自具有不同的特点和优势,因此哪个更好用取决于具体的使用场景和需求。以下是对这三个工具的比较分析: 一、Postman 特点与优势: 支持多种请求方式:包括GE…

Gartner发布终端安全运营指南:有效终端安全运营的三大关键

孤立的终端管理团队使用专门的工具和策略,这会产生不必要的开支、降低容量、增加风险并降低员工体验。I&O 领导者必须立即采取行动,团结终端管理团队、工具和策略,以取得成功。 主要发现 Gartner 客户互动和最近的一项调查表明&#xff0…

CORDIC Translate

随便记录一下下: Cordic IP核使用说明以及避坑记录-CSDN博客 本次只用到了Translate,记录一下自己遇到的坑坑 实际配置: timescale 1ns / 1nsmodule cordic_tb();reg clk;wire m_axis_dout_tvalid;reg s_axis_cartesian_tvalid 0;wire [31…

Apollo docker-compose

来源 https://www.apolloconfig.com/#/zh/deployment/quick-start-docker 路径 /usr/apollo Sql 自己复制 Vim docker-compose.yml #如果安装过了 记得删除mysql 历史文件 rm -r /var/lib/mysql version: 2.1services:apollo-quick-start:image: nobodyiam/apollo-quick…

《javeEE篇》--多线程(1)

进程 在讲线程之前我们先来简单了解一下进程 什么是进程 进程是操作系统对一个正在运行的程序的一种抽象,又或者说,可以把进程看作程序的一次运行过程(通俗的讲就是跑起来的程序)。 而且在操作系统内部,进程是资源分配的基本单位 PBC P…

食品企业销售管理体系升级的关键

盖世食品(股票代码:836826)是国家级农业产业化重点龙头企业,国家高新技术企业,拥有300种产品,1000SKU。从海洋蔬菜、营养菌菇、健康素菜到海珍味系列和鱼子系列,消费者经常可以从各大餐饮连锁店里吃到这家公司制作的凉…

前端开发(基础)

目录 一、Web前端项目初始化 环境准备 创建项目 前端工程化配置 引入组件库 开发规范 全局通用布局 基础布局结构 全局底部栏 动态替换内容 全局顶部栏 通用路由菜单 支持多套布局 请求 请求工具库 全局自定义请求 自动生成请求代码 全局状态管理 全局权限管…

跟着操作,解决iPhone怎么清理内存难题

在如今智能手机功能日益强大的时代,我们使用手机拍照、录制视频、下载应用、存储文件等操作都会占用手机内存。当内存空间不足时,手机运行会变得缓慢,甚至出现卡顿、闪退等现象。因此,定期清理iPhone内存是非常必要的。那么&#…

最新 taro v3 运行,报错 Error: [object Object] is not a PostCSS plugin 解决办法

报错如下: Error: [object Object] is not a PostCSS plugin 解决办法:pnpm install postcss -D 重新安装 postcss 依赖,重新运行即可。 结果:顺利运行

2000-2023年上市公司融资约束WW指数(含原始数据+计算结果)

2000-2023年上市公司融资约束WW指数(含原始数据计算结果) 1、时间:2000-2023年 2、来源:上市公司年报 3、指标:证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、是否发生暂停上市、行业代码、行业名称、上…

opengauss数据库兼容模式

一、官方说明 官方描述: 背景信息 初始时,openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。postgres默认的兼容数据库类型为O(即DBCOMPATIBILITY A ),该兼容类型下…