GitHub-Actions-SpringBoot项目部署

简介: 通过以上配置,当代码推送到GitHub仓库时,GitHub Actions将自动执行构建和部署过程,实现持续集成和持续部署。这不仅提高了开发效率,还减少了手动部署的风险。确保每一步操作都正确无误,可以避免常见的CI/CD问题。

使用GitHub Actions自动部署Spring Boot项目

GitHub Actions是一种强大的持续集成和持续部署(CI/CD)工具,可以帮助我们自动化构建、测试和部署Spring Boot项目。以下是详细的步骤,展示如何配置GitHub Actions来部署Spring Boot项目。

1. 前提条件

  • 已有一个Spring Boot项目,并且其代码托管在GitHub上。
  • 目标服务器已配置好SSH访问,并能够运行Spring Boot应用。

2. 配置GitHub Actions

在GitHub项目的根目录下创建 .github/workflows文件夹,并在其中创建一个新的YAML文件(例如 deploy.yml)。

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'

    - name: Build with Maven
      run: mvn clean install

    - name: Deploy to Server
      uses: appleboy/ssh-action@v0.1.1
      with:
        host: $<ruby>secrets.SERVER_HOST }}
        username<rp> (</rp><rt>${
  { secrets.SERVER_USER</rt><rp>) </rp></ruby>
        key: $<ruby>secrets.SERVER_SSH_KEY }}
        port<rp> (</rp><rt>${
  { secrets.SERVER_PORT</rt><rp>) </rp></ruby>
        script: |
          cd /path/to/deployment
          ./deploy.sh
​

3. 配置Secrets

为了安全地存储敏感信息,我们使用GitHub Secrets。前往GitHub仓库的Settings > Secrets > Actions,添加以下Secrets:

  • SERVER_HOST:目标服务器的IP地址或主机名。
  • SERVER_USER:SSH登录的用户名。
  • SERVER_SSH_KEY:SSH私钥(用于认证)。
  • SERVER_PORT:SSH端口,通常为22。

4. 服务器上的部署脚本

在目标服务器上创建一个部署脚本(如 deploy.sh),用于执行具体的部署操作。

#!/bin/bash

# 停止当前运行的Spring Boot应用
echo "Stopping current application..."
pkill -f 'java -jar'

# 备份旧的应用程序
echo "Backing up old application..."
mv /path/to/deployment/app.jar /path/to/deployment/app-backup.jar

# 复制新的构建文件
echo "Deploying new application..."
cp /path/to/source/repo/target/app.jar /path/to/deployment/app.jar

# 启动新的Spring Boot应用
echo "Starting new application..."
nohup java -jar /path/to/deployment/app.jar > /path/to/deployment/app.log 2>&1 &
​

确保 deploy.sh脚本有执行权限:

chmod +x /path/to/deployment/deploy.sh
​

5. 工作流程说明

  1. 触发条件:当代码推送到 main分支时,触发工作流。

  2. 构建步骤

    • 检出代码。
    • 设置JDK 11环境。
    • 使用Maven构建项目。
  3. 部署步骤

    • 使用 ssh-action插件,通过SSH连接到目标服务器。
    • 执行服务器上的 deploy.sh脚本,停止旧应用、备份并部署新应用。

思维导图

- GitHub Actions部署Spring Boot项目
  - 前提条件
    - Spring Boot项目
    - 配置好的SSH访问
  - 配置GitHub Actions
    - 创建YAML文件
    - 设置构建和部署步骤
  - 配置Secrets
    - SERVER_HOST
    - SERVER_USER
    - SERVER_SSH_KEY
    - SERVER_PORT
  - 服务器上的部署脚本
    - 停止当前应用
    - 备份旧应用
    - 复制新构建文件
    - 启动新应用
  - 工作流程说明
    - 触发条件
    - 构建步骤
    - 部署步骤
​

通过以上配置,当代码推送到GitHub仓库时,GitHub Actions将自动执行构建和部署过程,实现持续集成和持续部署。这不仅提高了开发效率,还减少了手动部署的风险。确保每一步操作都正确无误,可以避免常见的CI/CD问题。

目录
相关文章
|
前端开发 Java Linux
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
1897 0
《Linux篇》02.超详细SpringBoot项目部署教程(附脚本自动部署)(三)
|
弹性计算 Java Linux
手把手教你把Springboot项目部署到阿里云教程
手把手教你把Springboot项目部署到阿里云教程成功连接远程云服务器和配置阿里云安全组
1565 1
|
4月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
379 1
|
7月前
|
Java Linux 程序员
大事件后端项目36--------SpringBoot项目部署
大事件后端项目36--------SpringBoot项目部署
|
8月前
|
Java 关系型数据库 MySQL
保姆级教程——将springboot项目部署到阿里云服务器包含环境配置(小白包会)
本文档详细介绍了将SpringBoot项目部署到阿里云服务器的步骤。首先,通过Xshell连接服务器,使用公网IP地址。接着,下载JDK的Linux版本,使用XFTP上传并解压,配置环境变量。然后,安装MySQL 5.7,包括下载YUM源、安装、启动服务以及修改root密码和开启远程访问。最后,将SpringBoot项目打包成jar,上传至服务器,使用`java -jar`命令运行,通过`nohup`确保服务持续运行。配置安全组以允许远程访问。
1270 0
|
8月前
|
Java 应用服务中间件 Maven
SpringBoot-项目部署
本文介绍如何在服务器上部署SpringBoot-项目
463 0
|
8月前
|
Java 调度 Docker
Docker【应用 01】Spring Boot 项目部署在Linux环境下的Docker容器内举例(任务调度系统 xxl-job 任务调度中心)(手动版)
Docker【应用 01】Spring Boot 项目部署在Linux环境下的Docker容器内举例(任务调度系统 xxl-job 任务调度中心)(手动版)
153 0
|
JavaScript 前端开发 Java
SpringBoot + Vue 前后端分离项目部署到服务器上
SpringBoot + Vue 前后端分离项目部署到服务器上
705 0
|
小程序 Java 关系型数据库
java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)
java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)
606 1
|
JavaScript 前端开发 NoSQL
如何免费将springboot+vue项目部署上线(云服务器+宝塔面板)
如何免费将springboot+vue项目部署上线(云服务器+宝塔面板)
883 0