# Test_runner Gitea Actions 自托管 runner 的测试仓库,同时作为其他仓库编写 workflow 的参考。 - 实例:https://gitea.docker.antior.cn/ - 参考 workflow:[.gitea/workflows/build.yaml](.gitea/workflows/build.yaml)(push 到 main → esbuild 编译 → 打包 → 创建 Release 并上传产物) - runner 环境说明与人工部署手顺:[docs/add-runner.md](docs/add-runner.md) ## 给其他电脑 Agent 的 Prompt(复制即用) ```text 我的 Gitea 实例:https://gitea.docker.antior.cn/ 仓库已有一台在线的自托管 runner,请为本仓库编写 Gitea Actions workflow, 实现:push 到 main 分支时自动编译/构建,并创建 Release、上传构建产物。 【runner 环境约束 —— workflow 必须遵守】 - runner 是 Windows 11 x64 宿主机模式(非 Docker),labels:windows-latest / windows / windows-amd64 → runs-on 必须用 windows-latest - 已安装工具链: - Node.js v22 + npm 10(node/npm 直接在 PATH) - Python 3.10 / 3.11 / 3.12 / 3.13 / 3.14,通过 py launcher 调用(py -3.12 等,py 默认为 3.14) → workflow 里必须用 py -X.Y 显式指定版本,不要只写 python(PATH 中的 python 是 3.12,可能与预期不符) - PowerShell 7 (pwsh)、git、curl - 没有:gcc/make/go/rust/docker。不要引用依赖这些工具的步骤 - workflow 文件放在 .gitea/workflows/ 目录(不是 .github/) - 默认 shell 是 PowerShell,写 run 步骤时用 PowerShell 语法, 或显式声明 shell: pwsh;不要写 bash 语法 - 路径用 Windows 规则;产物打包用 Compress-Archive - actions/checkout@v4 等 GitHub 官方 action 可用(runner 可访问 github.com 和 npm/pypi registry) 【Release 发布方式】 用 Gitea API 发布,token 用自动注入的 ${{ secrets.GITHUB_TOKEN }}, API 地址用 ${{ gitea.server_url }}/api/v1。参考步骤(shell: pwsh): - name: Create Gitea release with artifact shell: pwsh env: GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | $repo = "${{ github.repository }}" $tag = "v0.1.${{ github.run_number }}" $server = "${{ gitea.server_url }}" $headers = @{ Authorization = "token $env:GITEA_TOKEN" } $body = @{ tag_name = $tag; name = "Build $tag" target_commitish = "${{ github.sha }}" draft = $false; prerelease = $true } | ConvertTo-Json $release = Invoke-RestMethod -Method Post -Uri "$server/api/v1/repos/$repo/releases" ` -Headers $headers -Body $body -ContentType "application/json" Invoke-RestMethod -Method Post ` -Uri "$server/api/v1/repos/$repo/releases/$($release.id)/assets?name=<产物文件名>" ` -Headers $headers -Form @{ attachment = Get-Item "<产物文件路径>" } tag 命名建议带 ${{ github.run_number }} 保证唯一,避免重复 tag 导致发布失败。 也可以直接参考本实例上 antior/Test_runner 仓库的 .gitea/workflows/build.yaml。 【本仓库信息】 - 项目类型:<比如 Node / Python / 纯静态文件> - 构建命令:<比如 npm ci && npm run build,或 py -3.12 -m PyInstaller ...> - 产物位置:<比如 dist/ 目录> 请生成 workflow 并提交 push,然后确认 Actions 运行成功、Release 已创建。 ```