






















@@ -30,24 +30,100 @@ if ! command -v clawhub >/dev/null 2>&1; then
3030exit 1
3131fi
323233+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
34+repo_root="$(cd "${script_dir}/.." && pwd)"
3335package_name="$(node -e 'const pkg = require(require("node:path").resolve(process.argv[1], "package.json")); console.log(pkg.name)' "${package_dir}")"
3436package_version="$(node -e 'const pkg = require(require("node:path").resolve(process.argv[1], "package.json")); console.log(pkg.version)' "${package_dir}")"
3537publish_tag="${PACKAGE_TAG:-latest}"
3638source_repo="${SOURCE_REPO:-${GITHUB_REPOSITORY:-openclaw/openclaw}}"
3739source_commit="${SOURCE_COMMIT:-$(git rev-parse HEAD)}"
3840source_ref="${SOURCE_REF:-$(git symbolic-ref -q HEAD || true)}"
3941clawhub_workdir="${CLAWDHUB_WORKDIR:-${CLAWHUB_WORKDIR:-$(pwd)}}"
40-publish_source="${package_dir}"
42+package_source="${package_dir}"
414342-if [[ "${publish_source}" != /* && "${publish_source}" != ./* ]]; then
43- publish_source="./${publish_source}"
44+if [[ "${package_source}" != /* && "${package_source}" != ./* ]]; then
45+ package_source="./${package_source}"
46+fi
47+48+pack_dir="$(mktemp -d "${RUNNER_TEMP:-/tmp}/openclaw-clawhub-pack.XXXXXX")"
49+cleanup() {
50+ rm -rf "${pack_dir}"
51+}
52+trap cleanup EXIT
53+54+pack_cmd=(
55+ clawhub
56+ package
57+ pack
58+"${package_source}"
59+ --pack-destination
60+"${pack_dir}"
61+ --json
62+)
63+64+build_package_runtime() {
65+if [[ "${OPENCLAW_PLUGIN_NPM_RUNTIME_BUILD:-1}" == "0" || "${OPENCLAW_PLUGIN_NPM_RUNTIME_BUILD:-1}" == "false" ]]; then
66+echo "Package-local runtime build: skipped"
67+return
68+fi
69+echo "Package-local runtime build: ${package_dir}"
70+ node "${repo_root}/scripts/lib/plugin-npm-runtime-build.mjs" "${package_dir}" >&2
71+}
72+73+echo "Resolved package dir: ${package_dir}"
74+echo "Resolved package source: ${package_source}"
75+echo "Resolved package name: ${package_name}"
76+echo "Resolved package version: ${package_version}"
77+echo "Resolved publish tag: ${publish_tag}"
78+echo "Resolved source repo: ${source_repo}"
79+echo "Resolved source commit: ${source_commit}"
80+echo "Resolved source ref: ${source_ref:-<missing>}"
81+echo "Resolved ClawHub workdir: ${clawhub_workdir}"
82+echo "Publish auth: GitHub Actions OIDC via ClawHub short-lived token"
83+84+printf 'Pack command: CLAWHUB_WORKDIR=%q' "${clawhub_workdir}"
85+printf ' %q' "${pack_cmd[@]}"
86+printf '\n'
87+88+build_package_runtime
89+90+pack_json="${pack_dir}/pack.json"
91+CLAWHUB_WORKDIR="${clawhub_workdir}" \
92+ node "${repo_root}/scripts/lib/plugin-npm-package-manifest.mjs" --run "${package_dir}" -- \
93+"${pack_cmd[@]}" > "${pack_json}"
94+pack_output="$(cat "${pack_json}")"
95+printf '%s\n' "${pack_output}"
96+97+pack_path="$(
98+ PACK_OUTPUT="${pack_output}" node --input-type=module <<'EOF'
99+import { resolve } from "node:path";
100+101+const raw = process.env.PACK_OUTPUT ?? "";
102+let parsed;
103+try {
104+ parsed = JSON.parse(raw);
105+} catch (error) {
106+ console.error(`clawhub package pack did not return JSON: ${error instanceof Error ? error.message : String(error)}`);
107+ process.exit(1);
108+}
109+if (!parsed || typeof parsed.path !== "string" || parsed.path.trim() === "") {
110+ console.error("clawhub package pack output did not include a tarball path.");
111+ process.exit(1);
112+}
113+console.log(resolve(parsed.path));
114+EOF
115+)"
116+117+if [[ ! -f "${pack_path}" ]]; then
118+echo "ClawPack tarball not found: ${pack_path}" >&2
119+exit 1
44120fi
4512146122publish_cmd=(
47123 clawhub
48124 package
49125 publish
50-"${publish_source}"
126+"${pack_path}"
51127 --tags
52128"${publish_tag}"
53129 --source-repo
@@ -65,16 +141,7 @@ if [[ -n "${source_ref}" ]]; then
65141 )
66142fi
6714368-echo "Resolved package dir: ${package_dir}"
69-echo "Resolved publish source: ${publish_source}"
70-echo "Resolved package name: ${package_name}"
71-echo "Resolved package version: ${package_version}"
72-echo "Resolved publish tag: ${publish_tag}"
73-echo "Resolved source repo: ${source_repo}"
74-echo "Resolved source commit: ${source_commit}"
75-echo "Resolved source ref: ${source_ref:-<missing>}"
76-echo "Resolved ClawHub workdir: ${clawhub_workdir}"
77-echo "Publish auth: GitHub Actions OIDC via ClawHub short-lived token"
144+echo "Resolved ClawPack: ${pack_path}"
7814579146printf 'Publish command: CLAWHUB_WORKDIR=%q' "${clawhub_workdir}"
80147printf ' %q' "${publish_cmd[@]}"
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。