mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
fix(release): restore direct package Telegram acceptance (#129912)
* fix(release): provision package acceptance plugin registry * fix(release): accept registry tuple in package dispatch * fix(release): default Docker advisory input * fix(release): bind artifact registry to package source * fix(release): preserve package advisory dispatch * fix(ci): bound hosted release gate checks Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> * test(ci): update release-gate manifest fixture * fix(ci): avoid duplicate release gate lint * test(release): restore Docker helper fixture path --------- Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
This commit is contained in:
+40
-12
@@ -545,12 +545,13 @@ jobs:
|
||||
OPENCLAW_CI_CHANGED_PATHS_JSON: ${{ steps.changed_scope.outputs.changed_paths_json || 'null' }}
|
||||
OPENCLAW_CI_CHECKOUT_REVISION: ${{ steps.checkout_ref.outputs.sha }}
|
||||
OPENCLAW_CI_HISTORICAL_TARGET: ${{ steps.historical_target.outputs.eligible || 'false' }}
|
||||
OPENCLAW_CI_RELEASE_GATE: ${{ inputs.release_gate && 'true' || 'false' }}
|
||||
OPENCLAW_CI_RELEASE_CANDIDATE_TARGET: ${{ steps.release_candidate_target.outputs.eligible || 'false' }}
|
||||
OPENCLAW_CI_TARGET_CONTEXT_TARGET: ${{ steps.target_context_target.outputs.eligible || 'false' }}
|
||||
OPENCLAW_CI_WORKFLOW_REVISION: ${{ github.sha }}
|
||||
OPENCLAW_CI_REPOSITORY: ${{ github.repository }}
|
||||
OPENCLAW_CI_EVENT_NAME: ${{ github.event_name }}
|
||||
OPENCLAW_CI_RUNNER_BACKEND: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND }}
|
||||
OPENCLAW_CI_RUNNER_BACKEND: ${{ (github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) && 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND }}
|
||||
run: |
|
||||
manifest_node_args=()
|
||||
if [ "${GITHUB_EVENT_NAME:-}" = "workflow_dispatch" ]; then
|
||||
@@ -668,6 +669,7 @@ jobs:
|
||||
})();
|
||||
const docsOnly = parseBoolean(process.env.OPENCLAW_CI_DOCS_ONLY);
|
||||
const docsChanged = parseBoolean(process.env.OPENCLAW_CI_DOCS_CHANGED);
|
||||
const releaseGate = parseBoolean(process.env.OPENCLAW_CI_RELEASE_GATE);
|
||||
const runNode = parseBoolean(process.env.OPENCLAW_CI_RUN_NODE) && !docsOnly;
|
||||
const runNodeFastOnly =
|
||||
runNode && parseBoolean(process.env.OPENCLAW_CI_RUN_NODE_FAST_ONLY);
|
||||
@@ -755,6 +757,24 @@ jobs:
|
||||
});
|
||||
}
|
||||
}
|
||||
if (releaseGate) {
|
||||
checksFastCoreTasks.push(
|
||||
...Array.from({ length: 5 }, (_, index) => {
|
||||
const stripe = index + 1;
|
||||
return {
|
||||
check_name: `checks-fast-release-lint-core-${stripe}`,
|
||||
runtime: "node",
|
||||
stripe,
|
||||
task: `release-lint-core-${stripe}`,
|
||||
};
|
||||
}),
|
||||
{
|
||||
check_name: "checks-fast-release-lint-extensions",
|
||||
runtime: "node",
|
||||
task: "release-lint-extensions",
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
const compactPullRequest = isCanonicalRepository && eventName === "pull_request";
|
||||
const dockerSeedLanes =
|
||||
@@ -1930,11 +1950,11 @@ jobs:
|
||||
max-parallel: 12
|
||||
matrix: ${{ fromJson(needs.preflight.outputs.checks_fast_core_matrix) }}
|
||||
env:
|
||||
CHECKOUT_BASE_SHA: ${{ matrix.task == 'baseline-ratchets' && needs.preflight.outputs.diff_base_revision || '' }}
|
||||
CHECKOUT_BASE_SHA: ${{ (matrix.task == 'baseline-ratchets' || startsWith(matrix.task, 'release-lint-')) && needs.preflight.outputs.diff_base_revision || '' }}
|
||||
steps:
|
||||
- *linux_node_checkout_step
|
||||
- name: Prepare release-gate ratchet merge tree
|
||||
if: matrix.task == 'baseline-ratchets' && github.event_name == 'workflow_dispatch' && inputs.release_gate
|
||||
if: (matrix.task == 'baseline-ratchets' || startsWith(matrix.task, 'release-lint-')) && github.event_name == 'workflow_dispatch' && inputs.release_gate
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
PULL_REQUEST_NUMBER: ${{ inputs.pull_request_number }}
|
||||
@@ -1976,7 +1996,6 @@ jobs:
|
||||
fi
|
||||
git checkout --detach "$merge_sha"
|
||||
echo "RATCHET_BASE_REF=${frozen_base_sha}" >> "$GITHUB_ENV"
|
||||
echo "RATCHET_RELEASE_MERGE_TREE=true" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Setup Node environment
|
||||
uses: ./.ci-harness/.github/actions/setup-node-env
|
||||
@@ -2046,9 +2065,14 @@ jobs:
|
||||
fi
|
||||
pnpm check:max-lines-ratchet --base "$base_ref"
|
||||
pnpm check:assertion-safety --base "$base_ref"
|
||||
if [[ "${RATCHET_RELEASE_MERGE_TREE:-}" == "true" ]]; then
|
||||
node --import tsx scripts/run-oxlint-shards.mts --only=core --only=extensions --threads=1
|
||||
fi
|
||||
;;
|
||||
release-lint-core-*)
|
||||
stripe="${TASK#release-lint-core-}"
|
||||
node --import tsx scripts/run-oxlint-shards.mts \
|
||||
--only=core --split-core --core-stripe="${stripe}/5" --threads=1
|
||||
;;
|
||||
release-lint-extensions)
|
||||
node --import tsx scripts/run-oxlint-shards.mts --only=extensions --threads=1
|
||||
;;
|
||||
bun-launcher)
|
||||
OPENCLAW_E2E_SKIP_BUILD=1 OPENCLAW_TEST_BUN_LAUNCHER=1 pnpm test test/openclaw-launcher.e2e.test.ts
|
||||
@@ -2636,9 +2660,10 @@ jobs:
|
||||
FROZEN_TARGET: ${{ needs.preflight.outputs.frozen_target }}
|
||||
HISTORICAL_TARGET: ${{ needs.preflight.outputs.compatibility_target }}
|
||||
FORMAT_CHECK: ${{ needs.preflight.outputs.run_format_check }}
|
||||
RELEASE_GATE: ${{ inputs.release_gate && 'true' || 'false' }}
|
||||
RUN_CONTROL_UI_I18N: ${{ needs.preflight.outputs.run_control_ui_i18n }}
|
||||
RUN_UI_TESTS: ${{ needs.preflight.outputs.run_ui_tests }}
|
||||
RUNNER_BACKEND: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) && 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND }}
|
||||
RUNNER_BACKEND: ${{ (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) && 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND }}
|
||||
OPENCLAW_LOCAL_CHECK: "0"
|
||||
TASK: ${{ matrix.task }}
|
||||
PR_BASE_SHA: ${{ github.event_name == 'pull_request' && needs.preflight.outputs.diff_base_revision || '' }}
|
||||
@@ -2735,9 +2760,12 @@ jobs:
|
||||
lint_args=(--threads=8)
|
||||
if [ "$RUNNER_BACKEND" = "github" ]; then
|
||||
# Five dedicated hosted jobs own the aggregated core Programs. Keep
|
||||
# extension preparation, optional UI checks, and formatting in
|
||||
# this sixth lane so each 4-core runner stays below ~6m.
|
||||
# extension preparation in this sixth lane except when the exact
|
||||
# merge-tree release lint job already owns it.
|
||||
lint_args=(--only=extensions --only=scripts --threads=1)
|
||||
if [ "$RELEASE_GATE" = "true" ]; then
|
||||
lint_args=(--only=scripts --threads=1)
|
||||
fi
|
||||
export GOMAXPROCS=2
|
||||
elif [ "$(nproc)" -lt 8 ]; then
|
||||
# Fork PRs build each semantic Program once. Bound both oxlint
|
||||
@@ -2875,7 +2903,7 @@ jobs:
|
||||
contents: read
|
||||
name: check-lint-core-${{ matrix.stripe }}
|
||||
needs: [preflight]
|
||||
if: ${{ needs.preflight.outputs.run_check == 'true' && (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) }}
|
||||
if: ${{ needs.preflight.outputs.run_check == 'true' && (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) }}
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 15
|
||||
strategy:
|
||||
@@ -2910,7 +2938,7 @@ jobs:
|
||||
contents: read
|
||||
name: check-test-types-core-${{ matrix.stripe }}
|
||||
needs: [preflight]
|
||||
if: ${{ needs.preflight.outputs.run_check == 'true' && (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) }}
|
||||
if: ${{ needs.preflight.outputs.run_check == 'true' && (vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' || vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository)) }}
|
||||
# Measured 232-269s per stripe on hosted 4-core; hybrid attempt 1 rides
|
||||
# the 8 vCPU class like the compact large rows, retries stay hosted.
|
||||
runs-on: ${{ vars.OPENCLAW_CI_RUNNER_BACKEND == 'github' && 'ubuntu-24.04' || (vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' && github.run_attempt > 1) && 'ubuntu-24.04' || github.event_name == 'workflow_dispatch' && 'ubuntu-24.04' || (vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || contains(fromJSON('["OWNER","MEMBER","COLLABORATOR","CONTRIBUTOR"]'), github.event.pull_request.author_association)) && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04') }}
|
||||
|
||||
@@ -409,11 +409,15 @@ jobs:
|
||||
echo "Artifact-backed Telegram E2E requires the complete prerelease plugin registry tuple." >&2
|
||||
exit 1
|
||||
fi
|
||||
expected_registry_name="docker-e2e-prepublish-plugin-registry-${PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_RUN_ID}-${PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_RUN_ATTEMPT}"
|
||||
if [[ "$PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_NAME" != "$expected_registry_name" ]]; then
|
||||
echo "Prerelease plugin registry artifact name does not match its producer run." >&2
|
||||
exit 1
|
||||
fi
|
||||
expected_registry_suffix="-${PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_RUN_ID}-${PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_RUN_ATTEMPT}"
|
||||
case "$PREPUBLISH_PLUGIN_REGISTRY_ARTIFACT_NAME" in
|
||||
"docker-e2e-prepublish-plugin-registry${expected_registry_suffix}" | \
|
||||
"package-acceptance-telegram-plugin-registry${expected_registry_suffix}") ;;
|
||||
*)
|
||||
echo "Prerelease plugin registry artifact name does not match its producer run." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case "${PROVIDER_MODE}" in
|
||||
mock-openai | live-frontier) ;;
|
||||
|
||||
@@ -1307,6 +1307,7 @@ jobs:
|
||||
package_sha256: ${{ (needs.resolve_target.outputs.package_acceptance_package_spec == '' && needs.resolve_target.outputs.package_mode != 'published') && needs.prepare_release_package.outputs.package_sha256 || '' }}
|
||||
package_source_sha: ${{ needs.prepare_release_package.outputs.source_sha }}
|
||||
package_version: ${{ needs.prepare_release_package.outputs.package_version }}
|
||||
prepublish_plugin_registry_json: ${{ needs.prepare_release_package.outputs.prepublish_plugin_registry_json }}
|
||||
suite_profile: custom
|
||||
docker_lanes: release-typed-onboarding doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor root-managed-vps-upgrade update-restart-auth plugins-offline plugin-update plugin-binding-command-escape
|
||||
published_upgrade_survivor_baselines: ${{ needs.resolve_target.outputs.run_release_soak == 'true' && 'last-stable-4 2026.4.23 2026.5.2 2026.4.15' || '' }}
|
||||
|
||||
@@ -249,6 +249,11 @@ on:
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
prepublish_plugin_registry_json:
|
||||
description: Immutable prerelease plugin registry tuple from the package producer
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
suite_profile:
|
||||
description: "Acceptance profile: smoke, package, telegram, product, full, or custom"
|
||||
required: false
|
||||
@@ -428,6 +433,7 @@ env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.19.0"
|
||||
PACKAGE_ARTIFACT_NAME: package-under-test-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
TELEGRAM_PLUGIN_REGISTRY_ARTIFACT_NAME: package-acceptance-telegram-plugin-registry-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
|
||||
jobs:
|
||||
resolve_package:
|
||||
@@ -448,6 +454,7 @@ jobs:
|
||||
package_source_sha: ${{ steps.resolve.outputs.package_source_sha }}
|
||||
package_sha256: ${{ steps.resolve.outputs.sha256 }}
|
||||
package_version: ${{ steps.resolve.outputs.package_version }}
|
||||
prepublish_plugin_registry_json: ${{ steps.registry_identity.outputs.json }}
|
||||
published_upgrade_survivor_baseline: ${{ steps.upgrade_survivor_baselines.outputs.baseline }}
|
||||
published_upgrade_survivor_baselines: ${{ steps.upgrade_survivor_baselines.outputs.baselines }}
|
||||
published_upgrade_survivor_scenarios: ${{ inputs.published_upgrade_survivor_scenarios }}
|
||||
@@ -471,6 +478,80 @@ jobs:
|
||||
install-bun: ${{ inputs.source == 'ref' && 'true' || 'false' }}
|
||||
install-deps: "true"
|
||||
|
||||
- name: Validate prerelease plugin registry input
|
||||
id: registry_input
|
||||
env:
|
||||
CANDIDATE_ARTIFACT_JSON: ${{ inputs.candidate_artifact_json || '' }}
|
||||
PREPUBLISH_PLUGIN_REGISTRY_JSON: ${{ inputs.prepublish_plugin_registry_json || '' }}
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
normalize_registry_tuple() {
|
||||
local json="$1"
|
||||
local source="$2"
|
||||
[[ -n "${json// }" ]] || return 0
|
||||
jq -cer \
|
||||
--arg source "$source" \
|
||||
'
|
||||
def digits: test("^[1-9][0-9]*$");
|
||||
def hex64: test("^[a-f0-9]{64}$");
|
||||
def fields: [
|
||||
"prepublishPluginRegistryArtifactName", "prepublishPluginRegistryArtifactId",
|
||||
"prepublishPluginRegistryArtifactDigest", "prepublishPluginRegistryArtifactRunId",
|
||||
"prepublishPluginRegistryArtifactRunAttempt", "prepublishPluginRegistryManifestSha256"
|
||||
];
|
||||
def tuple:
|
||||
. as $input
|
||||
| reduce fields[] as $field ({}; .[$field] = $input[$field])
|
||||
| .prepublishPluginRegistryArtifactId |= tostring
|
||||
| .prepublishPluginRegistryArtifactRunId |= tostring
|
||||
| .prepublishPluginRegistryArtifactRunAttempt |= tostring;
|
||||
if type != "object" then error("not an object") else . end
|
||||
| . as $input
|
||||
| [fields[] as $field | select($input | has($field))] as $present
|
||||
| if ($present | length) == 0 and $source == "candidate" then empty
|
||||
elif ($present | length) != 6 or
|
||||
($source == "direct" and ((keys | sort) != (fields | sort)))
|
||||
then error("incomplete or unexpected fields")
|
||||
else tuple
|
||||
end
|
||||
| . as $tuple
|
||||
| select(
|
||||
(
|
||||
.prepublishPluginRegistryArtifactName ==
|
||||
("docker-e2e-prepublish-plugin-registry-" +
|
||||
$tuple.prepublishPluginRegistryArtifactRunId + "-" +
|
||||
$tuple.prepublishPluginRegistryArtifactRunAttempt) or
|
||||
.prepublishPluginRegistryArtifactName ==
|
||||
("package-acceptance-telegram-plugin-registry-" +
|
||||
$tuple.prepublishPluginRegistryArtifactRunId + "-" +
|
||||
$tuple.prepublishPluginRegistryArtifactRunAttempt)
|
||||
) and
|
||||
([
|
||||
.prepublishPluginRegistryArtifactId,
|
||||
.prepublishPluginRegistryArtifactRunId,
|
||||
.prepublishPluginRegistryArtifactRunAttempt
|
||||
] | all(.[]; digits)) and
|
||||
([
|
||||
.prepublishPluginRegistryArtifactDigest,
|
||||
.prepublishPluginRegistryManifestSha256
|
||||
] | all(.[]; hex64))
|
||||
)
|
||||
' <<< "$json" 2>/dev/null || {
|
||||
echo "Prerelease plugin registry JSON must contain one complete immutable tuple." >&2
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
candidate_registry="$(normalize_registry_tuple "$CANDIDATE_ARTIFACT_JSON" candidate)"
|
||||
direct_registry="$(normalize_registry_tuple "$PREPUBLISH_PLUGIN_REGISTRY_JSON" direct)"
|
||||
if [[ -n "$candidate_registry" && -n "$direct_registry" &&
|
||||
"$candidate_registry" != "$direct_registry" ]]; then
|
||||
echo "Prerelease plugin registry inputs disagree." >&2
|
||||
exit 1
|
||||
fi
|
||||
printf 'json=%s\n' "${direct_registry:-$candidate_registry}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Validate package artifact input identity
|
||||
id: input_artifact
|
||||
if: inputs.source == 'artifact'
|
||||
@@ -558,6 +639,8 @@ jobs:
|
||||
PACKAGE_FILE_NAME: ${{ inputs.package_file_name }}
|
||||
PACKAGE_SOURCE_SHA: ${{ inputs.package_source_sha }}
|
||||
PACKAGE_VERSION: ${{ inputs.package_version }}
|
||||
PREPUBLISH_PLUGIN_REGISTRY_JSON: ${{ steps.registry_input.outputs.json }}
|
||||
TELEGRAM_MODE: ${{ inputs.telegram_mode }}
|
||||
TRUSTED_SOURCE_ID: ${{ inputs.trusted_source_id }}
|
||||
OPENCLAW_TRUSTED_PACKAGE_TOKEN: ${{ secrets.OPENCLAW_TRUSTED_PACKAGE_TOKEN }}
|
||||
shell: bash
|
||||
@@ -578,6 +661,15 @@ jobs:
|
||||
}
|
||||
fi
|
||||
|
||||
set --
|
||||
if [[ -z "$PREPUBLISH_PLUGIN_REGISTRY_JSON" &&
|
||||
"$TELEGRAM_MODE" != "none" &&
|
||||
("$SOURCE" == "ref" || "$SOURCE" == "artifact") ]]; then
|
||||
set -- \
|
||||
--plugin-registry-output-dir .artifacts/package-acceptance-telegram-plugin-registry \
|
||||
--required-plugin-packages-json '["@openclaw/codex"]'
|
||||
fi
|
||||
|
||||
node --import tsx scripts/resolve-openclaw-package-candidate.mts \
|
||||
--source "$SOURCE" \
|
||||
--package-ref "$PACKAGE_REF" \
|
||||
@@ -589,7 +681,8 @@ jobs:
|
||||
--output-dir .artifacts/docker-e2e-package \
|
||||
--output-name openclaw-current.tgz \
|
||||
--metadata .artifacts/docker-e2e-package/package-candidate.json \
|
||||
--github-output "$GITHUB_OUTPUT"
|
||||
--github-output "$GITHUB_OUTPUT" \
|
||||
"$@"
|
||||
echo "package_file_name=openclaw-current.tgz" >> "$GITHUB_OUTPUT"
|
||||
if [[ "$SOURCE" == "artifact" ]]; then
|
||||
jq -e \
|
||||
@@ -747,6 +840,44 @@ jobs:
|
||||
retention-days: 14
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload Telegram prerelease plugin registry artifact
|
||||
id: upload_telegram_registry
|
||||
if: steps.resolve.outputs.plugin_registry_manifest_sha256 != ''
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
||||
with:
|
||||
name: ${{ env.TELEGRAM_PLUGIN_REGISTRY_ARTIFACT_NAME }}
|
||||
path: .artifacts/package-acceptance-telegram-plugin-registry/
|
||||
retention-days: 14
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Prepare prerelease plugin registry identity
|
||||
id: registry_identity
|
||||
env:
|
||||
GENERATED_ARTIFACT_DIGEST: ${{ steps.upload_telegram_registry.outputs.artifact-digest }}
|
||||
GENERATED_ARTIFACT_ID: ${{ steps.upload_telegram_registry.outputs.artifact-id }}
|
||||
GENERATED_MANIFEST_SHA256: ${{ steps.resolve.outputs.plugin_registry_manifest_sha256 }}
|
||||
SUPPLIED_REGISTRY_JSON: ${{ steps.registry_input.outputs.json }}
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [[ -n "$GENERATED_ARTIFACT_ID" ]]; then
|
||||
[[ -z "$SUPPLIED_REGISTRY_JSON" ]] || {
|
||||
echo "Package Acceptance generated a registry despite a supplied immutable tuple." >&2
|
||||
exit 1
|
||||
}
|
||||
SUPPLIED_REGISTRY_JSON="$(
|
||||
jq -cn \
|
||||
--arg prepublishPluginRegistryArtifactName "$TELEGRAM_PLUGIN_REGISTRY_ARTIFACT_NAME" \
|
||||
--arg prepublishPluginRegistryArtifactId "$GENERATED_ARTIFACT_ID" \
|
||||
--arg prepublishPluginRegistryArtifactDigest "$GENERATED_ARTIFACT_DIGEST" \
|
||||
--arg prepublishPluginRegistryArtifactRunId "$GITHUB_RUN_ID" \
|
||||
--arg prepublishPluginRegistryArtifactRunAttempt "$GITHUB_RUN_ATTEMPT" \
|
||||
--arg prepublishPluginRegistryManifestSha256 "$GENERATED_MANIFEST_SHA256" \
|
||||
'$ARGS.named'
|
||||
)"
|
||||
fi
|
||||
printf 'json=%s\n' "$SUPPLIED_REGISTRY_JSON" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Summarize package candidate
|
||||
env:
|
||||
INPUT_ARTIFACT_DIGEST: ${{ steps.input_artifact.outputs.artifact_digest }}
|
||||
@@ -909,7 +1040,7 @@ jobs:
|
||||
pull-requests: read
|
||||
uses: ./.github/workflows/openclaw-live-and-e2e-checks-reusable.yml
|
||||
with: &docker_acceptance_inputs
|
||||
advisory: ${{ inputs.advisory }}
|
||||
advisory: ${{ inputs.advisory || false }}
|
||||
ref: ${{ needs.resolve_package.outputs.package_source_sha || inputs.workflow_ref }}
|
||||
include_repo_e2e: false
|
||||
include_release_path_suites: ${{ needs.resolve_package.outputs.include_release_path_suites == 'true' }}
|
||||
@@ -929,12 +1060,12 @@ jobs:
|
||||
package_source_sha: ${{ needs.resolve_package.outputs.package_source_sha }}
|
||||
package_version: ${{ needs.resolve_package.outputs.package_version }}
|
||||
enable_prepublish_plugin_registry: ${{ contains(fromJSON('["artifact","ref"]'), inputs.source) }}
|
||||
prepublish_plugin_registry_artifact_name: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactName || '' }}
|
||||
prepublish_plugin_registry_artifact_id: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactId || '' }}
|
||||
prepublish_plugin_registry_artifact_digest: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactDigest || '' }}
|
||||
prepublish_plugin_registry_artifact_run_id: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactRunId || '' }}
|
||||
prepublish_plugin_registry_artifact_run_attempt: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactRunAttempt || '' }}
|
||||
prepublish_plugin_registry_manifest_sha256: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryManifestSha256 || '' }}
|
||||
prepublish_plugin_registry_artifact_name: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '' }}
|
||||
prepublish_plugin_registry_artifact_id: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactId || '' }}
|
||||
prepublish_plugin_registry_artifact_digest: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactDigest || '' }}
|
||||
prepublish_plugin_registry_artifact_run_id: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactRunId || '' }}
|
||||
prepublish_plugin_registry_artifact_run_attempt: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactRunAttempt || '' }}
|
||||
prepublish_plugin_registry_manifest_sha256: ${{ startsWith(fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '', 'docker-e2e-prepublish-plugin-registry-') && fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryManifestSha256 || '' }}
|
||||
include_live_suites: ${{ needs.resolve_package.outputs.include_live_suites == 'true' }}
|
||||
live_models_only: false
|
||||
shared_image_artifact_namespace: ${{ inputs.shared_image_artifact_namespace }}
|
||||
@@ -1023,12 +1154,12 @@ jobs:
|
||||
package_sha256: ${{ needs.resolve_package.outputs.package_sha256 }}
|
||||
package_source_sha: ${{ needs.resolve_package.outputs.package_source_sha }}
|
||||
package_version: ${{ needs.resolve_package.outputs.package_version }}
|
||||
prepublish_plugin_registry_artifact_name: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactName || '' }}
|
||||
prepublish_plugin_registry_artifact_id: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactId || '' }}
|
||||
prepublish_plugin_registry_artifact_digest: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactDigest || '' }}
|
||||
prepublish_plugin_registry_artifact_run_id: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactRunId || '' }}
|
||||
prepublish_plugin_registry_artifact_run_attempt: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryArtifactRunAttempt || '' }}
|
||||
prepublish_plugin_registry_manifest_sha256: ${{ fromJSON(inputs.candidate_artifact_json || '{}').prepublishPluginRegistryManifestSha256 || '' }}
|
||||
prepublish_plugin_registry_artifact_name: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactName || '' }}
|
||||
prepublish_plugin_registry_artifact_id: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactId || '' }}
|
||||
prepublish_plugin_registry_artifact_digest: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactDigest || '' }}
|
||||
prepublish_plugin_registry_artifact_run_id: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactRunId || '' }}
|
||||
prepublish_plugin_registry_artifact_run_attempt: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryArtifactRunAttempt || '' }}
|
||||
prepublish_plugin_registry_manifest_sha256: ${{ fromJSON(needs.resolve_package.outputs.prepublish_plugin_registry_json || '{}').prepublishPluginRegistryManifestSha256 || '' }}
|
||||
package_label: openclaw@${{ needs.resolve_package.outputs.package_version }}
|
||||
harness_ref: ${{ inputs.workflow_ref }}
|
||||
provider_mode: ${{ needs.resolve_package.outputs.telegram_mode }}
|
||||
|
||||
Reference in New Issue
Block a user