feat: add server-build auto deploy

This commit is contained in:
chenkailing
2026-04-11 19:36:19 +08:00
parent c9005d0c04
commit 1b3cf33bf0
4 changed files with 196 additions and 116 deletions

View File

@@ -8,17 +8,14 @@
- 运行配置`C:\kkFileView-5.0\config\test.properties`
- 健康检查地址`http://127.0.0.1:8012/`
服务器当前没有安装 `git` `mvn`因此自动部署链路采用
当前自动部署链路采用服务器拉最新源码并本机编译的方式
1. GitHub Actions `master` 合并后构建 `kkFileView-*.jar`
2. GitHub Actions runner 解析当前 workflow artifact 的临时下载地址
3. 通过 WinRM 连接 Windows 服务器
4. 由服务器通过临时下载地址拉取 jar artifact
5. 备份线上 jar替换为新版本
6. 使用现有 `startup.bat` 重启并做健康检查
7. 如果健康检查失败则自动回滚旧 jar 并重新拉起
这样做的目的是不把 GitHub token 下发到生产服务器服务器只接触一次性 artifact 下载链接
1. 通过 WinRM 连接 Windows 服务器
2. 在服务器上的源码目录执行 `git fetch/reset/clean`同步到 `origin/master`
3. 使用服务器上的 JDK 21 Maven 执行 `mvn clean package -Dmaven.test.skip=true`
4. 备份线上 jar替换为新构建产物
5. 使用现有 `startup.bat` 重启并做健康检查
6. 如果健康检查失败则自动回滚旧 jar 并重新拉起
## 需要配置的 GitHub Secrets
@@ -26,16 +23,33 @@
- `KK_DEPLOY_USERNAME`
- `KK_DEPLOY_PASSWORD`
下面这些可以不配未配置时会使用默认值
下面这些可以通过 workflow env GitHub Variables 覆盖未配置时会使用默认值
- `KK_DEPLOY_PORT=5985`
- `KK_DEPLOY_ROOT=C:\kkFileView-5.0`
- `KK_DEPLOY_HEALTH_URL=http://127.0.0.1:8012/`
- `KK_DEPLOY_REPO_URL=https://github.com/kekingcn/kkFileView.git`
- `KK_DEPLOY_BRANCH=master`
- `KK_DEPLOY_SOURCE_ROOT=C:\kkFileView-source`
- `KK_DEPLOY_JAVA_HOME=C:\Program Files\jdk-21.0.2`
- `KK_DEPLOY_GIT_EXE=C:\kkFileView-tools\git\cmd\git.exe`
- `KK_DEPLOY_MVN_CMD=C:\kkFileView-tools\maven\bin\mvn.cmd`
- `KK_DEPLOY_MAVEN_SETTINGS=`
如果服务器到 GitHub 的拉取速度不稳定也可以把 `KK_DEPLOY_REPO_URL` 改成你自己的 Git 镜像地址
如果服务器访问 Maven Central 不稳定也可以通过 `KK_DEPLOY_MAVEN_SETTINGS` 指向自定义 `settings.xml`切换到就近镜像仓库
## 服务器前置环境
服务器需要具备以下工具
- Git for Windows推荐安装在 `C:\kkFileView-tools\git`
- Apache Maven 3.9.x推荐安装在 `C:\kkFileView-tools\maven`
- JDK 21当前线上已存在`C:\Program Files\jdk-21.0.2`
## Workflow
新增 workflow`.github/workflows/master-auto-deploy.yml`
- 触发条件`push` `master`或手动 `workflow_dispatch`
- 构建产物`kkfileview-server-jar`
- 部署方式WinRM + runner 侧解析 artifact 临时下载地址 + Windows 服务器拉取 artifact
- 部署方式WinRM + 服务器源码同步 + 服务器本机 Maven 编译 + jar 替换/回滚