idea一键自动化部署项目

文章目录

  • 前言
  • 一、 IDEA插件安装
    • 1. 首先下载 Alibaba Cloud Toolkit 插件
    • 2. 插件下载完成后重启IDEA
  • 二、SpringBoot项目准备
    • 1. pom.xml 文件
    • 2. controller
    • 3. 启动类
  • 三、SpringBoot项目jar包部署
    • 1. Alibaba Cloud Toolkit 插件服务器配置
    • 2. 主机 IP、用户名、密码 点击测试链接
    • 3. 编辑项目配置
    • 4. 选择 Deploy to Host
    • 5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器
    • 6. 配置服务器jar包存放目录
    • 7. 添加启动命令
    • 8. 配置打包命令
    • 9. 测试
    • 10. 部署脚本


前言

一键自动化部署项目是现代软件开发中的一种高效实践,它带来了许多显著的好处:

  • 提高效率:自动化部署可以节省手动部署所需的时间。特别是在频繁部署的情况下,自动化可以显著减少重复性工作,让开发人员有更多时间专注于编码和解决问题。
  • 减少错误:手动部署过程容易出错,尤其是在复杂的部署流程中。自动化部署可以减少人为错误,确保每次部署都是一致和可靠的。
  • 快速回滚:如果新部署的版本出现问题,自动化部署流程可以快速回滚到上一个稳定版本,减少系统不可用的时间。
  • 持续集成和持续部署(CI/CD):自动化部署是CI/CD流程的关键组成部分,它允许开发团队快速迭代和发布新功能,提高软件交付的速度和质量。
  • 标准化流程:自动化部署有助于标准化部署流程,确保所有团队成员都遵循相同的步骤和标准,这有助于维护代码和部署的一致性。

提示:文章一共介绍2种方式,下面案例可供参考

一、 IDEA插件安装

1. 首先下载 Alibaba Cloud Toolkit 插件

在这里插入图片描述

2. 插件下载完成后重启IDEA

在这里插入图片描述

二、SpringBoot项目准备

1. pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.test</groupId><artifactId>demo-test</artifactId><version>1.0.0-SNAPSHOT</version><name>demo-test</name><description>demo-test</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2. controller

package com.test.controller;import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("demo")
public class TestController {/*** 测试接口** @param version 版本号* @return 版本号*/@GetMapping("query")public String query(@RequestParam String version) {System.out.println("打印版本 = " + version);return version;}
}

3. 启动类

package com.test;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoTestApplication {public static void main(String[] args) {SpringApplication.run(DemoTestApplication.class, args);}
}

在这里插入图片描述

三、SpringBoot项目jar包部署

1. Alibaba Cloud Toolkit 插件服务器配置

在这里插入图片描述

2. 主机 IP、用户名、密码 点击测试链接

在这里插入图片描述

3. 编辑项目配置

在这里插入图片描述

4. 选择 Deploy to Host

在这里插入图片描述

5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器

在这里插入图片描述

6. 配置服务器jar包存放目录

在这里插入图片描述

7. 添加启动命令

在这里插入图片描述

8. 配置打包命令

在这里插入图片描述
到这里差不多就配置完了,简单测试一下

9. 测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10. 部署脚本

  1. 服务器脚本位置
/opt/app/test/deploy/test.sh
  1. test.sh
