文章目录
- 前言
- [一、 IDEA插件安装](#一、 IDEA插件安装)
-
- [1. 首先下载 Alibaba Cloud Toolkit 插件](#1. 首先下载 Alibaba Cloud Toolkit 插件)
- [2. 插件下载完成后重启IDEA](#2. 插件下载完成后重启IDEA)
- 二、SpringBoot项目准备
-
- [1. pom.xml 文件](#1. pom.xml 文件)
- [2. controller](#2. controller)
- [3. 启动类](#3. 启动类)
- 三、SpringBoot项目jar包部署
-
- [1. Alibaba Cloud Toolkit 插件服务器配置](#1. Alibaba Cloud Toolkit 插件服务器配置)
- [2. 主机 IP、用户名、密码 点击测试链接](#2. 主机 IP、用户名、密码 点击测试链接)
- [3. 编辑项目配置](#3. 编辑项目配置)
- [4. 选择 Deploy to Host](#4. 选择 Deploy to Host)
- [5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器](#5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器)
- [6. 配置服务器jar包存放目录](#6. 配置服务器jar包存放目录)
- [7. 选择本地要上传的jar包](#7. 选择本地要上传的jar包)
- [8. 添加启动命令](#8. 添加启动命令)
- [9. 配置打包命令](#9. 配置打包命令)
- [10. 测试](#10. 测试)
- [11. 部署脚本](#11. 部署脚本)
前言
一键自动化部署项目是现代软件开发中的一种高效实践,它带来了许多显著的好处:
- 提高效率:自动化部署可以节省手动部署所需的时间。特别是在频繁部署的情况下,自动化可以显著减少重复性工作,让开发人员有更多时间专注于编码和解决问题。
- 减少错误:手动部署过程容易出错,尤其是在复杂的部署流程中。自动化部署可以减少人为错误,确保每次部署都是一致和可靠的。
- 快速回滚:如果新部署的版本出现问题,自动化部署流程可以快速回滚到上一个稳定版本,减少系统不可用的时间。
- 持续集成和持续部署(CI/CD):自动化部署是CI/CD流程的关键组成部分,它允许开发团队快速迭代和发布新功能,提高软件交付的速度和质量。
- 标准化流程:自动化部署有助于标准化部署流程,确保所有团队成员都遵循相同的步骤和标准,这有助于维护代码和部署的一致性。
提示:文章一共介绍2种方式,下面案例可供参考
一、 IDEA插件安装
1. 首先下载 Alibaba Cloud Toolkit 插件
2. 插件下载完成后重启IDEA
二、SpringBoot项目准备
1. pom.xml 文件
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
java
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. 启动类
java
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. 选择本地要上传的jar包
- 注意⚠️ 这里一定要本地的绝对路径
8. 添加启动命令
9. 配置打包命令
bash
clean package install -Dmaven.test.skip=true
到这里差不多就配置完了,简单测试一下
10. 测试
11. 部署脚本
- 服务器脚本位置
java
/opt/app/test/deploy/test.sh
bash
#!/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++)); do
APP_SERVER_PATH=${APP_SERVER_PATHS[$i]}
APP_SERVER=${APP_SERVERS[$i]}
# 查找正在运行的Java进程的PID
PID=$(ps aux | grep java | grep "$APP_SERVER" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
echo "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 $PID
sleep 5
fi
done
# 确保进程已停止后再启动程序
for ((i = 0; i < ${#APP_SERVER_PATHS[@]}; i++)); do
APP_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
- 修改IDEA 部署脚本