CI/CD pipeline

Build and ship from the app

Check and export your game, then upload it to itch.io, Steam or the Epic Games Store.

What a build does

The stages run in order. The optional ones run only when you tick them.

  1. 01

    Validate

    Engine, platform, channel and credentials are checked before any work starts.

  2. 02

    Copy the project

    Into a temporary folder. Your working tree is never touched by a build.

  3. 03Optional

    Check

    Every scene is loaded and instantiated. Any error stops the build.

  4. 04Optional

    Add the SDKs

    The analytics SDK, and on Godot the feedback form, are added to the copy.

  5. 05Optional

    Obfuscate

    GDScript names are scrambled with GDMaim before packaging.

  6. 06

    Export

    The engine's own headless build, in release mode unless you choose debug.

  7. 07Optional

    Share

    Upload the build to your own storage so teammates can download it.

  8. 08

    Announce

    Post the release notes to your Slack and Discord channels.

What each engine can do

Pipeline capabilities by engine
CapabilityGodotUnityUnreal
Headless buildYesYesYes
WindowsYesYesYes
LinuxYesYesYes
macOSNoYesNo
WebListed, not selectable yet.NoNoNo
Upload to itch.io, Steam and EpicYesYesYes
Announce to Slack and DiscordYesYesYes
Analytics SDKYesYesYes
In-game feedback formYesNoNo
Pre-build checksYesNoNo
Script obfuscationYesNoNo

Where a build can go

Uploading is its own step, so you can retry an upload or send one build to a second channel without building again.

itch.io
Uploaded with butler, on the build's channel.
Steam
Uploaded with steamcmd. Players get it when you set it live on a branch in Steamworks.
Epic Games Store
Uploaded with BuildPatch Tool. It stays under Inactive Binaries unless the project has a sandbox set. Owners only.
Your own storage
Any S3-compatible bucket. Teammates download from the Builds list, and links last seven days.

A trigger builds and uploads in one go, because nobody is there to press the second button. That is how a nightly reaches your playtest channel.

A log you can read

  • Grouped by stage, each with its duration and its error and warning counts
  • Lines from the engine, butler and steamcmd are labelled as theirs
  • A failed build opens on the stage that failed
  • API keys and tokens are redacted before they reach the log

What it does not do

  • No resuming. A failed build starts again from the beginning.
  • One build at a time per machine. Stages run in order, not in parallel.
  • No custom stages or build scripts.
  • No Android, iOS or console targets. Web is not available yet.
  • Your GdUnit4 tests are not run. Checks are a scene walk plus your own rules.

The rest of the app

Stop maintaining pipelines, start shipping games

Version control, assets, issues, builds and analytics in one desktop app. Install it and open a project in about five minutes.