Deployment Executables
min

Deployment Executables

Overview:

Use the Solsta deployment executables (in lieu of TeamCity/Jenkins plugins) to deploy and promote release, manage objects, or configure launch entries in your CI/CD pipelines. This article applies to version 4.0.17 of the deployment executables.

Prerequisites

  • Ubuntu 22+: GLIBC 2.35+ and execute permissions on these binaries after extracting:
    • direct_get
    • manifest
    • manifest_promote
    • release_deploy

Credentials file (required for all commands)

Create a JSON file using the format below, replacing the clientId and clientSecret values with those from the machine credentials created in the Solsta client.

{
  "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

Script execution basics

  • Flags use --name=value (use quotes around values if they contain spaces)
  • Always pass --console_credentials=....
  • 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 \  
  --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 \
  --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 \
  --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 and Release 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_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_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

Mark release as protected

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

manifest.exe --object=release --task=update --product_name=Pixel --env_name=Buds \
--repository_name=Pro --release_id=dd0cc40118d7cf0956dc0cd8180c2834b7bbd14fa91fa9dfa1c024ffbe0c5b15 \
--delete_protect=true

A protected release is excluded from cleanup cycles.

Delete a release

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

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

Note that if the release is protected, the API will return a 409 code and this error message: "Cannot delete protected item."

Field reference (plain text, high-impact)

Shared / global

  • --console_credentials: path to your credentials JSON (required)
  • --console_directory: path to downloaded console folder (if using a separate version than the embedded tools)
  • --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

Tips

  • Treat names as case-sensitive; prefer IDs in automation to avoid dupes.
  • Keep repository paths non-overlapping within the same environment.
  • Store creds JSON securely (CI secret store), never in VCS.