OpenClaw Release Evidence #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |