This tutorial sets up automatic build uploads whenever you push to your main branch. After the pipeline runs, the new build appears in the Developer Portal ready to publish — no manual CLI step needed.
Prerequisites:
- A
wavedash.tomlcommitted to your repo (runwavedash initlocally first — see the Quickstart) - A CI/CD system (GitHub Actions or GitLab CI shown below)
1. Get an API key
CI runners don't have a browser, so you authenticate with an API key instead of wavedash auth login.
- Open the Developer Portal
- Go to the API Keys tab
- Click "Create API key", then copy the key — you won't be able to see it again

2. Store the key as a secret
Never put your API key in source code or commit it to your repo. Add it as a secret in your CI system:
- GitHub Actions: Repository → Settings → Secrets and variables → Actions → "New repository secret" → name it
WAVEDASH_TOKEN - GitLab CI: Repository → Settings → CI/CD → Variables → add
WAVEDASH_TOKENas a masked variable
3. Add the pipeline step
Create .github/workflows/deploy.yml:
name: Deploy to Wavedash
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build game
run: npm run build # replace with your build command
- name: Install Wavedash CLI
run: curl -fsSL https://wavedash.com/cli/install.sh | sh
- name: Push build
run: wavedash build push -m "Build ${{ github.sha }}"
env:
WAVEDASH_TOKEN: ${{ secrets.WAVEDASH_TOKEN }}
When WAVEDASH_TOKEN is set, the CLI uses it automatically — no login step needed.
Replace npm run build with whatever command produces your game's output folder, and make sure upload_dir in wavedash.toml points at that folder.
4. Publish after CI
Uploading does not make a build live. After the pipeline runs, open the Developer Portal, go to the Builds tab, and click "Publish" on the build you want to ship.
This is intentional — CI uploads on every merge, but you decide exactly when players see a new version.