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_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 \
--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_runargument 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 downloadedconsolefolder (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)
--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
cleanup (storage pruning)
--product_name+--source_location--dry_runto 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_networkonly while validating. - Store creds JSON securely (CI secret store), never in VCS.
