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:- mainpaths:- 'backend/**'
jobs:build:permissions: write-allruns-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Setup Java JDKuses: actions/setup-java@v4.2.1with:java-version: '17'distribution: 'temurin'cache: maven- name: maven-settings-xml-actionuses: whelk-io/maven-settings-xml-action@v20with:repositories: ''servers: ''- name: Build with Mavenrun: mvn package -B -DskipTests --file backend/pom.xml- name: GH Releaseuses: softprops/action-gh-release@v2.0.6with:files: backend/wall-server/target/wall-server-*.jartag_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

尾声

笔记总结于鄙人代码日常

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U盘坏了怎么把数据弄出来

在数字化时代,U盘作为一种便携式存储设备,为我们的数据保存和传输提供了很多便利。不过,我们在使用U盘过程中难免会遇到各种问题,比如常见的U盘损坏问题。U盘损坏会导致数据无法读取,给我们造成困扰。幸运的是&#xf…

Spring相关的面试题

1、spring中bean的生命周期 spring bean的生命周期主要分为三大类 ,分别是创建-》使用-〉销毁。 在三大类下面又可以分为5个小类。分别是 实列化-〉初始化-》组册destruction回调-〉使用-〉销毁 这这其中 初始化也可以细分为 设置属性值,前置处理&#…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(七)-通过无人机实现无线接入的独立部署

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

dhtmlx-gantt甘特图数据展示

官网文档&#xff1a;甘特图文档 实现效果&#xff1a; 首先需要下载 dhtmlx-gantt组件 npm i dhtmlx-gantt //我项目中使用的是"dhtmlx-gantt": "^8.0.6" 这个版本&#xff0c;不同的版本api或是文档中存在的方法稍有差异 界面引用 <template>&l…

什么是MOW,以bitget钱包为例

元描述&#xff1a;MOW凭借其富有创意的故事情节和广阔的潜力在Solana上脱颖而出。本文深入探讨了其独特的概念和光明的未来。 Mouse in a Cats World (MOW)是一个基于Solana区块链的创新meme项目&#xff0c;它重新构想了一个异想天开且赋予权力的故事。在这个奇幻的宇宙中&am…

Leetcode算法题(链表的中间节点+返回倒数第k个节点+合并两个有序链表)

题目1&#xff1a; 本题力扣链接&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list/solutions/164351/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/ 思路1&#xff1a;单指针法 首先我们对链表进行遍历&#xff0c;记录链表的总长度N&#xff0c;…

微信小程序毕业设计-学习资料库系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

使用APEXSQL LOG解析sql server事务日志,进行审计与数据恢复

一 下载 https://download.csdn.net/download/sunke861/11449739 二 使用 解压安装包后&#xff0c;点击&#xff1a;ApexSQLLog.exe 2.1 连接数据库 连接要审计的数据库&#xff1a; 假如报错&#xff1a; 则点击ok关闭该窗口&#xff0c;然后点击左上方的New按钮&#xf…

平替ChatGPT的多模态智能体来了

在人工智能领域&#xff0c;多模态技术的融合与应用已成为推动技术革新的关键。今天&#xff0c;我们用智匠AI实现了完全由国产模型驱动的多模态智能体——智酱v0.1.0&#xff0c;它不仅能够媲美ChatGPT的多模态能力&#xff0c;更在联网搜索、图片识别、画图及图表生成等方面展…

Python进阶 2024/7/15

目录 文件的写入操作 打开文件 文件写入 内容刷新 文件的追加写入操作 打开文件 文件写入 内容刷新 a模式 练习 文件的写入操作 文件的访问模式要用 w 打开文件 f open( " D:\ACM\python.txt "," w ",encoding " UTF - 8") 文件写…

BL201分布式I/O耦合器连接Profinet网络

钡铼技术的BL201分布式I/O耦合器是一个用于Profinet网络的设备&#xff0c;用于连接远程输入/输出&#xff08;I/O&#xff09;设备到控制系统&#xff0c;如可编程逻辑控制器&#xff08;PLC&#xff09;&#xff0c;能够实现分布式的I/O连接和通信。 它支持标准Profinet IO …

Xilinx FPGA UltraScale SelectIO 接口逻辑资源

目录 1. 简介 2. Bank Overview 2.1 Diagram 2.2 IOB 2.3 Slice 2.4 Byte Group 2.5 I/O bank 示例 2.6 Pin Definition 2.7 数字控制阻抗(DCI) 2.8 SelectIO 管脚供电电压 2.8.1 VCCO 2.8.2 VREF 2.8.3 VCCAUX 2.8.4 VCCAUX_IO 2.8.5 VCCINT_IO 3. 总结 1. 简介…

mac电脑pdf合并,macpdf合并成一个pdf

在数字化办公和学习的今天&#xff0c;pdf文件因其跨平台兼容性强、格式稳定而成为了最受欢迎的文档格式之一。但随之而来的问题也接踵而至&#xff0c;如何将多个pdf文件合并为一个&#xff1f;这不仅关系到文档的整洁性&#xff0c;更是时间管理的重要环节。今天&#xff0c;…

Windows与Linux双机热备软件推荐

网络数据安全在如今信息化的时代越来越变得举足轻重&#xff0c;因此服务器维护和管理也成为企业健康稳定运营的一项重要工作。但实际情况是很多公司并没有配备专业的运维人员&#xff0c;一般都会通过一些管理软件维护或者主机托管给服务商。整理6款服务器的Windows与Linux双机…

大模型在证券公司智能客服领域的应用初探

在证券行业&#xff0c;智能客服已成为提升客户体验、提高服务效率以及扩大市场覆盖面的重要手段。智能客服不仅需要具备快速响应的能力&#xff0c;其应答还应能覆盖广泛的业务领域&#xff0c;且需具有较高的准确率。近年来&#xff0c;AI技术飞速发展&#xff0c;尤其是大规…

Android中元数据meta-data的使用

一 概述 meta-data&#xff08;元数据&#xff09;&#xff0c;主要用来定义一些组件相关的配置值。与String.xml只能暴露给内部不同&#xff0c;AndroidManifests.xml下的meta-data是对外界开放的&#xff0c;是向系统注册的信息&#xff0c;系统及外界是可以通过相关API获取…

数码暴龙机(电波暴龙机)彩色复刻版!!| 使用Python、PySide6、pixilart自制windows桌面宠物

一、前言 数码暴龙机&#xff08;电波暴龙机&#xff09;是万代公司发售的一系列与《数码兽》系列相关的液晶玩具商品。这些产品融合了养成和对战元素&#xff0c;为玩家提供了一种虚拟养成和战斗的娱乐体验。也是很多人的童年回忆。最近在B站刷到讲解暴龙通关的教程和视频&…

【Python】基础语法(函数、列表和元组、字典、文件)

。一、函数 1、函数是什么 编程中的函数和数学中的函数有一定的相似之处。 数学上的函数&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就会得到不同的结果。 编程中的函数是一段可以被重复使用的代码片段。 &#xff08;1&#xff09;求数列的和&…

Flink Window 窗口【更新中】

Flink Window 窗口 在Flink流式计算中&#xff0c;最重要的转换就是窗口转换Window&#xff0c;在DataStream转换图中&#xff0c;可以发现处处都可以对DataStream进行窗口Window计算。 窗口&#xff08;window&#xff09;就是从 Streaming 到 Batch 的一个桥梁。窗口将无界流…

蓝桥杯14小白月赛题解

直接输出pi/ti,for遍历 #include <iostream> using namespace std; #define int long long int a,b,c ; double t1.00; signed main() {cin>>a;int an0;for(int i1;i<a;i){cin>>b>>c;if(t>c*1.00/b){tc*1.00/b;ani;} }cout<<an<<e…