使用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. 工作流程说明
触发条件:当代码推送到
main
分支时,触发工作流。构建步骤:
- 检出代码。
- 设置JDK 11环境。
- 使用Maven构建项目。
部署步骤:
- 使用
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问题。