






















@@ -248,7 +248,7 @@ jobs:
248248 else
249249 echo "- Package Acceptance package spec: prepared release artifact"
250250 fi
251- echo "- This run will execute cross-OS release validation, install smoke, QA Lab parity, Matrix, and Telegram lanes, and the non-Parallels Docker/live/openwebui coverage from the CI migration plan."
251+ echo "- This run will execute cross-OS release validation, install smoke, QA Lab parity, Matrix, Telegram, and Slack lanes, and the non-Parallels Docker/live/openwebui coverage from the CI migration plan."
252252 } >> "$GITHUB_STEP_SUMMARY"
253253254254 prepare_release_package:
@@ -822,6 +822,99 @@ jobs:
822822retention-days: 14
823823if-no-files-found: warn
824824825+qa_live_slack_release_checks:
826+name: Run QA Lab live Slack lane
827+needs: [resolve_target]
828+if: contains(fromJSON('["all","qa","qa-live"]'), needs.resolve_target.outputs.rerun_group)
829+runs-on: blacksmith-8vcpu-ubuntu-2404
830+timeout-minutes: 60
831+permissions:
832+contents: read
833+pull-requests: read
834+environment: qa-live-shared
835+env:
836+OPENCLAW_BUILD_PRIVATE_QA: "1"
837+OPENCLAW_ENABLE_PRIVATE_QA_CLI: "1"
838+steps:
839+ - name: Checkout selected ref
840+uses: actions/checkout@v6
841+with:
842+persist-credentials: false
843+ref: ${{ needs.resolve_target.outputs.revision }}
844+fetch-depth: 1
845+846+ - name: Setup Node environment
847+uses: ./.github/actions/setup-node-env
848+with:
849+node-version: ${{ env.NODE_VERSION }}
850+pnpm-version: ${{ env.PNPM_VERSION }}
851+install-bun: "true"
852+853+ - name: Validate required QA credential env
854+env:
855+OPENCLAW_QA_CONVEX_SITE_URL: ${{ secrets.OPENCLAW_QA_CONVEX_SITE_URL }}
856+OPENCLAW_QA_CONVEX_SECRET_CI: ${{ secrets.OPENCLAW_QA_CONVEX_SECRET_CI }}
857+shell: bash
858+run: |
859+ set -euo pipefail
860+861+ require_var() {
862+ local key="$1"
863+ if [[ -z "${!key:-}" ]]; then
864+ echo "Missing required ${key}." >&2
865+ exit 1
866+ fi
867+ }
868+869+ require_var OPENCLAW_QA_CONVEX_SITE_URL
870+ require_var OPENCLAW_QA_CONVEX_SECRET_CI
871+872+ - name: Build private QA runtime
873+run: pnpm build
874+875+ - name: Run Slack live lane
876+id: run_lane
877+shell: bash
878+env:
879+OPENCLAW_QA_CONVEX_SITE_URL: ${{ secrets.OPENCLAW_QA_CONVEX_SITE_URL }}
880+OPENCLAW_QA_CONVEX_SECRET_CI: ${{ secrets.OPENCLAW_QA_CONVEX_SECRET_CI }}
881+OPENCLAW_QA_REDACT_PUBLIC_METADATA: "1"
882+OPENCLAW_QA_SLACK_CAPTURE_CONTENT: "1"
883+run: |
884+ set -euo pipefail
885+886+ output_dir=".artifacts/qa-e2e/slack-live-release-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
887+ echo "output_dir=${output_dir}" >> "$GITHUB_OUTPUT"
888+889+ for attempt in 1 2; do
890+ attempt_output_dir="${output_dir}/attempt-${attempt}"
891+ if pnpm openclaw qa slack \
892+ --repo-root . \
893+ --output-dir "${attempt_output_dir}" \
894+ --provider-mode mock-openai \
895+ --model mock-openai/gpt-5.5 \
896+ --alt-model mock-openai/gpt-5.5-alt \
897+ --fast \
898+ --credential-source convex \
899+ --credential-role ci; then
900+ exit 0
901+ fi
902+ if [[ "${attempt}" == "2" ]]; then
903+ exit 1
904+ fi
905+ echo "Slack live lane failed on attempt ${attempt}; retrying once..." >&2
906+ sleep 10
907+ done
908+909+ - name: Upload Slack QA artifacts
910+if: always()
911+uses: actions/upload-artifact@v4
912+with:
913+name: release-qa-live-slack-${{ needs.resolve_target.outputs.revision }}
914+path: .artifacts/qa-e2e/
915+retention-days: 14
916+if-no-files-found: warn
917+825918summary:
826919name: Verify release checks
827920needs:
@@ -835,6 +928,7 @@ jobs:
835928 - qa_lab_parity_report_release_checks
836929 - qa_live_matrix_release_checks
837930 - qa_live_telegram_release_checks
931+ - qa_live_slack_release_checks
838932if: always()
839933runs-on: ubuntu-24.04
840934permissions: {}
@@ -855,7 +949,8 @@ jobs:
855949 "qa_lab_parity_lane_release_checks=${{ needs.qa_lab_parity_lane_release_checks.result }}" \
856950 "qa_lab_parity_report_release_checks=${{ needs.qa_lab_parity_report_release_checks.result }}" \
857951 "qa_live_matrix_release_checks=${{ needs.qa_live_matrix_release_checks.result }}" \
858- "qa_live_telegram_release_checks=${{ needs.qa_live_telegram_release_checks.result }}"
952+ "qa_live_telegram_release_checks=${{ needs.qa_live_telegram_release_checks.result }}" \
953+ "qa_live_slack_release_checks=${{ needs.qa_live_slack_release_checks.result }}"
859954 do
860955 name="${item%%=*}"
861956 result="${item#*=}"
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。