Skip to content

ci: adopt org-infra reusable release workflows - #61

Draft
sonupreetam wants to merge 1 commit into
unbound-force:mainfrom
sonupreetam:428-adopt-org-infra-release-workflows
Draft

ci: adopt org-infra reusable release workflows#61
sonupreetam wants to merge 1 commit into
unbound-force:mainfrom
sonupreetam:428-adopt-org-infra-release-workflows

Conversation

@sonupreetam

Copy link
Copy Markdown
Contributor

Summary

Replace inline preflight and GoReleaser jobs with org-infra reusable workflow callers (reusable_release_preflight.yml + reusable_release_goreleaser.yml @ v0.7.1).

Changes

release.yml

  • Preflight: Replaced ~130 lines of inline validation logic with a single reusable workflow call
  • GoReleaser: Replaced ~40 lines of inline GoReleaser setup with a single reusable workflow call
  • New inputs: Added skip_semver_check, skip_ci_checks, skip_unreleased_check for debugging
  • CI checks: Explicitly specified via ci_checks: '["Build and Test"]'
  • check-signing-secrets: New job since the reusable preflight doesn't output has_signing_secrets
  • sign-macos: Stays inline (unchanged), now uses needs.preflight.outputs.tag instead of inputs.tag

.goreleaser.yaml

  • Added release.extra_files to upload generated Homebrew cask as a release asset (previously done by the inline release job's gh release upload step)

Key improvements over inline implementation

Feature Inline (before) Reusable (after)
Re-run after partial failure Smart but inline Standardized smart detection from org-infra
Semver ordering sort -V (breaks on pre-releases) Python semver library (spec-compliant)
CI check names Hardcoded in bash Configurable ci_checks JSON array input
Skip controls None 3 skip inputs for debugging
Tag creation git tag -a + git push GitHub API (annotated tags)

Part of unbound-force/unbound-force#428

@sonupreetam
sonupreetam requested a review from a team as a code owner August 5, 2026 11:08
Replace inline preflight and GoReleaser jobs with org-infra
reusable workflow callers (reusable_release_preflight.yml +
reusable_release_goreleaser.yml @ v0.7.1).

Key improvements over the inline implementation:
- Smart re-run detection (tag at HEAD = re-run, not error)
- Semver-aware Python comparator (replaces sort -V which
  breaks on pre-releases)
- Configurable CI checks via ci_checks input
- Skip inputs for debugging (skip_semver_check,
  skip_ci_checks, skip_unreleased_check)
- Tag creation via GitHub API (annotated tags)

sign-macos job stays inline — extracting that into a
reusable is a separate concern. A new check-signing-secrets
job provides the has_signing_secrets output that the
reusable preflight does not expose.

GoReleaser config gains release.extra_files to upload
generated Homebrew cask as a release asset (previously
done by the inline release job).

Fixes: unbound-force/unbound-force#428

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: sonupreetam <spreetam@redhat.com>
@sonupreetam
sonupreetam force-pushed the 428-adopt-org-infra-release-workflows branch from e26f824 to 9914bc4 Compare August 5, 2026 11:21
@sonupreetam
sonupreetam marked this pull request as draft August 5, 2026 11:54
@jflowers jflowers moved this to In Progress 📋 in Unbound Force Planning Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress 📋

Development

Successfully merging this pull request may close these issues.

2 participants