前言
一键自动化部署项目是现代软件开发中的一种高效实践,它带来了许多显著的好处:
- 提高效率:自动化部署可以节省手动部署所需的时间。特别是在频繁部署的情况下,自动化可以显著减少重复性工作,让开发人员有更多时间专注于编码和解决问题。
- 减少错误:手动部署过程容易出错,尤其是在复杂的部署流程中。自动化部署可以减少人为错误,确保每次部署都是一致和可靠的。
- 快速回滚:如果新部署的版本出现问题,自动化部署流程可以快速回滚到上一个稳定版本,减少系统不可用的时间。
- 持续集成和持续部署(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. 选择本地要上传的jar包
- 注意⚠️ 这里一定要本地的绝对路径

8. 添加启动命令

9. 配置打包命令
clean package install -dmaven.test.skip=true

到这里差不多就配置完了,简单测试一下
10. 测试



11. 部署脚本
服务器脚本位置
/opt/app/test/deploy/test.sh
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++)); 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 部署脚本

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论