Reusable GitHub Actions workflow for building and publishing World of Warcraft addons.
- (Optional) Copy the template files if you want to customize defaults:
.pkgmetaandpackager-ignore.ymlfromtemplates/.github/workflows/release.ymlfromtemplates/release.yml
- Define repo variables (
Settings → Secrets and variables → Actions → Variables):ADDON_FOLDER: folder/slug (required)ADDON_TITLE: friendly name (optional)
- Add provider secrets (
Settings → Secrets and variables → Actions → Secrets)CURSEFORGE_TOKENWAGO_TOKENWOWI_TOKEN
- Commit and push. When you publish a release or run the workflow manually, your addon is packaged, the GitHub release notes are updated, and, unless skipped, uploads go to the providers that have tokens configured.
- Checkout – fetches the addon repo so the workflow can read
.pkgmeta, the TOC, etc. - Resolve pkgmeta template values – custom action that fills
.pkgmeta, ensures ignore lists, and writeszip-ignore.txt. - Update TOC version – custom action that patches the
## Versionline in the.toc. - Build addon zip – custom action that rsyncs files, applies the ignore list, and zips the addon folder.
- Generate release changelog – custom action that extracts the version section from
CHANGELOG.md. - Upload asset to GitHub release –
softprops/action-gh-releaseattaches the generated zip. - Update GitHub release notes – custom action running
gh release editwith the changelog. - Determine publish targets – custom action that checks which provider tokens exist.
- Publish to addon services –
BigWigsMods/packager@v2uploads to CurseForge/Wago/WoWI when tokens are available and the release isn’t marked prerelease (orskip_publish).
resolve-pkgmeta– fills.pkgmeta(creates from template if missing), uses default ignore template ifpackager-ignore.ymlis missing, and writeszip-ignore.txt.update-toc– updates the## Versionline in the.toc.build-zip– packages the addon folder into<addon_folder>-<tag>.zipusing the generated exclude list.changelog-from-md– writesCHANGELOG_RELEASE.mdfrom the matching section ofCHANGELOG.md.update-release-notes– syncs the GitHub release body withCHANGELOG_RELEASE.mdviagh release edit.determine-publish-targets– exposes which provider secrets (CF/Wago/WoWI) are set so the packager step can auto-skip when nothing is configured.
name: Release Addon
on:
release:
types: [published]
workflow_dispatch:
inputs:
skip_publish:
description: "Only create zip, don't push to addon services"
required: false
type: boolean
default: false
jobs:
release:
uses: PeluxGit/wow-addon-release-workflows/.github/workflows/addon-release.yml@v1
with:
addon_folder: ${{ vars.ADDON_FOLDER || github.event.repository.name }}
addon_title: ${{ vars.ADDON_TITLE || vars.ADDON_FOLDER || github.event.repository.name }}
skip_publish: ${{ inputs.skip_publish }}
secrets: inheritIf your repo omits .pkgmeta, the workflow creates it from the template. If your repo omits packager-ignore.yml, the workflow reads the default template from this repo without copying it into your addon repo. Add the files locally only if you need custom metadata or exclusions.