























@@ -28,6 +28,11 @@ on:
2828required: false
2929default: ""
3030type: string
31+package_artifact_name:
32+description: Existing workflow artifact containing openclaw-current.tgz; blank packs the selected ref
33+required: false
34+default: ""
35+type: string
3136include_live_suites:
3237description: Whether to run live-provider coverage
3338required: false
@@ -69,6 +74,11 @@ on:
6974required: false
7075default: ""
7176type: string
77+package_artifact_name:
78+description: Existing workflow artifact containing openclaw-current.tgz; blank packs the selected ref
79+required: false
80+default: ""
81+type: string
7282include_live_suites:
7383description: Whether to run live-provider coverage
7484required: false
@@ -477,6 +487,7 @@ jobs:
477487mode: chunk
478488chunk: ${{ matrix.chunk_id }}
479489include-openwebui: ${{ inputs.include_openwebui }}
490+package-artifact-name: ${{ inputs.package_artifact_name || 'docker-e2e-package' }}
480491481492 - name: Run Docker E2E chunk
482493shell: bash
@@ -603,6 +614,7 @@ jobs:
603614mode: targeted
604615lanes: ${{ inputs.docker_lanes }}
605616include-openwebui: ${{ inputs.include_openwebui }}
617+package-artifact-name: ${{ inputs.package_artifact_name || 'docker-e2e-package' }}
606618607619 - name: Run targeted Docker E2E lanes
608620shell: bash
@@ -713,23 +725,6 @@ jobs:
713725ref: ${{ needs.validate_selected_ref.outputs.selected_sha }}
714726fetch-depth: 1
715727716- - name: Resolve shared Docker E2E image tags
717-id: image
718-shell: bash
719-env:
720-SELECTED_SHA: ${{ needs.validate_selected_ref.outputs.selected_sha }}
721-run: |
722- set -euo pipefail
723- repository="${GITHUB_REPOSITORY,,}"
724- bare_image="ghcr.io/${repository}-docker-e2e-bare:${SELECTED_SHA}"
725- functional_image="ghcr.io/${repository}-docker-e2e-functional:${SELECTED_SHA}"
726- image="$functional_image"
727- echo "image=$image" >> "$GITHUB_OUTPUT"
728- echo "bare_image=$bare_image" >> "$GITHUB_OUTPUT"
729- echo "functional_image=$functional_image" >> "$GITHUB_OUTPUT"
730- echo "Shared Docker E2E bare image: \`$bare_image\`" >> "$GITHUB_STEP_SUMMARY"
731- echo "Shared Docker E2E functional image: \`$functional_image\`" >> "$GITHUB_STEP_SUMMARY"
732-733728 - name: Plan Docker E2E images
734729id: plan
735730uses: ./.github/actions/docker-e2e-plan
@@ -741,15 +736,22 @@ jobs:
741736hydrate-artifacts: "false"
742737743738 - name: Setup Node environment
744-if: steps.plan.outputs.needs_package == '1'
739+if: steps.plan.outputs.needs_package == '1' && inputs.package_artifact_name == ''
745740uses: ./.github/actions/setup-node-env
746741with:
747742node-version: ${{ env.NODE_VERSION }}
748743pnpm-version: ${{ env.PNPM_VERSION }}
749744install-bun: "true"
750745746+ - name: Download provided OpenClaw Docker E2E package
747+if: steps.plan.outputs.needs_package == '1' && inputs.package_artifact_name != ''
748+uses: actions/download-artifact@v8
749+with:
750+name: ${{ inputs.package_artifact_name }}
751+path: .artifacts/docker-e2e-package
752+751753 - name: Pack OpenClaw package for Docker E2E
752-if: steps.plan.outputs.needs_package == '1'
754+if: steps.plan.outputs.needs_package == '1' && inputs.package_artifact_name == ''
753755shell: bash
754756run: |
755757 set -euo pipefail
@@ -758,14 +760,60 @@ jobs:
758760 --output-dir .artifacts/docker-e2e-package \
759761 --output-name openclaw-current.tgz
760762761- - name: Upload OpenClaw Docker E2E package
763+ - name: Validate OpenClaw Docker E2E package
764+id: package
762765if: steps.plan.outputs.needs_package == '1'
766+shell: bash
767+run: |
768+ set -euo pipefail
769+ mkdir -p .artifacts/docker-e2e-package
770+ target=".artifacts/docker-e2e-package/openclaw-current.tgz"
771+ if [[ ! -f "$target" ]]; then
772+ mapfile -t tgzs < <(find .artifacts/docker-e2e-package -type f -name '*.tgz' | sort)
773+ if [[ "${#tgzs[@]}" -ne 1 ]]; then
774+ echo "Expected exactly one package tarball in .artifacts/docker-e2e-package; found ${#tgzs[@]}." >&2
775+ printf '%s\n' "${tgzs[@]}" >&2
776+ exit 1
777+ fi
778+ cp "${tgzs[0]}" "$target"
779+ fi
780+ node scripts/check-openclaw-package-tarball.mjs "$target"
781+ digest="$(sha256sum "$target" | awk '{print $1}')"
782+ tag="pkg-${digest:0:32}"
783+ echo "sha256=$digest" >> "$GITHUB_OUTPUT"
784+ echo "tag=$tag" >> "$GITHUB_OUTPUT"
785+ {
786+ echo "Docker E2E package: \`$target\`"
787+ echo "Docker E2E package SHA-256: \`$digest\`"
788+ } >> "$GITHUB_STEP_SUMMARY"
789+790+ - name: Upload OpenClaw Docker E2E package
791+if: steps.plan.outputs.needs_package == '1' && inputs.package_artifact_name == ''
763792uses: actions/upload-artifact@v7
764793with:
765794name: docker-e2e-package
766795path: .artifacts/docker-e2e-package/openclaw-current.tgz
767796if-no-files-found: error
768797798+ - name: Resolve shared Docker E2E image tags
799+id: image
800+shell: bash
801+env:
802+PACKAGE_TAG: ${{ steps.package.outputs.tag }}
803+SELECTED_SHA: ${{ needs.validate_selected_ref.outputs.selected_sha }}
804+run: |
805+ set -euo pipefail
806+ repository="${GITHUB_REPOSITORY,,}"
807+ image_tag="${PACKAGE_TAG:-$SELECTED_SHA}"
808+ bare_image="ghcr.io/${repository}-docker-e2e-bare:${image_tag}"
809+ functional_image="ghcr.io/${repository}-docker-e2e-functional:${image_tag}"
810+ image="$functional_image"
811+ echo "image=$image" >> "$GITHUB_OUTPUT"
812+ echo "bare_image=$bare_image" >> "$GITHUB_OUTPUT"
813+ echo "functional_image=$functional_image" >> "$GITHUB_OUTPUT"
814+ echo "Shared Docker E2E bare image: \`$bare_image\`" >> "$GITHUB_STEP_SUMMARY"
815+ echo "Shared Docker E2E functional image: \`$functional_image\`" >> "$GITHUB_STEP_SUMMARY"
816+769817 - name: Log in to GHCR
770818if: steps.plan.outputs.needs_e2e_image == '1'
771819uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。