Skip to content

Add GitHub workflow to publish Vortex releases via Upload API#23276

Merged
Sewer56 merged 4 commits into
Nexus-Mods:masterfrom
Sewer56:task/publish-release-workflow
May 27, 2026
Merged

Add GitHub workflow to publish Vortex releases via Upload API#23276
Sewer56 merged 4 commits into
Nexus-Mods:masterfrom
Sewer56:task/publish-release-workflow

Conversation

@Sewer56
Copy link
Copy Markdown
Member

@Sewer56 Sewer56 commented May 21, 2026

Closes LAZ-229.

First merge

Summary

Adds a GitHub Actions workflow that publishes Vortex releases to Nexus Mods via the Upload API.

Change

New workflow .github/workflows/publish-release.yml triggers on release events.

Prepare script

scripts/publish-release-to-nexus/ is a TypeScript module with testable pure functions (inject a fake ghRun and temp dir):

  1. Fetches release metadata via gh release view --json
  2. Finds most recent stable release (not draft, not prerelease)
  3. Selects the .exe installer asset from the release
  4. Strips the leading v from the tag to produce a plain version
  5. Downloads the installer (skipped in dry-run)
  6. Writes GITHUB_OUTPUT keys for the upload step (multiline body uses heredoc syntax)

Documentation in docs/publishing-releases.md covers the publishing process and API usage.

There's a fair bit of logic here; so rather than making a long, untestable workflow yaml; it's been lifted out to a script; which is called from the yaml.

Modified Files

  • .github/workflows/publish-release.yml - new release-publishing workflow
  • scripts/publish-release-to-nexus/index.ts - workflow entry point
  • scripts/publish-release-to-nexus/prepare.ts - pure publish-preparation functions
  • scripts/publish-release-to-nexus/prepare.test.ts - vitest suite for prepare module
  • docs/publishing-releases.md - new documentation for the publishing process

- Manual dispatch workflow with dry-run by default
- Validates release is stable (not draft/prerelease)
- Downloads and uploads .exe installer to Nexus Mods
- Concurrency control prevents simultaneous publish runs
- Includes documentation for release managers
@Sewer56 Sewer56 changed the title Add GitHub workflow to publish Vortex releases via Upload API (LAZ-229) Add GitHub workflow to publish Vortex releases via Upload API May 21, 2026
Sewer56 added 3 commits May 26, 2026 12:51
- Add `findLatestStableTag()` using `gh release list --exclude-pre-releases --exclude-drafts`
- Previously relied on implicit latest; now explicitly filter out drafts/prereleases
- Pass selected tag to `gh release view` for deterministic behavior
- Update tests and documentation to reflect the change
- Document that outputs bridge to downstream workflow steps
- Explain when to use multiline heredoc syntax (release changelog)
- Note single-line restriction for other outputs
@Sewer56 Sewer56 marked this pull request as ready for review May 26, 2026 18:11
@Sewer56 Sewer56 requested a review from a team as a code owner May 26, 2026 18:12
Comment thread scripts/package-lock.json
@Sewer56 Sewer56 merged commit 8e736b6 into Nexus-Mods:master May 27, 2026
6 checks passed
@Sewer56
Copy link
Copy Markdown
Member Author

Sewer56 commented May 27, 2026

image

?? What happened here. I pushed, then merged from GitHub UI, but GitHub merged without the delete commit, and didn't even note the commit happened here.

@insomnious
Copy link
Copy Markdown
Contributor

Could we potentially have a Vortex-Test mod (that is hidden) under the site game domain so we can fully test this e2e on production? Do hidden mod pages work with the upload api? Do we need to manually upload an old version first in order to get a group id for us to test the workflow?

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.

3 participants