argoyle e3c17ceaa0 fix: make release PR creation robust against race conditions (#19)
Two fixes for intermittent release workflow failures:

- **Use `BASE_BRANCH` instead of `DEFAULT_BRANCH`** for the PR `base` field — `BASE_BRANCH` has a `:-main` fallback, preventing an empty base from causing a 404
- **Replace fixed `sleep 3` with proper polling and retry** — polls for branch readiness (up to 10 attempts) before creating the PR, then retries PR creation (up to 5 attempts) with backoff

Fixes the `Error creating PR (HTTP 404)` seen when Gitea hasn't fully indexed the `next-release` branch by the time the PR creation request fires.

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Reviewed-on: #19
2026-03-23 15:52:25 +00:00

Shared Workflows

Reusable Gitea Actions workflows for Unbound Software repositories.

Available Workflows

Release.yml

Automated release workflow using git-cliff for changelog generation.

Usage:

name: Release

on:
  push:
    branches: [main]

jobs:
  release:
    uses: unboundsoftware/shared-workflows/.gitea/workflows/Release.yml@main

Inputs:

  • tag_only (boolean, default: false): Set to true to only create tags without full releases

Requirements:

This workflow reads the release token from /runner-secrets/release-token, which is automatically available on Unbound's Gitea runners. No repository secrets need to be configured.

How it works:

  1. On each push to the default branch, generates a changelog using git-cliff
  2. Creates or updates a next-release branch with the updated CHANGELOG.md and .version file
  3. Opens or updates a PR titled "chore(release): prepare for vX.Y.Z"
  4. When the .version file exists (after merging the release PR), creates a Gitea release with the changelog
S
Description
No description provided
Readme 76 KiB
Languages
Markdown 100%