Deployment Executables
min

Deployment Executables

Overview

Use the Solsta deployment executables (in lieu of TeamCity/Jenkins plugins) to deploy, promote, configure launch entries, and clean up releases in your CI/CD pipelines.

Prerequisites

  • .NET 8 runtime or SDK
  • Solsta console tools (downloaded via direct_get)
  • Ubuntu 22+: GLIBC 2.35+ and execute permissions on these binaries after extracting:
    • direct_get/direct_get
    • manifest/manifest
    • release_deploy/release_deploy
    • manifest_promote/manifest_promote
    • cleanup/cleanup

Credentials file (required for all commands)

Create a JSON file using the format below, replacing the clientId and clientSecret values with those provided by Solsta support.

{
  "consoleCredentials": {
    "clientId": "super",
    "clientSecret": "secret",
    "grant": "clientCredentials"
  }
}


Note the path to this file as you'll use it in subsequent steps via the console_credentials argument. Example: 

--console_credentials=c:/solsta/deploy/solsta_auth.json

Get the Solsta console tools (required for deploy/promote/cleanup)

The Solsta console tools are used for scanning source files and uploading data during deployments. Use direct_get from a terminal with the arguments below to download the console tools:

direct_get --version=7.2.49 \
  --target_directory=c:/solsta/deploy/7.2.49/ \
  --component=console \
  --console_credentials=c:/solsta/deploy/solsta_auth.json

Note the path where you downloaded the console tools, as you'll use it in the console_directory argument. Example: 

--console_directory=c:/solsta/deploy/7.2.49/console


Compatibility (June 2024):
Deploy Executables 3.10.0 ↔ console tools 7.2.49. Don’t change versions unless Solsta support tells you to.

Script execution basics

  • Flags use --name=value (spaces are fine in quoted values)
  • Always pass --console_credentials=....
  • For deploy/promote/cleanup also pass --console_directory=....
  • Recommended for troubleshooting: --debug_network and --log_path=/path/to/log.log.
  • Structured logs: add --log_json.

Always include --process_default=API on deploy and promote so cloud delta creation runs when enabled.

Sample usage (copy–paste starters)


Deploy to a specific product/environment/repository

release_deploy \
  --console_directory=/home/qa/ssn/direct/7.2.49/console \
  --process_default=API \
  --console_credentials=/home/qa/solsta/deployscripts/solsta_auth.json \
  --product_name=Pixel \
  --env_name=Buds \
  --repository_name=Pro \
  --source=/home/qa/ssn/source/1.0.0/ \
  --version=1.0.0 \
  --notes_location="https://github.com/pixel/buds/releases/1.0.0"

Deploy and autocreate missing objects (product/env/repo)

release_deploy \
  --console_directory=/home/qa/ssn/direct/7.2.49/console \
  --process_default=API \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json \
  --autocreate \
  --location \
  --product_name=Cars \
  --env_name=Honda \
  --repository_name=Accord \
  --source=/home/qa/ssn/source/1.0.0/ \
  --version=1.0.0 \
  --notes_location=https://github.com/honda/accord/releases/tag/1.0.0

Deploy with sync + exclude patterns

release_deploy \
  --console_directory=/home/qa/ssn/direct/7.2.49/console \
  --process_default=API \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json \
  --product_name=Pixel \
  --env_name=Buds \
  --repository_name=Pro \
  --source=/home/qa/ssn/source/2.0.0/ \
  --version=2.0.0 \
  --notes_location="https://github.com/pixel/buds/releases/tag/2.0.0" \
  --sync_attributes \
  --sync_timestamps \
  --exclude="bin/mac64/*;bin/lin64/host"


Versions & notes: Always set --version (friendly semantic or build number). --notes_location is a link associated with the release in the Solsta Desktop Client.

Promote a release between environments

manifest_promote \
  --console_directory=/home/qa/ssn/direct/7.2.49/console \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json \
  --process_default=API \
  --source_product_name=Pixel \
  --source_env_name=BudsDev \
  --source_repository_name=Pro \
  --product_name=Pixel \
  --env_name=BudsQA \
  --repository_name="Pro"

Promote a different release within the same environment (pin by version)

manifest_promote \
  --console_directory=/home/qa/ssn/direct/7.2.49/console \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json \
  --process_default=API \
  --product_name=Pixel \
  --env_name=Buds \
  --repository_name=Pro \
  --release_version=2.0.0

Configure launch entries for an environment

Launch buttons can also be managed in the Solsta Desktop Client, but those UI edits do NOT auto-sync to these executables. Always pass the full, current set when using manifest --object=launch --task=set.

manifest \
  --object=launch \
  --task=set \
  --product_name=Cars \
  --env_name=Honda \
  --launch_name="Start Engine" \
  --launch_executable=vtec.exe \
  --launch_arguments="--1.4 --DOHC" \
  --launch_name="Downshift" \
  --launch_executable="{installDirectory}bin/shift.exe" \
  --launch_arguments="/rpms /increase" \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

