From 1538df5a665f8fbd8ba07d826edfe24baf4f1666 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 10 May 2026 20:52:22 +0100 Subject: [PATCH] ci: mark full release live sweeps advisory --- .../openclaw-live-and-e2e-checks-reusable.yml | 56 ++++++++++++++++++- .../package-acceptance-workflow.test.ts | 9 +++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml index 7174be1891f..82c0182b5bf 100644 --- a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml +++ b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml @@ -1913,6 +1913,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=anthropic OPENCLAW_LIVE_GATEWAY_MODELS=anthropic/claude-opus-4-7,anthropic/claude-opus-4-6 node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-anthropic-sonnet-haiku suite_group: native-live-src-gateway-profiles-anthropic @@ -1920,6 +1921,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=anthropic OPENCLAW_LIVE_GATEWAY_MODELS=anthropic/claude-sonnet-4-6,anthropic/claude-haiku-4-5 node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-google label: Native live gateway profiles Google @@ -1944,12 +1946,14 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=fireworks node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-deepseek label: Native live gateway profiles DeepSeek command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=deepseek node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-opencode-go-deepseek-glm suite_group: native-live-src-gateway-profiles-opencode-go @@ -1957,6 +1961,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=opencode-go OPENCLAW_LIVE_GATEWAY_MODELS=opencode-go/deepseek-v4-flash,opencode-go/deepseek-v4-pro,opencode-go/glm-5,opencode-go/glm-5.1 node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-opencode-go-kimi suite_group: native-live-src-gateway-profiles-opencode-go @@ -1964,6 +1969,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=opencode-go OPENCLAW_LIVE_GATEWAY_MODELS=opencode-go/kimi-k2.5,opencode-go/kimi-k2.6 node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-opencode-go-mimo suite_group: native-live-src-gateway-profiles-opencode-go @@ -1971,6 +1977,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=opencode-go OPENCLAW_LIVE_GATEWAY_MODELS=opencode-go/mimo-v2-omni,opencode-go/mimo-v2-pro,opencode-go/mimo-v2.5,opencode-go/mimo-v2.5-pro node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-opencode-go-minimax-qwen suite_group: native-live-src-gateway-profiles-opencode-go @@ -1978,6 +1985,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=opencode-go OPENCLAW_LIVE_GATEWAY_MODELS=opencode-go/minimax-m2.5,opencode-go/minimax-m2.7,opencode-go/qwen3.5-plus,opencode-go/qwen3.6-plus node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-opencode-go-smoke label: Native live gateway profiles OpenCode Go smoke @@ -1990,18 +1998,21 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=openrouter node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-xai label: Native live gateway profiles xAI command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=xai node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-profiles-zai label: Native live gateway profiles Z.ai command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=zai node .release-harness/scripts/test-live-shard.mjs native-live-src-gateway-profiles timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-src-gateway-backends label: Native live gateway backends @@ -2026,6 +2037,7 @@ jobs: command: node .release-harness/scripts/test-live-shard.mjs native-live-extensions-l-n timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-moonshot label: Native live Moonshot plugin @@ -2045,12 +2057,14 @@ jobs: command: node .release-harness/scripts/test-live-shard.mjs native-live-extensions-o-z-other timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-xai label: Native live xAI plugin command: node .release-harness/scripts/test-live-shard.mjs native-live-extensions-xai timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} @@ -2241,6 +2255,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=deepseek,fireworks OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh timeout_minutes: 30 profile_env_only: false + advisory: true profiles: full - suite_id: live-gateway-advisory-docker-opencode-openrouter suite_group: live-gateway-advisory-docker @@ -2248,6 +2263,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=opencode-go,openrouter OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh timeout_minutes: 30 profile_env_only: false + advisory: true profiles: full - suite_id: live-gateway-advisory-docker-xai-zai suite_group: live-gateway-advisory-docker @@ -2255,6 +2271,7 @@ jobs: command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=xai,zai OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh timeout_minutes: 30 profile_env_only: false + advisory: true profiles: full - suite_id: live-cli-backend-docker label: Docker live CLI backend @@ -2399,7 +2416,20 @@ jobs: if: contains(matrix.profiles, inputs.release_test_profile) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id || (inputs.live_suite_filter == 'live-gateway-advisory-docker' && startsWith(matrix.suite_id, 'live-gateway-advisory-docker-'))) env: OPENCLAW_LIVE_COMMAND: ${{ matrix.command }} - run: bash .release-harness/scripts/ci-live-command-retry.sh + OPENCLAW_LIVE_SUITE_ADVISORY: ${{ matrix.advisory }} + run: | + set +e + bash .release-harness/scripts/ci-live-command-retry.sh + status=$? + set -e + if [[ "$status" -eq 0 ]]; then + exit 0 + fi + if [[ "${OPENCLAW_LIVE_SUITE_ADVISORY:-}" == "true" ]]; then + echo "::warning::Advisory live suite failed with exit code ${status}: ${{ matrix.suite_id }}" + exit 0 + fi + exit "$status" validate_live_media_provider_suites: name: Live media suites (${{ matrix.label }}) @@ -2421,24 +2451,28 @@ jobs: command: node .release-harness/scripts/test-live-shard.mjs native-live-extensions-a-k timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-audio label: Native live media audio plugins command: node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-audio timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-music-google label: Native live media music Google command: OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS=google node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-music-google timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-music-minimax label: Native live media music MiniMax command: OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS=minimax node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-music-minimax timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-video-a suite_group: native-live-extensions-media-video @@ -2446,6 +2480,7 @@ jobs: command: OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS=alibaba,byteplus,deepinfra,fal node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-video timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-video-b suite_group: native-live-extensions-media-video @@ -2453,6 +2488,7 @@ jobs: command: OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS=google,minimax node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-video timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-video-c suite_group: native-live-extensions-media-video @@ -2460,6 +2496,7 @@ jobs: command: OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS=openai,openrouter,xai node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-video timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full - suite_id: native-live-extensions-media-video-d suite_group: native-live-extensions-media-video @@ -2467,6 +2504,7 @@ jobs: command: OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS=qwen,runway,together,vydra node .release-harness/scripts/test-live-shard.mjs native-live-extensions-media-video timeout_minutes: 60 profile_env_only: false + advisory: true profiles: full env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} @@ -2564,4 +2602,18 @@ jobs: - name: Run ${{ matrix.label }} if: contains(matrix.profiles, inputs.release_test_profile) && (inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id || (inputs.live_suite_filter == 'native-live-extensions-media-video' && startsWith(matrix.suite_id, 'native-live-extensions-media-video-'))) - run: ${{ matrix.command }} + env: + OPENCLAW_LIVE_SUITE_ADVISORY: ${{ matrix.advisory }} + run: | + set +e + ${{ matrix.command }} + status=$? + set -e + if [[ "$status" -eq 0 ]]; then + exit 0 + fi + if [[ "${OPENCLAW_LIVE_SUITE_ADVISORY:-}" == "true" ]]; then + echo "::warning::Advisory live suite failed with exit code ${status}: ${{ matrix.suite_id }}" + exit 0 + fi + exit "$status" diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index ea45ad39785..3f469f1db7c 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -401,6 +401,9 @@ describe("package artifact reuse", () => { expect(workflow).toContain("suite_group: native-live-src-gateway-profiles-anthropic"); expect(workflow).toContain("anthropic/claude-opus-4-7,anthropic/claude-opus-4-6"); expect(workflow).toContain("anthropic/claude-sonnet-4-6,anthropic/claude-haiku-4-5"); + expect(workflow).toMatch( + /suite_id: native-live-src-gateway-profiles-fireworks[\s\S]*?advisory: true/u, + ); expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-deepseek"); expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-opencode-go"); expect(workflow).toContain("suite_id: native-live-src-gateway-profiles-openrouter"); @@ -418,6 +421,12 @@ describe("package artifact reuse", () => { expect(workflow).toMatch(/suite_id: native-live-extensions-moonshot[\s\S]*?advisory: true/u); expect(workflow).toContain("OPENCLAW_LIVE_SUITE_ADVISORY: ${{ matrix.advisory }}"); expect(workflow).toContain("Advisory live suite failed with exit code"); + expect(workflow).toMatch( + /suite_id: live-gateway-advisory-docker-deepseek-fireworks[\s\S]*?advisory: true/u, + ); + expect(workflow).toMatch( + /validate_live_media_provider_suites:[\s\S]*?OPENCLAW_LIVE_SUITE_ADVISORY: \$\{\{ matrix\.advisory \}\}/u, + ); expect(workflow).toContain("suite_id: native-live-extensions-openai"); expect(workflow).toContain("suite_id: native-live-extensions-o-z-other"); expect(workflow).toContain("validate_live_media_provider_suites:");