使用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: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SERVER_SSH_KEY }}
        port: ${{ secrets.SERVER_PORT }}
        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问题。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 07 月 18 日
如果觉得我的文章对你有用,请随意赞赏