Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6
742 字
4 分钟
【2026年西大毕业册开发前置准备】后端项目部署

Spring Boot 项目通过 GitHub Actions 实现自动化部署#

在之前的静态博客部署过程中,相关步骤给了我一定的启发。例如,将代码上传到 GitHub,然后在服务器端通过脚本定时拉取代码、启动项目的操作。这些操作应该也可以适用于后端的 Spring Boot 项目,无非就是后端的部署更麻烦一点,需要多几行命令,这种自动化流程的部署比我之前开发项目时手动打包 jar 包无疑方便很多。

于是我去搜寻了相关资料,发现这方面的操作现在已经比较成熟,Spring Boot + 服务器 CI/CD 架构就是其中一个很好的选择。

整体流程#

你本地 git push
GitHub Actions(云端)
1. 拉代码
2. mvn build(生成 jar)
3. scp jar 到服务器
4. ssh 到服务器重启应用
服务器只做一件事:运行 jar

那么,按照这些步骤,我就简单通过一个 demo 进行测试。

实施步骤#

1. 创建本地项目并添加测试接口#

首先在本地创建一个 Spring Boot 项目,并添加一个简单的接口用于测试:

@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "Hello, world!";
}

当访问 /hello 接口时,返回结果为:Hello, world!

2. 服务器端配置#

(1)确认 Java 环境#

java -version

如果没有安装 Java(以 Ubuntu 为例):

apt update
apt install -y openjdk-17-jre

(2)准备项目目录#

/root/test
├── app.jar # GitHub Actions 上传
├── app.log # 运行日志
└── start.sh # 启动 / 重启脚本

(3)编写启动脚本 start.sh#

#!/bin/bash
set -e
APP_DIR=/root/test
APP_JAR=app.jar
cd $APP_DIR
echo "===> Stop old process"
pkill -f $APP_JAR || true
echo "===> Start new process"
nohup java -jar $APP_DIR/$APP_JAR > app.log 2>&1 &

别忘了授权:

chmod +x ~/test/start.sh

(4)生成服务器 SSH Key#

ssh-keygen -t ed25519 -C "github-actions"
# 一路回车
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

公钥已加入授权,私钥留着下一步用。

3. GitHub 仓库配置#

打开你的仓库 → Settings → Secrets and variables → Actions

点击 New repository secret,填写:

名称内容
SERVER_HOST你的服务器 IP(例:123.45.67.89)
SERVER_USERroot
SERVER_SSH_KEY打开 /root/.ssh/id_ed25519,复制完整内容(包括 BEGIN/END 部分)

4. 创建 GitHub Actions 工作流#

在 Spring Boot 项目仓库中新建文件:.github/workflows/deploy.yml

name: Build and Deploy Spring Boot JAR
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Upload JAR to server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
source: "target/*.jar"
target: "/root/test/"
strip_components: 1
- name: Restart app on server
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
chmod +x /root/test/start.sh
/root/test/start.sh

5. 结果查看#

部署成功后,服务器成功启动了项目。

部署结果

总结#

通过上述配置,每次向主分支推送代码时,GitHub Actions 会自动构建项目并将生成的 JAR 文件部署到服务器,然后重启应用。这种方式大大简化了部署流程,提高了开发效率。

【2026年西大毕业册开发前置准备】后端项目部署
http://hgqwd.icu/posts/biyece1/
作者
天线宝宝死于谋杀
发布于
2025-12-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00