Skip to content

OpenClaw Release Evidence #12

OpenClaw Release Evidence

OpenClaw Release Evidence #12

name: OpenClaw Release Evidence
on:
workflow_dispatch:
inputs:
release_id:
description: Release evidence directory name, for example 2026.4.27-beta.1
required: true
type: string
release_ref:
description: Optional public OpenClaw release ref, tag, branch, or SHA
required: false
default: ""
type: string
package_spec:
description: Optional package spec covered by this evidence, for example openclaw@2026.4.27-beta.1
required: false
default: ""
type: string
runs:
description: "One per line: <label> <owner/repo> <run-id> <blocking|advisory>"
required: true
type: string
notes:
description: Optional release-manager notes to append to the evidence markdown
required: false
default: ""
type: string
concurrency:
group: openclaw-release-evidence-${{ inputs.release_id }}
cancel-in-progress: false
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
NODE_VERSION: "24.x"
jobs:
write_evidence:
runs-on: ubuntu-latest
permissions:
actions: read
contents: write
steps:
- name: Checkout release repo
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: true
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
- name: Write workflow inputs to files
env:
INPUT_RUNS: ${{ inputs.runs }}
INPUT_NOTES: ${{ inputs.notes }}
run: |
set -euo pipefail
mkdir -p "$RUNNER_TEMP/openclaw-release-evidence"
printf '%s\n' "$INPUT_RUNS" > "$RUNNER_TEMP/openclaw-release-evidence/runs.txt"
printf '%s\n' "$INPUT_NOTES" > "$RUNNER_TEMP/openclaw-release-evidence/notes.md"
- name: Generate release evidence
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
node scripts/openclaw-release-evidence.mjs \
--release-id "${{ inputs.release_id }}" \
--release-ref "${{ inputs.release_ref }}" \
--package-spec "${{ inputs.package_spec }}" \
--runs-file "$RUNNER_TEMP/openclaw-release-evidence/runs.txt" \
--notes-file "$RUNNER_TEMP/openclaw-release-evidence/notes.md"
- name: Append run summary
run: |
set -euo pipefail
evidence_md="evidence/${{ inputs.release_id }}/release-evidence.md"
{
cat "$evidence_md"
echo
echo "Evidence path: \`$evidence_md\`"
} >> "$GITHUB_STEP_SUMMARY"
- name: Commit evidence to main
run: |
set -euo pipefail
evidence_path="evidence/${{ inputs.release_id }}"
git config user.name "openclaw-release-bot"
git config user.email "release-bot@openclaw.ai"
git add "${evidence_path}"
if git diff --cached --quiet; then
echo "No evidence changes to commit."
exit 0
fi
git commit -m "Evidence: record ${{ inputs.release_id }}"
for attempt in 1 2 3 4 5; do
git fetch origin main
if git rebase origin/main && git push origin HEAD:main; then
exit 0
fi
git rebase --abort || true
sleep $((attempt * 5))
done
echo "::error::Could not push evidence to main after retries."
exit 1