This guide explains how to set up automated releases to CurseForge (and optionally WoWInterface/Wago) using GitHub Actions.
The recommended tool is BigWigsMods/packager - a GitHub Action that automatically:
- Packages your addon into a distributable zip
- Detects version from Git tags
- Generates changelogs from commits
- Uploads to CurseForge, WoWInterface, and Wago
- Go to your addon page on CurseForge
- Look in the "About Project" section on the right sidebar
- Find the Project ID (a number like
123456)
- Go to: https://authors-old.curseforge.com/account/api-tokens
- Click "Generate Token"
- Copy the token (you won't see it again!)
- Go to your repo on GitHub
- Navigate to Settings → Secrets and variables → Actions
- Add these repository secrets:
CF_API_KEY— Your CurseForge API tokenCURSEFORGE_PROJECT_ID— Your addon's project ID
Create file .github/workflows/release.yml:
name: Release
on:
push:
tags:
- "v*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed for changelog generation
- name: Package and Release
uses: BigWigsMods/packager@v2
with:
args: -p ${{ secrets.CURSEFORGE_PROJECT_ID }}
env:
CF_API_KEY: ${{ secrets.CF_API_KEY }}
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}Create .pkgmeta in your repo root to customize packaging:
package-as: Wofi
ignore:
- README.md
- CHANGELOG.md
- .github
- .gitignore
- "*.md"-
Update your version in
Wofi.toc:## Version: 1.0.1 -
Update CHANGELOG.md with the new version's changes
-
Commit your changes:
git add . git commit -m "chore: bump version to 1.0.1"
-
Create and push a tag:
git tag v1.0.1 git push origin main --tags
-
The GitHub Action will automatically:
- Package your addon
- Create a GitHub Release
- Upload to CurseForge
To also upload to WoWInterface and Wago, add more secrets and update the workflow:
Additional Secrets:
WOWI_API_TOKEN— WoWInterface API tokenWOWI_ADDON_ID— WoWInterface addon IDWAGO_API_TOKEN— Wago API tokenWAGO_PROJECT_ID— Wago project ID
Updated Workflow:
- name: Package and Release
uses: BigWigsMods/packager@v2
with:
args: >-
-p ${{ secrets.CURSEFORGE_PROJECT_ID }}
-w ${{ secrets.WOWI_ADDON_ID }}
-a ${{ secrets.WAGO_PROJECT_ID }}
env:
CF_API_KEY: ${{ secrets.CF_API_KEY }}
WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }}
WAGO_API_TOKEN: ${{ secrets.WAGO_API_TOKEN }}
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}The packager automatically detects game versions from your .toc file's ## Interface: line:
20505→ TBC Classic / Anniversary Edition11503→ Classic Era110002→ Retail