修改自动构建
Build and publish packages and Docker images / Test, build and publish (push) Failing after 9m24s

This commit is contained in:
2026-07-24 08:51:24 +08:00 Unverified
parent ef8222c138
commit 3162a5d3a3
3 changed files with 163 additions and 9 deletions
+17 -5
View File
@@ -173,9 +173,20 @@ docker compose run --rm --entrypoint dotnet app /app/tools/Eis.Tools.dll databas
docker compose up --detach app
```
#### Gitea Actions 自动发布 Docker Hub 与 Gitea 软件包
#### Gitea Actions 自动发布跨平台程序包与 Docker 镜像
工作流位于 `.gitea/workflows/docker-publish.yml`。它会使用 .NET 10 运行测试,然后构建 `linux/amd64``linux/arm64` 双架构镜像,并同时推送到 Docker Hub 与 `git.biss.click/biss/exam-information-system`
工作流位于 `.gitea/workflows/publish.yml`。它会构建 Vue 前端、使用 .NET 10 运行测试,然后默认生成以下无需预装 .NET 运行时的自包含程序包:
- Windows`win-x64``.zip`
- Linux`linux-x64``linux-arm64``.tar.gz`
每个程序包都把 Web 与数据库工具放在同一个 `app` 目录中,使二者共享 .NET 运行时和公共依赖;根目录还包含 `README.md``LICENSE` 和环境变量示例,构建结果同时附带 `SHA256SUMS`。标签构建会把这些文件上传到同名 Gitea Release;手动构建可在 Actions 运行记录中下载归档。普通代码推送不会触发这套耗时的发布构建。
解压后,Windows 使用 `.\app\Eis.Web.exe` 启动服务,Linux/macOS 使用 `./app/Eis.Web`;数据库工具分别为 `.\app\Eis.Tools.exe``./app/Eis.Tools`
如需 Windows ARM64、macOS Intel 或 Apple Silicon 包,从 Gitea Actions 页面手动运行工作流并勾选“同时构建 Windows ARM64 和 macOS x64/ARM64”。扩展构建会在默认三种平台之外增加 `win-arm64``osx-x64``osx-arm64`
同一工作流还会构建 `linux/amd64``linux/arm64` 双架构 Docker 镜像,并同时推送到 Docker Hub 与 `git.biss.click/biss/exam-information-system`
使用前需要完成以下配置:
@@ -185,7 +196,7 @@ docker compose up --detach app
4. 使用对 `biss` 组织拥有软件包写权限的 Gitea 账号,在“设置 → 应用 → 生成新令牌”中创建具有 Package Read & Write 权限的个人访问令牌。在仓库 Actions Variables 中添加 `REGISTRY_USERNAME`,值为该令牌所属的用户名;在 Actions Secrets 中添加 `REGISTRY_TOKEN`,值为个人访问令牌。自定义 Secret 不能使用 Gitea 保留的 `GITEA_` 前缀,也不能用工作流内置的 `GITEA_TOKEN` 代替该软件包令牌。
5. 确保 Gitea Actions 与仓库的软件包注册表已启用,并且 `ubuntu-latest` Runner 能访问 Docker daemon、GitHub、Docker Hub 和 `git.biss.click`。双架构构建还需要 Runner 允许 QEMU 注册步骤运行。
推送到 `master` 后会发布 `latest``sha-<短提交号>`推送形如 `v1.2.3` 的 Git 标签后会发布 `1.2.3``1.2` 和对应的提交标签,并在镜像推送成功后自动创建同名正式 Gitea Release。例如:
推送形如 `v1.2.3` 的 Git 标签后,会自动构建跨平台程序包,发布镜像标签 `1.2.3``1.2``latest` 和对应的提交标签,并在构建成功后创建带下载附件的同名正式 Gitea Release。例如:
```powershell
git tag v1.2.3
@@ -199,9 +210,9 @@ git tag v1.3.0-rc.1
git push origin v1.3.0-rc.1
```
该版本的镜像标签为 `1.3.0-rc.1`,不会覆盖稳定版的 `1.3``latest` 标签。
该版本的镜像标签为 `1.3.0-rc.1`,不会覆盖稳定版的 `1.3``latest` 标签。除版本标签外,也可以从 Gitea Actions 页面手动运行工作流;普通分支推送不会触发发布。
工作流也支持从 Gitea Actions 页面手动运行。构建缓存保存为同一 Docker Hub 仓库中的 `buildcache` 标签,以加快后续构建。Release 使用工作流内置的 `GITEA_TOKEN` 创建,无需添加额外 Secret;仓库或组织“Actions → General”中的任务令牌最大权限必须允许 Releases Write。
构建缓存保存为同一 Docker Hub 仓库中的 `buildcache` 标签,以加快后续构建。Release 使用工作流内置的 `GITEA_TOKEN` 创建,无需添加额外 Secret;仓库或组织“Actions → General”中的任务令牌最大权限必须允许 Releases Write。
首次成功推送后,容器镜像会出现在 `biss` 所有者的软件包列表。Gitea 的软件包归属于用户或组织,不会天然归属于某个仓库;打开该软件包的设置页面,将它关联到 `Exam-Information-System`,即可让它显示在此仓库的“软件包”页。之后可使用 `docker pull git.biss.click/biss/exam-information-system:latest` 拉取。
@@ -393,6 +404,7 @@ src/Eis.Web/wwwroot 浏览器入口、基础样式及 CKEditor
tests/Eis.Infrastructure.Tests xUnit 自动化测试
scripts/publish.ps1 Web 与数据库工具统一发布脚本
scripts/publish-platform-packages.sh CI 跨平台自包含程序包构建脚本
scripts/smoke-dotnet-native.ps1 纯 .NET 发布产物烟测
data/exam.sqlite 本地运行后生成的 SQLite 数据库
.env.example 开发与生产环境变量模板