Skip to content

ci: release validation workflow (smoke install + RAT)#746

Closed
elijahbenizzy wants to merge 4 commits intomainfrom
release-validation-ci
Closed

ci: release validation workflow (smoke install + RAT)#746
elijahbenizzy wants to merge 4 commits intomainfrom
release-validation-ci

Conversation

@elijahbenizzy
Copy link
Copy Markdown
Contributor

Summary

Adds a release-validation GitHub Actions workflow that builds the full release pipeline on every PR and catches the class of bugs that have broken recent RCs (RC1 license/header, RC2 missing hello-world-counter).

The workflow:

  1. build-artifacts — runs scripts/apache_release.py all --skip-signing --no-upload to produce the git archive, sdist, and wheel; runs Apache RAT on the tarballs. Any unapproved license or missing required file fails the job.
  2. install-and-smoke — on Python 3.10/3.11/3.12, downloads the built wheel, installs it into a fresh venv outside the source tree, and runs scripts/ci_smoke_server.py: imports burr.tracking.server.run (catches missing-example bugs), starts the server on a free port, runs a tracked app, asserts the server sees the project.

Only build-artifacts and install-and-smoke (3.12) are required in .asf.yaml; 3.10 and 3.11 are informational.

Commits

  1. --skip-signing flag in apache_release.py + new scripts/ci_smoke_server.py helper
  2. Workflow + .asf.yaml required-status-checks update

Test plan

  • build-artifacts is green on this PR
  • install-and-smoke (3.12) is green on this PR
  • Open a follow-up PR that e.g. removes a required example from the release config; confirm install-and-smoke fails (would have caught PR feat: implement counter app demo in Burr UI #675's regression)

Preparation for the release-validation CI workflow.

apache_release.py:
- Add --skip-signing to archive/sdist/wheel/all subcommands
- Split _sign_artifact into checksum (always) and GPG sign (skippable)
- Drop gpg from required tools when --skip-signing is set

ci_smoke_server.py:
- Installs a built wheel into a fresh venv outside the source tree
- Imports burr.tracking.server.run (catches missing-example bugs like #675)
- Starts the burr server on a free port with a dedicated data dir
- Runs a tracked app, verifies the server observes the project
Build the full release pipeline on every PR, plus RAT license check
and an end-to-end smoke install of the wheel outside the source tree.
This catches the failure modes that have broken recent RCs:

- build-artifacts: runs apache_release.py all --skip-signing --no-upload,
  verifies the 3 artifacts exist, runs Apache RAT without --report-only
  so license violations fail the job.
- install-and-smoke: on 3.10/3.11/3.12, installs the wheel into a fresh
  venv and runs scripts/ci_smoke_server.py. That helper imports the
  server module, boots the server, runs a tracked app, and asserts the
  server sees the project — so a missing example (like PR #675's
  hello-world-counter) would fail here.

Only "build-artifacts" and "install-and-smoke (3.12)" are required
checks in .asf.yaml; 3.10 and 3.11 are informational.
@github-actions github-actions Bot added the area/ci Workflows, build, release scripts label Apr 21, 2026
CI runners don't have svn installed. The 'all' subcommand listed svn as
a required tool unconditionally, but svn is only used during the upload
step. Skip the requirement when --no-upload is passed.
Mirror the .rat-excludes updates from #745 so this CI branch passes
license checks against current main. Specifically:

- Use .* prefix for deep-researcher patterns so the symlinked
  burr/examples/deep-researcher/ paths are also matched.
- Exclude .github/ templates (YAML/MD with frontmatter).
- Exclude common binary image extensions (.png, .gif, .ico, .jpg).
- Exclude examples/deployment/aws/terraform/tutorial.md.
@elijahbenizzy
Copy link
Copy Markdown
Contributor Author

Consolidated into #745 — same fixes plus the workflow + RAT pattern fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Workflows, build, release scripts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant