CLI reference

ase release

A game's release, step by step (the game's own CI workflows run these).

ase release version

Print the version this release gets: the one asked for, or the next minor.

Requires: a sign-in (ase login) or, in CI, a release credential. git, with the repo's v* release tags.

Changes: nothing; it only reads.

ase release version [OPTIONS]
Argument Description
--asked <ASKED> The version asked for, e.g. 1.2.0; the latest release's minor plus one by default.
--project <PROJECT> The game's project folder. Default ..

Examples

ase release version
ase release version --asked 1.2.0

ase release notes

Print the release's notes: the commits' Changelog-* trailers since the last release tag, and the changelog's Unreleased lines. Lists the commits without a trailer on stderr.

Requires: a sign-in (ase login) or, in CI, a release credential. git.

Changes: Nothing in the repo. In GitHub Actions it adds the notes to the job's summary.

ase release notes [OPTIONS]
Argument Description
--to <TO> The commit to release. Default HEAD.
--project <PROJECT> The game's project folder. Default ..

Examples

ase release notes > notes.md

ase release roll

Write the release's notes as the version's section of the changelog, if it has one, and empty its Unreleased.

Requires: a sign-in (ase login) or, in CI, a release credential.

Changes: Rewrites the project's CHANGELOG.md, if it has one: the notes become the version's section and Unreleased is emptied. It commits nothing, and ase release unroll moves the lines back.

ase release roll [OPTIONS] --version <VERSION> --notes <NOTES>
Argument Description
--version <VERSION> Required. The release's version.
--notes <NOTES> Required. The notes, as ase release notes printed them.
--date <DATE> The section's date; today (UTC) by default.
--project <PROJECT> The game's project folder. Default ..

ase release unroll

Move a failed release's lines back under Unreleased. Only workflows synced before releases tagged after publishing still call it.

Requires: a sign-in (ase login) or, in CI, a release credential. git.

Changes: Rewrites the project's CHANGELOG.md, moving the version's lines back under Unreleased. It commits nothing.

ase release unroll [OPTIONS] --version <VERSION>
Argument Description
--version <VERSION> Required. The release's version.
--project <PROJECT> The game's project folder. Default ..

ase release plan

The native builds, exports and targets of release.toml, as JSON for the workflows.

Requires: a sign-in (ase login) or, in CI, a release credential. In CI, workflows of this ase's version (ase sync keeps them).

Changes: Writes .ase-release.json in the project. With --write-config, Godot's package also rewrites release.toml's builds and targets to what this run can build.

ase release plan [OPTIONS]
Argument Description
--project <PROJECT> The game's project folder. Default ..
--platforms <PLATFORMS>... Only builds for these platforms, comma-separated; all by default.
--distribution Include signed mobile release packages. Build-only runs omit mobile exports.
--skip-unconfigured-mobile Skip mobile builds and store targets whose credentials are missing, with warnings.
--write-config Save this run's available builds/targets to the temporary project's release.toml.

Examples

ase release plan --distribution --skip-unconfigured-mobile

ase release secrets

Hand the game's store signing and upload keys, read from ASE Brain with the release credential, to the CI job's later steps.

Requires: The release credential of a CI job: a release key (ase studio key) or an OIDC token that one of the studio's trusts (ase studio trust) accepts for the game's repo.

Changes: Appends the keys to $GITHUB_ENV, masked, for the job's later steps, or prints them as export lines. Nothing in ASE Brain changes.

ase release secrets [OPTIONS] --game <GAME>
Argument Description
--game <GAME> Required. The game's registry id.
--names <NAMES>... Only these keys, comma-separated; every key Brain holds for the game by default.
--format <FORMAT> github appends them to $GITHUB_ENV, masked; shell prints export lines. GitHub's when GITHUB_ENV is set, else the shell's. One of github, shell.

Examples

ase release secrets --game neon-drift
eval "$(ase release secrets --game neon-drift --names APPSTORE_UPLOAD_KEY --format shell)"

ase release check-plan

Resolve project-check runners and toolchain requirements.

Requires: a sign-in (ase login) or, in CI, a release credential. In CI, workflows of this ase's version (ase sync keeps them).

Changes: Writes .ase-release.json in the project.

ase release check-plan [OPTIONS]
Argument Description
--project <PROJECT> The game's project folder. Default ..

ase release dependencies

Prepare the selected job's declared engine dependencies.

Requires: a sign-in (ase login) or, in CI, a release credential. .ase-release.json from ase release plan; Python, for Godot.

Changes: Downloads the job's engine: for Godot, the editor into ~/godot and its export templates, and sets GODOT in $GITHUB_ENV.

ase release dependencies [OPTIONS] --job <JOB>
Argument Description
--job <JOB> Required. The job's id, as ase release plan or check-plan printed it.
--project <PROJECT> The game's project folder. Default ..

ase release build

Execute an adapter-owned resolved build.

Requires: a sign-in (ase login) or, in CI, a release credential. .ase-release.json from ase release plan, and the engine (Godot from GODOT, as ase release dependencies sets it).

Changes: Installs the SDK into the project as ase sdk install does, then writes the build into --output.

ase release build [OPTIONS] --job <JOB> --output <OUTPUT>
Argument Description
--job <JOB> Required. The job's id, as ase release plan printed it.
--output <OUTPUT> Required. Where the build goes.
--project <PROJECT> The game's project folder. Default ..

ase release check

Import and check a project through its selected engine package.

Requires: a sign-in (ase login) or, in CI, a release credential. The engine, as for ase release build.

Changes: Installs the SDK into the project as ase sdk install does, then imports the project in the engine, which writes its import files.

ase release check [OPTIONS]
Argument Description
--project <PROJECT> The game's project folder. Default ..

ase release smoke

Play an exported build on this machine as release.toml's [smoke] says, judging its log.

Requires: a sign-in (ase login) or, in CI, a release credential.

Changes: Runs the build on this machine and writes its log into the build's folder.

ase release smoke [OPTIONS] --build <BUILD> --platform <PLATFORM>
Argument Description
--build <BUILD> Required. The build's folder, as the export left it.
--platform <PLATFORM> Required. The build's platform: windows, macos or linux.
--project <PROJECT> The game's project folder. Default ..

Examples

ase release smoke --build out/linux --platform linux

ase release clips

The changelog's clips, waiting on the repo's next draft release.

ase release clips check

Fail if a clip the release's notes name isn't on the shelf; print the names, as JSON.

Requires: a sign-in (ase login) or, in CI, a release credential. Without --shelf, GitHub's gh with a token and GITHUB_REPOSITORY.

Changes: nothing; it only reads.

ase release clips check [OPTIONS] --notes <NOTES>
Argument Description
--notes <NOTES> Required. The release's notes, as ase release notes printed them.
--shelf <FOLDER> Take the clips from this folder of the project instead of the repo's next draft release (also ASE_CLIPS_SHELF).
--project <PROJECT> The game's project folder. Default ..

ase release clips clear

Take released clips off the shelf.

Requires: a sign-in (ase login) or, in CI, a release credential. Without --shelf, GitHub's gh with a token that may change the repo's releases, and GITHUB_REPOSITORY.

Potentially destructive. Deletes the named clips from the repo's next draft release on GitHub, or from the --shelf folder. Deleted clips can't be restored: upload them again.

ase release clips clear [OPTIONS] [NAMES]...
Argument Description
<NAMES>... The clips' names, as ase release clips check printed them.
--shelf <FOLDER> Take the clips from this folder of the project instead of the repo's next draft release (also ASE_CLIPS_SHELF).
--project <PROJECT> The game's project folder. Default ..

ase release stamp

Stamp the registry's ids, the version and the commit into the project.

Requires: a sign-in (ase login) or, in CI, a release credential.

Changes: Writes the version, the commit and the registry's ids into the project's engine files (for Godot, project.godot and export_presets.cfg). It commits nothing.

ase release stamp [OPTIONS] --game <GAME> --version <VERSION> --commit <COMMIT>
Argument Description
--game <GAME> Required. The game's id.
--version <VERSION> Required. The release's version.
--commit <COMMIT> Required. The commit being released.
--project <PROJECT> The game's project folder. Default ..

Examples

ase release stamp --game neon-drift --version 1.2.0 --commit 3f2c1ab

ase release publish

Publish the builds to one target, or check it with --dry-run.

Requires: The release credential of a CI job: a release key (ase studio key) or an OIDC token that one of the studio's trusts (ase studio trust) accepts for the game's repo. .ase-release.json from ase release plan, listing the target. Store targets take only live games and their keys in the job's environment: steam the STEAM_BUILD_* login, steamcmd and openssl; play PLAY_UPLOAD_SERVICE_ACCOUNT; appstore the APPSTORE_UPLOAD_* key and macOS's Transporter. github needs gh and GH_TOKEN.

Potentially destructive. Publishes the release where players or testers get it: brain makes the game's config live and hands its notes to the stores; github creates the v<version> release and tag; downloads publishes the builds; servers makes the server build the one new game servers run; steam sets the build live on the staging branch; play commits it to release.toml's track (internal by default); appstore uploads it to App Store Connect without submitting it. With --dry-run it publishes nothing. ase has no unpublish: release another version over it, or remove it in GitHub's or the store's own console.

ase release publish [OPTIONS] --game <GAME> --version <VERSION> --target <TARGET> --builds <BUILDS> --notes <NOTES>
Argument Description
--game <GAME> Required. The game's id.
--version <VERSION> Required. The release's version.
--target <TARGET> Required. The target, as release.toml names it: brain, github, downloads, servers, steam, play or appstore.
--builds <BUILDS> Required. One folder per export.
--notes <NOTES> Required. The release's notes, as ase release notes printed them.
--shelf <FOLDER> Take the clips from this folder of the project instead of the repo's next draft release (also ASE_CLIPS_SHELF).
--dry-run Check the target, publishing nothing.
--strict Treat a skipped dry-run target as a failed release preflight.
--project <PROJECT> The game's project folder. Default ..

Examples

ase release publish --game neon-drift --version 1.2.0 --target steam --builds builds --notes notes.md --dry-run

ase release config

Publish only brain/game.toml and brain/events.toml, without a build or release version. CI proves it with the game's release credential. On your machine, with no release credential set, it publishes as you, signed in with ase login.

Requires: a sign-in (ase login) with the studio permission manage_games (Owner and Admin). In CI, a release credential for the game instead, as ase release publish takes.

Potentially destructive. Publishes the repo's brain/game.toml and brain/events.toml as the game's live config, which ASE Brain's services read at once. With --dry-run the registry only checks them. Publish the previous files again to go back.

ase release config [OPTIONS] --game <GAME>
Argument Description
--game <GAME> Required. The game's id.
--project <PROJECT> The game's project folder. Default ..
--dry-run Have the registry check the update, publishing nothing.

Examples

ase release config --game neon-drift --dry-run
ase release config --game neon-drift