GitHub Actions 实现 Java 项目 CI CD 自动部署教程
GitHub Actions使用
整体流程说明
开发 push 代码到 GitHub 指定分支
GitHub Actions 自动触发工作流
拉取代码
配置 JDK 环境
使用 Maven 构建项目
将生成的 JAR 包上传到服务器
在服务器上执行部署脚本(如重启服务)
前置配置
项目要求
Java 项目(使用 Maven 构建)
项目能通过
mvn clean package正常打包打包后生成 JAR,例如:
target/template.jar
服务器要求
一台 Linux 服务器(如 Ubuntu / CentOS)
已配置 SSH 登录
服务器上有部署脚本,例如:
1 | |
GitHub Secrets 配置
进入 GitHub 的项目代码仓库:
Settings → Secrets and variables → Actions → New repository secret
配置以下变量:
| Secret 名称 | 说明 |
|---|---|
SERVER_HOST |
服务器 IP |
PORT |
SSH 端口(一般是 22) |
SERVER_USERNAME |
SSH 用户名 |
SSH_KEY |
私钥(无密码) |
⚠️ SSH_KEY 必须是完整私钥内容,例如:
1 | |

GitHub Actions 工作流配置
在项目根目录创建文件
1 | |
内容示例
1 | |
配置详解
工作流名称
1 | |
该名称会显示在 GitHub Actions 页面中,用于标识该流水线。
触发条件
1 | |
含义:当代码 push 到 **dev** 分支 时触发部署
也可以写成:
1 | |
Job 配置
1 | |
说明:
build-and-publish:Job 名称runs-on: ubuntu-latest:使用 GitHub 提供的 Ubuntu Runnerif: false:当前禁用 Job,就是不运行,若要启用自动部署,删除if或改为if: true
拉取代码
1 | |
作用:
- 将 GitHub 仓库代码拉取到 Runner 中
设置 JDK 环境
1 | |
说明:
使用 Java 8
启用 Maven 依赖缓存,加快构建速度
Maven 构建项目
1 | |
作用:
编译并打包项目
-DskipTests:跳过测试,加快部署
上传 JAR 到服务器
1 | |
功能:
- 通过 SCP 将 JAR 包上传到服务器
关键参数:
source:本地 JAR 路径target:服务器目录overwrite: true:覆盖旧文件host:服务器地址port:SSH 端口username:服务器登录用户key:SSH 私钥(如果不是私钥登录可换成password)
远程执行部署脚本
1 | |
作用:
SSH 登录服务器
执行部署脚本(如停止旧进程、启动新服务)
变量
在 workflow 运行时,动态取Secrets中的配置并替换
1 | |
部署记录查看

选择其中一个可以看到详细记录


