fix(runner): align workflows to non110 labels
This commit is contained in:
@@ -18,7 +18,7 @@ env:
|
||||
|
||||
jobs:
|
||||
market-watch:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -14,7 +14,7 @@ on:
|
||||
|
||||
jobs:
|
||||
ai-technology-watch:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -26,7 +26,7 @@ env:
|
||||
|
||||
jobs:
|
||||
build-and-deploy-dev:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
# 2026-06-28 Codex: Gitea 1.25 may mark a workflow invalid when every
|
||||
# root job has a job-level `if`. Keep one no-op root job without `if` so
|
||||
# cd.yaml stays parseable while deploy jobs remain guarded below.
|
||||
runs-on: awoooi-host
|
||||
runs-on: awoooi-non110-host
|
||||
timeout-minutes: 1
|
||||
steps:
|
||||
- name: Confirm CD Workflow Shape
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
# cancellation. If every job is skipped, Gitea may not create a run and
|
||||
# the stale pre-guard CD queue is not superseded by concurrency.
|
||||
if: ${{ github.event_name == 'push' && contains(github.event.head_commit.message, 'cancel-stale-cd') }}
|
||||
runs-on: awoooi-host
|
||||
runs-on: awoooi-non110-host
|
||||
timeout-minutes: 3
|
||||
steps:
|
||||
- name: Confirm Stale CD Queue Cancellation
|
||||
@@ -86,14 +86,14 @@ jobs:
|
||||
# CI image explicitly. The act-managed job container can disappear mid-test
|
||||
# with Docker RWLayer=nil on the shared 110 daemon.
|
||||
timeout-minutes: 30
|
||||
runs-on: awoooi-host
|
||||
runs-on: awoooi-non110-host
|
||||
# 2026-04-10 ogt: B5 改用 docker run 本地啟動,移除 services: 宣告
|
||||
# Gitea act runner 的 services: container name 為空,導致 CI 失敗
|
||||
steps:
|
||||
- name: Bootstrap Host Runner Tools
|
||||
# 2026-05-05 Codex: awoooi-host maps to the long-lived act-runner
|
||||
# container. After dirty reboots it may not contain node/curl/git, and
|
||||
# actions/checkout@v4 fails before tests can start.
|
||||
# 2026-06-28 Codex: awoooi-non110-host maps to the dedicated
|
||||
# non-110 runner lane. Bootstrap tools defensively because host
|
||||
# runners can start without the CI toolchain preinstalled.
|
||||
run: |
|
||||
if command -v apk >/dev/null 2>&1; then
|
||||
apk add --no-cache nodejs npm git curl bash coreutils python3 openssh-client docker-cli docker-cli-buildx
|
||||
@@ -467,7 +467,7 @@ jobs:
|
||||
# steps were killing the transient act job container with RWLayer=nil.
|
||||
needs: [tests]
|
||||
timeout-minutes: 60
|
||||
runs-on: awoooi-host
|
||||
runs-on: awoooi-non110-host
|
||||
steps:
|
||||
- name: Bootstrap Host Runner Tools
|
||||
# 2026-05-05 Codex: keep the host-mode runner self-healing before
|
||||
@@ -1395,7 +1395,7 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
# 2026-04-30 Codex: keep post-deploy on the host runner too. Playwright
|
||||
# install-deps can also kill the act-managed job container with RWLayer=nil.
|
||||
runs-on: awoooi-host
|
||||
runs-on: awoooi-non110-host
|
||||
steps:
|
||||
- name: Bootstrap Host Runner Tools
|
||||
# 2026-05-05 Codex: post-deploy also uses checkout and curl-based
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
# `[skip ci]`; `cancel-stale-cd` is a controlled no-op trigger. Skip both
|
||||
# at job level to avoid queued runner churn.
|
||||
if: ${{ github.event_name != 'push' || (!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, 'cancel-stale-cd')) }}
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
timeout-minutes: 8
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -18,7 +18,7 @@ env:
|
||||
jobs:
|
||||
deploy-alerts:
|
||||
name: "Deploy Prometheus Alert Rules"
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -23,7 +23,7 @@ env:
|
||||
|
||||
jobs:
|
||||
e2e-health:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ env:
|
||||
|
||||
jobs:
|
||||
migrate:
|
||||
runs-on: awoooi-ubuntu # 或 self-hosted runner on 110
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
@@ -16,7 +16,7 @@ on:
|
||||
|
||||
jobs:
|
||||
check-type-sync:
|
||||
runs-on: awoooi-ubuntu
|
||||
runs-on: awoooi-non110-ubuntu
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
@@ -164,6 +164,16 @@ def build_delivery_closure_workbench(
|
||||
"non110_runner_safe_registration_helper_ready"
|
||||
)
|
||||
is True,
|
||||
"non110_runner_workflow_labels_aligned": production_deploy_readback.get(
|
||||
"non110_runner_workflow_labels_aligned"
|
||||
)
|
||||
is True,
|
||||
"non110_runner_host_label": str(
|
||||
production_deploy_readback.get("non110_runner_host_label") or ""
|
||||
),
|
||||
"non110_runner_ubuntu_label": str(
|
||||
production_deploy_readback.get("non110_runner_ubuntu_label") or ""
|
||||
),
|
||||
"non110_runner_registration_condition_required": production_deploy_readback.get(
|
||||
"non110_runner_registration_condition_required"
|
||||
)
|
||||
@@ -400,6 +410,18 @@ def build_delivery_closure_workbench(
|
||||
)
|
||||
is True
|
||||
),
|
||||
"production_deploy_non110_runner_workflow_labels_aligned": (
|
||||
production_deploy_readback.get(
|
||||
"non110_runner_workflow_labels_aligned"
|
||||
)
|
||||
is True
|
||||
),
|
||||
"production_deploy_non110_runner_host_label": str(
|
||||
production_deploy_readback.get("non110_runner_host_label") or ""
|
||||
),
|
||||
"production_deploy_non110_runner_ubuntu_label": str(
|
||||
production_deploy_readback.get("non110_runner_ubuntu_label") or ""
|
||||
),
|
||||
"production_deploy_non110_runner_registration_condition_required": (
|
||||
production_deploy_readback.get(
|
||||
"non110_runner_registration_condition_required"
|
||||
|
||||
@@ -56,13 +56,25 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
]
|
||||
is True
|
||||
)
|
||||
assert (
|
||||
data["summary"]["production_deploy_non110_runner_workflow_labels_aligned"]
|
||||
is True
|
||||
)
|
||||
assert (
|
||||
data["summary"]["production_deploy_non110_runner_host_label"]
|
||||
== "awoooi-non110-host"
|
||||
)
|
||||
assert (
|
||||
data["summary"]["production_deploy_non110_runner_ubuntu_label"]
|
||||
== "awoooi-non110-ubuntu"
|
||||
)
|
||||
assert (
|
||||
data["summary"][
|
||||
"production_deploy_non110_runner_registration_condition_required"
|
||||
]
|
||||
is True
|
||||
)
|
||||
assert data["summary"]["production_deploy_non110_runner_ready_config_count"] == 2
|
||||
assert data["summary"]["production_deploy_non110_runner_ready_config_count"] == 1
|
||||
assert data["summary"]["production_deploy_non110_runner_ready_service_count"] == 1
|
||||
assert (
|
||||
data["summary"]["production_deploy_non110_runner_ready_registration_count"]
|
||||
@@ -115,7 +127,7 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
assert lanes["production_deploy"]["blocker_count"] == 3
|
||||
assert lanes["production_deploy"]["metric"][
|
||||
"observed_source_control_main_short_sha"
|
||||
] == "c18200c23ca2"
|
||||
] == "666454212ac9"
|
||||
assert lanes["production_deploy"]["metric"][
|
||||
"production_image_tag_short_sha"
|
||||
] == "af45811e87"
|
||||
@@ -152,13 +164,27 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
]
|
||||
is True
|
||||
)
|
||||
assert (
|
||||
lanes["production_deploy"]["metric"][
|
||||
"non110_runner_workflow_labels_aligned"
|
||||
]
|
||||
is True
|
||||
)
|
||||
assert (
|
||||
lanes["production_deploy"]["metric"]["non110_runner_host_label"]
|
||||
== "awoooi-non110-host"
|
||||
)
|
||||
assert (
|
||||
lanes["production_deploy"]["metric"]["non110_runner_ubuntu_label"]
|
||||
== "awoooi-non110-ubuntu"
|
||||
)
|
||||
assert (
|
||||
lanes["production_deploy"]["metric"][
|
||||
"non110_runner_registration_condition_required"
|
||||
]
|
||||
is True
|
||||
)
|
||||
assert lanes["production_deploy"]["metric"]["non110_runner_ready_config_count"] == 2
|
||||
assert lanes["production_deploy"]["metric"]["non110_runner_ready_config_count"] == 1
|
||||
assert lanes["production_deploy"]["metric"]["non110_runner_ready_service_count"] == 1
|
||||
assert (
|
||||
lanes["production_deploy"]["metric"][
|
||||
|
||||
@@ -22,6 +22,19 @@
|
||||
|
||||
**邊界**:只改 committed source / snapshot / API 欄位;未讀 runner token 或 `.runner` 內容;未操作 host / Docker / K8s / runner service;未使用 GitHub。
|
||||
|
||||
## 2026-06-28 — 21:08 Gitea workflow labels 對齊 non-110 runner
|
||||
|
||||
**完成內容**:
|
||||
- `.gitea/workflows` 全部 AWOOI 專用 `runs-on` 從 110 incident labels 對齊到 188 non-110 labels:host job 使用 `awoooi-non110-host`,ubuntu/container job 使用 `awoooi-non110-ubuntu`。
|
||||
- `docs/operations/awoooi-production-deploy-readback-blocker.snapshot.json` 更新 non-110 readiness source:final verifier 為 `READY_CONFIG_COUNT=1`、`READY_BINARY_COUNT=1`、`READY_SERVICE_COUNT=1`、registration / active service 仍為 `0`,並記錄 workflow labels aligned。
|
||||
|
||||
**驗證結果**:
|
||||
- `python3 ops/runner/guard-gitea-runner-pressure.py --root .`:通過。
|
||||
- `python3.11 -m pytest ops/runner/test_guard_gitea_runner_pressure.py -q`:`4 passed`。
|
||||
- Gitea workflow YAML parse:10 個 workflow 通過。
|
||||
|
||||
**邊界**:未讀 runner token、`.runner`、secret、raw session、SQLite、auth 或 `.env`;未啟動 188 runner service;未重開 110 runner;未使用 GitHub;沒有 force push。
|
||||
|
||||
## 2026-06-28 — 20:44 non-110 runner service registration condition verifier
|
||||
|
||||
**完成內容**:
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
"priority": "P0",
|
||||
"scope": "awoooi_production_truth",
|
||||
"readback": {
|
||||
"observed_source_control_main_sha": "c18200c23ca285e1342193601bc0418db7364fda",
|
||||
"observed_source_control_main_short_sha": "c18200c23ca2",
|
||||
"observed_source_control_main_sha": "666454212ac9c3e10c3db927ebcf534f18203864",
|
||||
"observed_source_control_main_short_sha": "666454212ac9",
|
||||
"governance_closure_merge_sha": "27b96f0450d0e3ca6651d6b5f274a341dd727ef2",
|
||||
"governance_closure_commit_sha": "9e3e7fbb6ba3ffd324b45abf3ad1e7b6ec826b22",
|
||||
"production_image_tag_sha": "af45811e876fda322ee63c036fbc39c9f07ffd76",
|
||||
@@ -28,10 +28,13 @@
|
||||
"authorized_dispatch_channel_ready": false,
|
||||
"non110_runner_prepare_only_source_ready": true,
|
||||
"non110_runner_safe_registration_helper_ready": true,
|
||||
"non110_runner_workflow_labels_aligned": true,
|
||||
"non110_runner_host_label": "awoooi-non110-host",
|
||||
"non110_runner_ubuntu_label": "awoooi-non110-ubuntu",
|
||||
"non110_runner_registration_condition_required": true,
|
||||
"non110_runner_ready": false,
|
||||
"non110_runner_ready_config_count": 2,
|
||||
"non110_runner_ready_binary_count": 2,
|
||||
"non110_runner_ready_config_count": 1,
|
||||
"non110_runner_ready_binary_count": 1,
|
||||
"non110_runner_ready_service_count": 1,
|
||||
"non110_runner_ready_registration_count": 0,
|
||||
"non110_runner_ready_active_service_count": 0,
|
||||
|
||||
Reference in New Issue
Block a user