merge: fix/gitea-nightly-host-tools
CI / go-vet-and-short-test (push) Failing after 0s
CI / backup-restore-drill (push) Failing after 1s
CI / web (push) Failing after 0s

This commit is contained in:
weichen
2026-09-16 15:12:22 +00:00
4 changed files with 51 additions and 17 deletions
+2 -1
View File
@@ -7,12 +7,13 @@
1. **Phase 3 done**:N7 重试策略 + Playwright gated + 遗留 handoff 已合入
2. **Wave 1 done**:PU5A race + PU3 IAM fail-closed 已合入 `dev`
3. **运维**:Gitea nightly secrets/vars + `nightly:host` 已配;获批后再开 PU6–PU8/Playwright 实现
3. **运维**:Gitea nightly `nightly:host` + host network + brew PATH 已配;workflow artifact 改为 tar(已合入)
## 并行认领
| owner | task | branch | worktree | mutex | status |
|-------|------|--------|----------|-------|--------|
| Cursor | 2026-09-16-gitea-nightly-host-tools | fix/gitea-nightly-host-tools | - | ci | done |
| Cursor | 2026-09-16-wave-leftovers | fix/wave-leftovers-n7-playwright-dod | - | ci | done |
| Cursor | 2026-09-16-wave3-pu6-pu8-go-no-go | feature/wave3-pu6-pu8-go-no-go | - | architecture-docs | done |
| Cursor | 2026-09-16-wave2c-same-image-digest | feature/wave2c-same-image-digest | - | infra | done |
@@ -20,14 +20,19 @@ blocker: false
- `PI_AGENT_RUNNER_URL=http://127.0.0.1:18865`
- `PI_AGENT_MODEL` ← `.env.dev` MINIMAX_MODEL_ID
## Runner
## Runner(本机 `/home/weichen/gitea`)
- `/home/weichen/gitea/docker-compose.yml` 增加 label `nightly:host`
- 已写入 `/home/weichen/gitea/runner/data/.runner` 的 `labels`(仅改 compose 不够,注册文件会覆盖)
- runner 已 declare:`[ubuntu-latest docker nightly]`
- workflow `nightly-real-pi.yml` → `runs-on: nightly`(host 网络,可访问本机 PI/PG)
- 已 `workflow_dispatch` 触发 run(见 Gitea Actions)
- label:`nightly:host`(写入 `runner/data/.runner`,勿只改 compose)
- `network_mode: host` + `address=http://127.0.0.1:3000`(PI 只绑 `127.0.0.1:18865`,bridge 不可达)
- 挂载 brew + 宿主机 glibc,供 host job 使用 `node` / `go` / `curl`
- workflow:`runs-on: nightly`;artifact 用本地 tar(Gitea 不支持 upload-artifact@v4)
## 验证
- run#15:缺 node → FAIL
- run#17:checkout/setup-go PASS;curl 缺失 → `infra_fail`;upload-artifact@v4 → GHESNotSupported
- 修复后应重新 `workflow_dispatch`
## 触发
Gitea Actions → Nightly Real PI → Run workflow;或等 schedule UTC 16:00。
Gitea Actions → Nightly Real PI → Run workflow;或 schedule UTC 16:00。
@@ -0,0 +1,20 @@
---
title: "Gitea nightly host tools / network"
created: 2026-09-16
owner: Cursor
branch: fix/gitea-nightly-host-tools
mutex: ci
status: done
---
# Gitea nightly host tools / network
## Goal
Make local Gitea `nightly:host` jobs able to run `actions/*` (node), health-check PI (`curl` → `127.0.0.1:18865`), and archive receipts without `upload-artifact@v4`.
## Done when
- [x] Runner host network + brew PATH (node/go/curl) + glibc mounts
- [x] Workflow: replace upload-artifact@v4 with tar archive
- [x] Nightly dispatch past infra curl; receipt not infra_fail due to missing tools
+17 -9
View File
@@ -49,16 +49,24 @@ jobs:
# Always upload receipts/evidence; never treat missing secret as PASS.
exit "${rc}"
- name: Upload promotion receipt artifacts
# Gitea act_runner rejects upload-artifact@v4 (GHESNotSupportedError).
# Keep a portable tarball in the job log workspace for local runner hosts.
- name: Archive promotion receipt artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: promotion-receipt-${{ github.sha }}
path: |
.doc/test-reports/assets/promotion-receipts/${{ github.sha }}.json
.doc/test-reports/assets/promotion-receipts/evidence-*
if-no-files-found: warn
retention-days: 14
run: |
set -euo pipefail
out="promotion-receipt-${GITHUB_SHA}.tar.gz"
mkdir -p .doc/test-reports/assets/promotion-receipts
if compgen -G ".doc/test-reports/assets/promotion-receipts/${GITHUB_SHA}.json" >/dev/null \
|| compgen -G ".doc/test-reports/assets/promotion-receipts/evidence-*" >/dev/null; then
tar -czf "${out}" \
.doc/test-reports/assets/promotion-receipts/"${GITHUB_SHA}".json \
.doc/test-reports/assets/promotion-receipts/evidence-* \
2>/dev/null || tar -czf "${out}" .doc/test-reports/assets/promotion-receipts
ls -la "${out}"
else
echo "warn: no promotion receipt files to archive"
fi
- name: Summarize receipt verdict
if: always()