




















@@ -45,7 +45,7 @@ on:
45454646permissions:
4747actions: write
48-contents: read
48+contents: write
49495050concurrency:
5151group: openclaw-release-publish-${{ inputs.tag }}
@@ -263,6 +263,53 @@ jobs:
263263 wait_run_pid="$!"
264264 }
265265266+ create_or_update_github_release() {
267+ local release_version notes_version title notes_file changelog_file latest_arg prerelease_args
268+ release_version="${RELEASE_TAG#v}"
269+ notes_version="${release_version}"
270+ if [[ "${notes_version}" =~ ^([0-9]{4}\.[1-9][0-9]*\.[1-9][0-9]*)-(alpha|beta)\.[1-9][0-9]*$ ]]; then
271+ notes_version="${BASH_REMATCH[1]}"
272+ fi
273+ title="openclaw ${release_version}"
274+ changelog_file="${RUNNER_TEMP}/CHANGELOG.md"
275+ notes_file="${RUNNER_TEMP}/release-notes.md"
276+277+ gh api --repo "$GITHUB_REPOSITORY" "repos/${GITHUB_REPOSITORY}/contents/CHANGELOG.md?ref=${TARGET_SHA}" \
278+ --jq '.content' | base64 --decode > "${changelog_file}"
279+ awk -v version="${notes_version}" '
280+ $0 == "## " version { in_section = 1; next }
281+ /^## / && in_section { exit }
282+ in_section { print }
283+ ' "${changelog_file}" > "${notes_file}"
284+ if [[ ! -s "${notes_file}" ]]; then
285+ echo "CHANGELOG.md does not contain release notes for ${notes_version}." >&2
286+ exit 1
287+ fi
288+289+ prerelease_args=()
290+ latest_arg="--latest=false"
291+ if [[ "${RELEASE_TAG}" == *"-alpha."* || "${RELEASE_TAG}" == *"-beta."* ]]; then
292+ prerelease_args=(--prerelease)
293+ elif [[ "${RELEASE_NPM_DIST_TAG}" == "latest" ]]; then
294+ latest_arg="--latest"
295+ fi
296+297+ if gh release view "${RELEASE_TAG}" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
298+ gh release edit "${RELEASE_TAG}" --repo "$GITHUB_REPOSITORY" \
299+ --title "${title}" \
300+ --notes-file "${notes_file}" \
301+ "${prerelease_args[@]}"
302+ else
303+ gh release create "${RELEASE_TAG}" --repo "$GITHUB_REPOSITORY" \
304+ --verify-tag \
305+ --title "${title}" \
306+ --notes-file "${notes_file}" \
307+ "${prerelease_args[@]}" \
308+ "${latest_arg}"
309+ fi
310+ echo "- GitHub release: https://github.com/${GITHUB_REPOSITORY}/releases/tag/${RELEASE_TAG}" >> "$GITHUB_STEP_SUMMARY"
311+ }
312+266313 {
267314 echo "### Publish sequence"
268315 echo
@@ -345,3 +392,7 @@ jobs:
345392 if [[ "${failed}" != "0" ]]; then
346393 exit 1
347394 fi
395+396+ if [[ -n "${openclaw_npm_run_id}" ]]; then
397+ create_or_update_github_release
398+ fi
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。