
























@@ -4,10 +4,20 @@ on:
44workflow_dispatch:
55inputs:
66package_spec:
7-description: Published OpenClaw package spec to test
7+description: Published OpenClaw package spec to test when no artifact is supplied
88required: true
99default: openclaw@beta
1010type: string
11+package_label:
12+description: Optional display label for an artifact-backed package candidate
13+required: false
14+default: ""
15+type: string
16+package_artifact_name:
17+description: Advanced package-under-test artifact name; leave blank for registry install
18+required: false
19+default: ""
20+type: string
1121provider_mode:
1222description: QA provider mode
1323required: true
@@ -23,9 +33,19 @@ on:
2333workflow_call:
2434inputs:
2535package_spec:
26-description: Published OpenClaw package spec to test
36+description: Published OpenClaw package spec to test when no artifact is supplied
2737required: true
2838type: string
39+package_artifact_name:
40+description: Optional package-under-test artifact from the current workflow run
41+required: false
42+default: ""
43+type: string
44+package_label:
45+description: Optional display label for an artifact-backed package candidate
46+required: false
47+default: ""
48+type: string
2949provider_mode:
3050description: QA provider mode
3151required: false
@@ -58,7 +78,7 @@ env:
58785979jobs:
6080run_npm_telegram_beta_e2e:
61-name: Run published npm Telegram E2E
81+name: Run package Telegram E2E
6282runs-on: blacksmith-32vcpu-ubuntu-2404
6383timeout-minutes: 60
6484environment: qa-live-shared
@@ -101,6 +121,7 @@ jobs:
101121 - name: Validate inputs and secrets
102122env:
103123PACKAGE_SPEC: ${{ inputs.package_spec }}
124+PACKAGE_ARTIFACT_NAME: ${{ inputs.package_artifact_name || '' }}
104125PROVIDER_MODE: ${{ inputs.provider_mode }}
105126OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
106127OPENCLAW_QA_CONVEX_SITE_URL: ${{ secrets.OPENCLAW_QA_CONVEX_SITE_URL }}
@@ -109,9 +130,11 @@ jobs:
109130run: |
110131 set -euo pipefail
111132112- if [[ ! "${PACKAGE_SPEC}" =~ ^openclaw@(beta|latest|[0-9]{4}\.[1-9][0-9]*\.[1-9][0-9]*(-[1-9][0-9]*|-beta\.[1-9][0-9]*)?)$ ]]; then
113- echo "package_spec must be openclaw@beta, openclaw@latest, or an exact OpenClaw release version; got: ${PACKAGE_SPEC}" >&2
114- exit 1
133+ if [[ -z "${PACKAGE_ARTIFACT_NAME// }" ]]; then
134+ if [[ ! "${PACKAGE_SPEC}" =~ ^openclaw@(beta|latest|[0-9]{4}\.[1-9][0-9]*\.[1-9][0-9]*(-[1-9][0-9]*|-beta\.[1-9][0-9]*)?)$ ]]; then
135+ echo "package_spec must be openclaw@beta, openclaw@latest, or an exact OpenClaw release version; got: ${PACKAGE_SPEC}" >&2
136+ exit 1
137+ fi
115138 fi
116139 case "${PROVIDER_MODE}" in
117140 mock-openai | live-frontier) ;;
@@ -135,14 +158,22 @@ jobs:
135158 require_var OPENAI_API_KEY
136159 fi
137160138- - name: Run npm Telegram beta E2E
161+ - name: Download package-under-test artifact
162+if: inputs.package_artifact_name != ''
163+uses: actions/download-artifact@v8
164+with:
165+name: ${{ inputs.package_artifact_name }}
166+path: .artifacts/telegram-package-under-test
167+168+ - name: Run package Telegram E2E
139169id: run_lane
140170shell: bash
141171env:
142172OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
143173OPENCLAW_SKIP_DOCKER_BUILD: "1"
144174OPENCLAW_DOCKER_E2E_IMAGE: openclaw-docker-e2e:local
145175OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC: ${{ inputs.package_spec }}
176+OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL: ${{ inputs.package_label }}
146177OPENCLAW_NPM_TELEGRAM_PROVIDER_MODE: ${{ inputs.provider_mode }}
147178OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE: convex
148179OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE: ci
@@ -151,13 +182,28 @@ jobs:
151182OPENCLAW_QA_REDACT_PUBLIC_METADATA: "1"
152183OPENCLAW_QA_TELEGRAM_CAPTURE_CONTENT: "1"
153184INPUT_SCENARIO: ${{ inputs.scenario }}
185+PACKAGE_ARTIFACT_NAME: ${{ inputs.package_artifact_name || '' }}
154186run: |
155187 set -euo pipefail
156188157189 output_dir=".artifacts/qa-e2e/npm-telegram-beta-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
158190 echo "output_dir=${output_dir}" >> "$GITHUB_OUTPUT"
159191 export OPENCLAW_NPM_TELEGRAM_OUTPUT_DIR="${output_dir}"
160192193+ if [[ -n "${PACKAGE_ARTIFACT_NAME// }" ]]; then
194+ mapfile -t package_tgzs < <(find .artifacts/telegram-package-under-test -type f -name "*.tgz" | sort)
195+ if [[ "${#package_tgzs[@]}" -ne 1 ]]; then
196+ echo "package artifact ${PACKAGE_ARTIFACT_NAME} must contain exactly one .tgz; found ${#package_tgzs[@]}" >&2
197+ exit 1
198+ fi
199+ export OPENCLAW_NPM_TELEGRAM_PACKAGE_TGZ="${package_tgzs[0]}"
200+ if [[ -z "${OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL// }" ]]; then
201+ export OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL="$(basename "${package_tgzs[0]}")"
202+ fi
203+ elif [[ -z "${OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL// }" ]]; then
204+ export OPENCLAW_NPM_TELEGRAM_PACKAGE_LABEL="${OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC}"
205+ fi
206+161207 if [[ -n "${INPUT_SCENARIO// }" ]]; then
162208 export OPENCLAW_NPM_TELEGRAM_SCENARIOS="${INPUT_SCENARIO}"
163209 fi
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。