#!/bin/bash# 定义程序路径和文件名的数组
declare -a APP_SERVER_PATHS=("/opt/app/test/")
declare -a APP_SERVERS=("demo-test-1.0.0-SNAPSHOT.jar")# 停止并重启每个程序
for ((i = 0; i < ${#APP_SERVER_PATHS[@]}; i++)); doAPP_SERVER_PATH=${APP_SERVER_PATHS[$i]}APP_SERVER=${APP_SERVERS[$i]}# 查找正在运行的Java进程的PIDPID=$(ps aux | grep java | grep "$APP_SERVER" | grep -v grep | awk '{print $2}')if [ -z "$PID" ]; thenecho "demo-test-1.0.0 server application $i is not running."else# 杀死进程echo "Stopping demo-test-1.0.0 server application $i (PID: $PID)..."kill $PIDsleep 5fi
done# 确保进程已停止后再启动程序
for ((i = 0; i < ${#APP_SERVER_PATHS[@]}; i++)); doAPP_SERVER_PATH=${APP_SERVER_PATHS[$i]}APP_SERVER=${APP_SERVERS[$i]}# 启动程序echo "Starting demo-test-1.0.0 server application $i..."nohup java -Xms512m -Xmx1024m -Xmn256m -Xss256k -jar "${APP_SERVER_PATH}${APP_SERVER}" --spring.profiles.active=prod > /dev/null 2>&1 &echo "demo-test-1.0.0 server application $i restarted successfully."
done
  1. 修改IDEA 部署脚本
    在这里插入图片描述

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

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

相关文章

日志系统(最新版)

基础知识 日志&#xff0c;由服务器自动创建&#xff0c;并记录运行状态&#xff0c;错误信息&#xff0c;访问数据的文件。 同步日志&#xff0c;日志写入函数与工作线程串行执行&#xff0c;由于涉及到I/O操作&#xff0c;当单条日志比较大的时候&#xff0c;同步模式会阻塞…

file | 某文件夹【解耦合】下的文件查找功能实现及功能单元测试

文件查找工具 概要思路OS模块 --- 学习版os.getcwd()os.path.dirname(os.getcwd())os.path.dirname() 和 os.path.basename() OS模块 — 实战版单元测试解耦合 概要 梳理业务主逻辑&#xff1a; 查看存放被采集JSON数据的文件夹内的文件列表【所有 包含文件夹下的文件夹下的文…

【Anaconda】修改jupyter notebook默认打开的工作目录、jupyter notebook快捷键

jupyter notebook快捷键 针对单元格的颜色蓝色命令行模式绿色编辑模式 两种模式的切换编辑模式切换到命令行模式 >>> esc键命令行模式切换到编辑模式 >>> 鼠标左键或者直接按enter键1.标题的书写方式1:1.esc进入命令行模式2.按m键3.写内容4.运行单元格即可方…

SprinBoot+Vue健康管管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

LabVIEW水泵机组监控系统

介绍了一种基于LabVIEW的水泵机组智能监控系统。该系统结合先进的传感器和数据采集技术&#xff0c;实时监控水泵机组的运行状态&#xff0c;有效预防故障&#xff0c;提高运行效率。通过LabVIEW平台的集成开发环境&#xff0c;系统实现了高效的数据处理和友好的用户界面。 项…

SpringCloud-02 Consul服务注册与发现

Consul是一种用于服务发现、配置和分布式协调的开源工具。Consul提供了以下主要功能&#xff1a; 1.服务发现&#xff1a;Consul允许开发人员在微服务架构中注册和发现服务。它可以自动检测新添加的服务并为它们分配唯一的网络地址。 2.健康检查&#xff1a;Consul可以定期检查…

一篇文档教会你从JavaScript语法走进DOM,让你的网页动起来

目录 JavaScript与WebAPI WebAPI简介 DOM 获取元素 事件 事件三要素 常见的事件类型 获取修改元素属性 基本介绍和使用 案例1&#xff1a;实现文本框内数字计数 案例2&#xff1a;实现“全部选中”按钮触发时相应的效果&#xff08;worth trying for a freshman&…

turbovnc 服务端、客户端安装

turbovnc 可以方便地远程登录带界面的linux系统&#xff0c;比如xbuntu、kali等&#xff1b;远程windows11系统&#xff0c;经过亲身测试体验&#xff0c;感觉还是不如windows自带的rdp服务&#xff08;mstsc命令连接&#xff09;好用。 一、安装客户端 下载最新版本的客户端…

力扣面试经典算法150题:接雨水

接雨水 今天的题目是力扣面试经典算法150题中的困难难度数组题目&#xff1a;分发糖果。 题目链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定 n 个非负整数表示每个宽度为…

0904作业+思维导图

一、作业 &#xff08;将昨天的作业修改为标准模板类的&#xff09; 1、代码 #include <iostream> #include <stack> using namespace std; //队列模板类 template<typename T> class Queue { private:int max; //队列最大容量int num; //队列内…

pikachu文件包含漏洞靶场通关攻略

本地文件包含 首先&#xff0c;在靶场根目录下创建一个php文件&#xff0c;内容是phpinfo(); 其次&#xff0c;上传一个任意球星图片&#xff0c;会跳转到带有filename参数的php文件下 然后&#xff0c;将filename的参数改为可以访问到我们创建的php文件的地址 ../../../../…

TCP协议多进程多线程并发服务器

TCP多进程多线程并发服务器 1.多进程并发服务器 #include <myhead.h>#define SERPORT 6666 #define SERIP "192.168.0.136" #define BLACKLOG 10void hande(int a) {if(aSIGCHLD){while(waitpid(-1,NULL,WNOHANG)!-1);//回收僵尸进程} }int main(int argc, c…

【Grafana】Prometheus结合Grafana打造智能监控可视化平台

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Oracle 客户端 PL/SQL Developer 15.0.4 安装与使用

目录 官网下载与安装 切换中文与注册 连接Oracle数据库 tnsnames.ora 文件使用 Oracle 客户端 PL/SQL Developer 12.0.7 安装、数据导出、Oracle 执行/解释计划、for update。 官网下载与安装 1、官网&#xff1a;https://www.allroundautomations.com/products/pl-sql-d…

Redis的配置和启动+Redis Insight连接

一、安装 Redis的安装&#xff1a;从镜像站下载&#xff1a;索引 redis-local (huaweicloud.com)&#xff0c;然后将其传到Linux虚拟机中进行解压&#xff0c;解压之后需要下载gcc&#xff0c;因为Redis底层是用c写的&#xff0c;所以要编译一下生成redis文件&#xff0c;然后…

vite项目配置本地开发使用https访问

在Vite项目中启用HTTPS以安全地使用navigator.mediaDevices.getUserMedia() 引言 在现代Web开发中&#xff0c;保护用户隐私和数据安全是至关重要的。特别是在涉及到媒体捕获功能&#xff0c;如使用用户的摄像头或麦克风时&#xff0c;Web应用需要遵循严格的安全准则。naviga…

反向迭代器:reverse_iterator的实现

目录 前言 特点 注意事项 实现 构造函数 功能函数 在list与vector中的使用 vector list 前言 反向迭代器是一种在序列容器的末尾开始&#xff0c;并向前移动至序列开始处的迭代器。在C中&#xff0c;反向迭代器由标准库中的容器类提供&#xff0c;比如vector、list、d…

Qt 字符串的编码方式,以及反斜杠加3个数字是什么编码\344\275\240,如何生成

Qt 字符串的编码方式 问题 总所周知&#xff0c;Qt的ui文件在编译时&#xff0c;会自动生成一个ui_xxxxx.h的头文件&#xff0c;打开一看&#xff0c;其实就是将摆放的控件new出来以及布局的代码。 只要用Qt提供的uic.exe工具&#xff0c;自己也可以将ui文件输出为代码文件…

c# 笔记 winform添加右键菜单,获取文件大小 ,多条件排序OrderBy、ThenBy,list<double>截取前5个

Winform右键菜单‌ 要在C# Winform应用程序中添加右键菜单&#xff0c;‌你可以按照以下步骤操作&#xff1a;‌ 1.‌创建菜单项‌ 在Form的构造函数或加载事件中&#xff0c;‌创建ContextMenuStrip控件的实例&#xff0c;‌并为其添加菜单项。‌ 2.‌绑定到控件‌ 将Con…

c++ websocket简单讲解

只做简单讲解。 一.定义和原理 WebSocket 是从 HTML5 开始⽀持的⼀种⽹⻚端和服务端保持⻓连接的消息推送机制&#xff0c;传统的 web 程序都是属于 "⼀问⼀答" 的形式&#xff0c;即客⼾端给服务器发送了⼀个 HTTP 请求&#xff0c;服务器给客⼾端返回⼀个 HTTP 响…