InstallDirectory macro:
If the file being launched is in a sub-directory from the root of where the environment is installed, you will need to prepend the file path with the {installDirectory} macro.

Create objects


Product

manifest --object=product --task=create \
  --product_name=Cars --description=Automobiles \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

Environment

Creating environments requires values for the following arguments:

  • publish_location – Delivery URL used by Solsta client when downloading or updating environments
  • source_location – Bucket URL for Solsta storage
  • The location values are visible from creating an environment in the Solsta Desktop Application and then viewing the environment details. Alternatively, you can ask Solsta support for those values.
manifest --object=env --task=create \
  --product_name=Cars --env_name=Toyota --description=Reliable \
  --publish_location=https://dunder.akamaized.net/ \
  --source_location=s3://ssn-dunder/ \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

Avoid Duplicate Friendly Names for Products and Environments
Have a system in place to avoid duplicate friendly names for Products and Environments, as duplicates can cause errors for deployments and promotions. Repositories under separate environments can have the same name since they are child objects. Example: gameclient repo in Dev environment and gameclient repo in QA environment.

Repository

manifest --object=repository --task=create \
  --product_name=Cars --env_name=Toyota \
  --repository_name=Camry --description=1997 \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json
# add --optional=true to mark repo as optional

List & delete

List repositories

manifest --object=repository --task=get \
  --product_name=Pixel --env_name=Buds \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

List releases

manifest --object=release --task=get \
  --product_name=Pixel --env_name=Buds --repository_name=Pro \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

Delete a release

Deleting a release requires its release ID. This can be retrieved from the Solsta Desktop Application or the “List releases” command.

If your goal is to delete files that have been deployed to your storage bucket, see details below for cleanup executable usage.

manifest --object=release --task=delete \
  --product_name=Pixel --env_name=Buds --repository_name=Pro \
  --release_id=2b1ce5e8...ffb21 \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json

Cleanup (storage deletion)

Compares stored “piece” files to what live releases require; deletes unused pieces. Depending on the size and volume of the releases you have deployed, this can be a lengthy process as it reads and compares all the data for that product on the storage bucket. We recommend this process to be run only as needed at periodic intervals.

Notes:

  • Requires at least one release in Product → Env → Repo → Release to compute usage
  • For mass deletion: delete entire Repos or Environments within the product, then run cleanup to free up storage
  • Skips files <24h old (protects in-flight deploys)
  • Upcoming feature: release lifecycle rules will be implemented to manage storage use. This will coincide with the ability to exclude releases from expiration (release pinning).
  • Use dry_run argument to output pieces that would be deleted without actually deleting them
cleanup \
  --console_credentials=/home/qa/ssn/deployscripts/solsta_auth.json \
  --console_directory=/home/jenkins/ssn/direct/7.2.49/console \
  --product_name=DS_3.10.0 \
  --source_location=s3://ssn-solsta/ \
  --dry_run \
  --debug_network \
  --log_path=/home/jenkins/ssn/deployscripts/3.10.0/logs/cleanup_dry.log

Field reference (plain text, high-impact)

Shared / global

  • --console_credentials: path to your credentials JSON (required)
  • --console_directory: path to downloaded console folder (deploy/promote/cleanup required)
  • --process_default=API: use cloud delta creation for deploy/promote (recommended)
  • --debug_network, --log_path, --log_json: troubleshooting/observability
  • --location: pull location credentials; leave enabled unless told otherwise

release_deploy (deploy a directory)

  • --product_name, --env_name, --repository_name (or *_id)
  • --source: directory or bucket path to assets (trail slash for dirs)
  • --version: friendly release string (strongly recommended)
  • --notes_location: URL to release notes
  • --autocreate: create missing product/env/repo
  • --include="...;...", --exclude="...;..." with * and !
  • --sync_attributes, --sync_timestamps, --hidden_files, --executable_files

manifest_promote (promote an existing release)

  • --source_product_name, --source_env_name, --source_repository_name (or IDs)
  • --product_name, --env_name, --repository_name (target)
  • --release_version (optional if promoting “current” from source)
  • Auto-copies between buckets if locations differ; creates delta paths if enabled on target.

manifest (CRUD, launch, list)

  • --object one of: product, env, repository, release, history, update_path, launch
  • --task depends on object: create, get, update, delete; for launch: add, delete, get, set, update
  • Launch entries: repeat --launch_name, --launch_executable, --launch_arguments as needed
  • Environment creation needs --publish_location and --source_location

cleanup (storage pruning)

  • --product_name + --source_location
  • --dry_run to preview deletions

Tips

  • Treat names as case-sensitive; prefer IDs in automation to avoid dupes.
  • Always pin console tools and executable versions; don’t “latest” your way into a broken pipeline.
  • Keep repository paths non-overlapping within the same environment.
  • Start with --dry_run (cleanup) and enable --debug_network only while validating.
  • Store creds JSON securely (CI secret store), never in VCS.
DOs
DONTs
Pro Tips