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 部署脚本
相关推荐
zhd15306915625ff2 分钟前
库卡机器人维护需要注意哪些事项
安全·机器人·自动化
郑祎亦13 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
不是二师兄的八戒13 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
爱编程的小生25 分钟前
Easyexcel(2-文件读取)
java·excel
带多刺的玫瑰42 分钟前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导61 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study1 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
Chris _data1 小时前
二叉树oj题解析
java·数据结构
牙牙7052 小时前
Centos7安装Jenkins脚本一键部署
java·servlet·jenkins
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端