使用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脚本,停止旧应用、备份并部署新应用。
posted @ 2025-08-18 15:21  alloutlove  阅读(28)  评论(0)    收藏  举报