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_networkand--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_locationis 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=trueA 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 downloadedconsolefolder (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)
--objectone of:product,env,repository,release,history,update_path,launch--taskdepends on object:create,get,update,delete; forlaunch:add,delete,get,set,update- Launch entries: repeat
--launch_name,--launch_executable,--launch_argumentsas needed - Environment creation needs
--publish_locationand--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.
