idea一键自动化部署项目

文章目录

  • 前言
  • [一、 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. 部署脚本

  1. 服务器脚本位置
java 复制代码
/opt/app/test/deploy/test.sh
  1. 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
  1. 修改IDEA 部署脚本
相关推荐
神秘的t1 分钟前
Spring Web MVC————入门(2)
java·spring·mvc
开开心心就好11 分钟前
高效全能PDF工具,支持OCR识别
java·前端·python·pdf·ocr·maven·jetty
冷心笑看丽美人12 分钟前
Spring MVC数据绑定和响应 你了解多少?
java·spring·mvc
XQ丶YTY19 分钟前
大二java第一面小厂(挂)
java·开发语言·笔记·学习·面试
呆萌很31 分钟前
基于 Spring Boot 瑞吉外卖系统开发(十四)
spring boot
一零贰肆35 分钟前
深入理解SpringBoot中的SpringCache缓存技术
java·springboot·springcache·缓存技术
码上飞扬1 小时前
Java大师成长计划之第22天:Spring Cloud微服务架构
java·运维·云计算
秋野酱2 小时前
基于javaweb的SpringBoot自习室预约系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
呆萌很2 小时前
基于 Spring Boot 瑞吉外卖系统开发(十五)
spring boot
面试官E先生2 小时前
【极兔快递Java社招】一面复盘|数据库+线程池+AQS+中间件面面俱到
java·面试