- Go 98.7%
- Shell 1%
- Dockerfile 0.3%
| 文件名 | 最新提交消息 | 最新提交日期 |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| internal | ||
| ops/env | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
wack-backend
Forgejo Actions 部署
.forgejo/workflows/deploy.yml 在 main 或 dev 分支 push 后运行测试、构建后端镜像,并在 GMK 的 Docker 中更新对应环境。SQLite 数据持久化在名为 wack-backend-main-data 或 wack-backend-dev-data 的 Docker volume,容器内路径固定为 /data/wack.db;Redis 也按环境隔离。
仓库 secrets 使用 WACK_MAIN_JWT_SECRET 和 WACK_DEV_JWT_SECRET,分别注入对应容器的 WACK_JWT_SECRET。工作流不再通过 SSH 上传二进制,也不再使用旧服务器的 systemd 部署参数。
构建阶段执行 go test ./...;部署脚本仅允许 main/dev,先检查密钥、镜像和数据卷,再停止旧容器、使用 SQLite 在线备份命令保存快照,启动新容器并等待 HTTP 健康检查。失败时恢复旧容器;数据库备份保留在卷内 /data/backups/,涉及不兼容 schema 的版本应人工维护停机恢复,不自动覆盖数据库。
本地运行时指定可写路径,例如 WACK_DB_PATH=./data/wack.db WACK_REDIS_ADDR=127.0.0.1:6379 go run .。容器默认路径为 /data/wack.db,生产与开发的 SQLite、Redis、JWT 密钥均隔离。
runner 使用 GMK 上预置的 wack-ci:20260919(Node、Git、Docker 29 CLI)。它能访问宿主机 Docker socket,相当于宿主机管理权限:只允许可信维护者推送 main/dev,不运行不可信 PR 工作流。