ci: release validation workflow (smoke install + RAT)#746
Closed
elijahbenizzy wants to merge 4 commits intomainfrom
Closed
ci: release validation workflow (smoke install + RAT)#746elijahbenizzy wants to merge 4 commits intomainfrom
elijahbenizzy wants to merge 4 commits intomainfrom
Conversation
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.
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.
Contributor
Author
|
Consolidated into #745 — same fixes plus the workflow + RAT pattern fix. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a
release-validationGitHub 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 missinghello-world-counter).The workflow:
scripts/apache_release.py all --skip-signing --no-uploadto produce the git archive, sdist, and wheel; runs Apache RAT on the tarballs. Any unapproved license or missing required file fails the job.scripts/ci_smoke_server.py: importsburr.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-artifactsandinstall-and-smoke (3.12)are required in.asf.yaml; 3.10 and 3.11 are informational.Commits
--skip-signingflag inapache_release.py+ newscripts/ci_smoke_server.pyhelper.asf.yamlrequired-status-checks updateTest plan
build-artifactsis green on this PRinstall-and-smoke (3.12)is green on this PRinstall-and-smokefails (would have caught PR feat: implement counter app demo in Burr UI #675's regression)