Skip to content

feat: improve release workflow with named binaries, wheel, GitHub release creation, and manual dispatch#39

Merged
jeremytrimble merged 5 commits into
mainfrom
copilot/improve-release-approach-gitlab-actions
May 29, 2026
Merged

feat: improve release workflow with named binaries, wheel, GitHub release creation, and manual dispatch#39
jeremytrimble merged 5 commits into
mainfrom
copilot/improve-release-approach-gitlab-actions

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 17, 2026

Improves the GitHub Actions release workflow with the following changes:

  • Housekeeping: Updated actions/setup-python@v4@v5 in tests.yml
  • Named binaries: Binaries produced by PyInstaller are renamed to specview-{version}-{platform} (e.g. specview-0.2.0-linux, specview-0.2.0-windows.exe)
  • Wheel artifact: Added a build-wheel job that produces a Python wheel alongside the platform binaries
  • GitHub Release: Added a release job that collects all artifacts and creates a GitHub Release automatically on tag push
  • Internal artifact naming: Internal Actions artifact names are specview-{platform} (e.g. specview-linux, specview-macos, specview-windows) — not prefixed with binary-
  • Security: Pinned actions/download-artifact to v4.1.3 to address an arbitrary file write vulnerability (CVE affecting >= 4.0.0, < 4.1.3)
  • Manual dispatch: Added a workflow_dispatch trigger with a version input so the full pipeline can be triggered manually from the GitHub Actions UI without needing to push a real tag. Manual runs create a pre-release (clearly marked as a test) that can be deleted afterwards.

Copilot AI and others added 2 commits May 17, 2026 13:25
Agent-Logs-Url: https://github.com/jeremytrimble/specview/sessions/8dee06ee-8229-4bf0-97dc-df73db122800

Co-authored-by: jeremytrimble <1209303+jeremytrimble@users.noreply.github.com>
…se jobs

Agent-Logs-Url: https://github.com/jeremytrimble/specview/sessions/8dee06ee-8229-4bf0-97dc-df73db122800

Co-authored-by: jeremytrimble <1209303+jeremytrimble@users.noreply.github.com>
…ite vulnerability

Agent-Logs-Url: https://github.com/jeremytrimble/specview/sessions/8dee06ee-8229-4bf0-97dc-df73db122800

Co-authored-by: jeremytrimble <1209303+jeremytrimble@users.noreply.github.com>
@jeremytrimble
Copy link
Copy Markdown
Owner

@copilot: Is it going to name the pyinstaller exectuables specview-binary-*? I think just specview-* would be better.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 17, 2026

@copilot: Is it going to name the pyinstaller exectuables specview-binary-*? I think just specview-* would be better.

The binary filenames in the release were already specview-{version}-{platform} (e.g. specview-0.2.0-linux). The specview-binary-* was only the internal Actions artifact name used to pass files between jobs. Fixed in f6c0311 — internal artifact names are now specview-{platform} (e.g. specview-linux, specview-macos, specview-windows).

@jeremytrimble
Copy link
Copy Markdown
Owner

@copilot I don't know GitHub actions that well. Is there a way to test these changes by creating a "fake" release?

Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 17, 2026

@copilot I don't know GitHub actions that well. Is there a way to test these changes by creating a "fake" release?

Yes — the easiest way is to push a lightweight test tag. Since the workflow triggers on v* tags, you can do:

git tag v0.0.1-test
git push origin v0.0.1-test

That will kick off the full workflow (build binaries on all three platforms, build the wheel, create a GitHub release named v0.0.1-test). Afterwards you can delete the tag and release:

git push --delete origin v0.0.1-test
git tag --delete v0.0.1-test

And delete the release from the GitHub UI (Releases → Edit → Delete).

Alternatively, if you want to be able to trigger it manually from the GitHub Actions UI without pushing a tag at all, I can add a workflow_dispatch trigger to the workflow — just let me know.

@jeremytrimble
Copy link
Copy Markdown
Owner

@copilot ok let's try adding the workflow dispatch thing. Where do I go to trigger that manually? And how do I specify details like the version when the workflow is being triggered manually (not in response to a tag)?

Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 17, 2026

@copilot ok let's try adding the workflow dispatch thing. Where do I go to trigger that manually? And how do I specify details like the version when the workflow is being triggered manually (not in r...

Done in 6201a21. Here's what was added and how to use it:

What changed: The workflow now has a workflow_dispatch trigger with a required version input (default: v0.0.0-test). When triggered manually it creates a pre-release (clearly marked as a test), so it won't be confused with real releases.

How to trigger it manually:

  1. Go to the repo on GitHub → Actions tab
  2. In the left sidebar, click "Build and Release Specview"
  3. Click the "Run workflow" button (top-right of the runs list)
  4. A dropdown appears with a version field — enter something like v0.2.0-test, then click Run workflow

The full pipeline (build binaries on all 3 platforms, build the wheel, create a pre-release) will run. When done, a pre-release named v0.2.0-test will appear in the Releases section. You can delete it from the UI (Releases → the test release → Edit → Delete this release + delete the tag) when finished.

Copilot AI changed the title feat: improve release workflow with named binaries, wheel, and GitHub release creation feat: improve release workflow with named binaries, wheel, GitHub release creation, and manual dispatch May 17, 2026
@jeremytrimble jeremytrimble marked this pull request as ready for review May 29, 2026 15:28
@jeremytrimble jeremytrimble merged commit 733fbf3 into main May 29, 2026
3 checks passed
@jeremytrimble jeremytrimble deleted the copilot/improve-release-approach-gitlab-actions branch May 30, 2026 12:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants