From b2bcea3cd83ed27e166e82610ec455c200a26863 Mon Sep 17 00:00:00 2001 From: weichen Date: Wed, 16 Sep 2026 15:12:03 +0000 Subject: [PATCH] ci(nightly): archive receipts without upload-artifact@v4 Gitea act_runner rejects artifact v4; host runner now has curl/node via brew+host net. Co-authored-by: Cursor --- .doc/ops/CURRENT.md | 3 ++- ...-09-16-gitea-nightly-secrets-configured.md | 19 +++++++++----- .../2026-09-16-gitea-nightly-host-tools.md | 20 ++++++++++++++ .github/workflows/nightly-real-pi.yml | 26 ++++++++++++------- 4 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 .doc/ops/short-term/2026-09-16-gitea-nightly-host-tools.md diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 38022c53..79ca4503 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -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 | in_progress | | 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 | diff --git a/.doc/ops/handoffs/2026-09-16-gitea-nightly-secrets-configured.md b/.doc/ops/handoffs/2026-09-16-gitea-nightly-secrets-configured.md index 75821052..54637efc 100644 --- a/.doc/ops/handoffs/2026-09-16-gitea-nightly-secrets-configured.md +++ b/.doc/ops/handoffs/2026-09-16-gitea-nightly-secrets-configured.md @@ -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。 diff --git a/.doc/ops/short-term/2026-09-16-gitea-nightly-host-tools.md b/.doc/ops/short-term/2026-09-16-gitea-nightly-host-tools.md new file mode 100644 index 00000000..4a849dc7 --- /dev/null +++ b/.doc/ops/short-term/2026-09-16-gitea-nightly-host-tools.md @@ -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: in_progress +--- + +# 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 +- [ ] Nightly dispatch past infra curl; receipt not infra_fail due to missing tools diff --git a/.github/workflows/nightly-real-pi.yml b/.github/workflows/nightly-real-pi.yml index 560722a6..fb01e122 100644 --- a/.github/workflows/nightly-real-pi.yml +++ b/.github/workflows/nightly-real-pi.yml @@ -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()