Deploying
Packages and plugins must be deployed before they can be used.
New versions of your project automatically become the “default” version when new instances are created. Unless an instance specifically requests a version, this new default version will be used.
Deploying with the Steamship CLI
You can deploy a package or plugin with the Steamship CLI with single command from the project root (make sure your python environment is active):
ship deploy
If you don’t have a steamship.json
yet, the deploy process will create one. After the command exits, wait a few minutes for your new infrastructure to be ready in the cloud.
New instances of your project will then be directed to the new version.
Deploying via GitHub Actions
Each package and plugin project is created from a a template that has been pre-configured to auto-deploy within GitHub Actions when certain situations occur.
Before you deploy, make sure the handle
and version
fields in your steamship.json
file are set:
- The
handle
property ofsteamship.json
- The
version
property ofsteamship.json
Production deployments occur upon:
- Pushes to
main
- Pushes to SemVer-style tags, prefixed with
v
(vA.B.C
)
Staging deployments occur upon:
- Pushes to
staging
When pushing to a SemVer-style tag, the tag’s version must match the
version contained within steamship.json
. Note that while the GitHub
branch must start with v
, the version identifier in
steamship.json
should omit it.
When pushing to main
or staging
, the version contained in
steamship.json
is used.
Automated Deployment Setup
Automated deployments can only occur if you have set the following GitHub secrets:
- The
STEAMSHIP_KEY
GitHub repository secret - The
STEAMSHIP_API_BASE
GitHub repository secret (optional) - The
STEAMSHIP_KEY_STAGING
GitHub repository secret - The
STEAMSHIP_API_BASE_STAGING
GitHub repository secret (optional)
Setting the following variable will additionally trigger Slack notifications upon automated deployments:
- The
STEAMSHIP_SLACK_DEPLOYMENT_WEBHOOK
Slack notification webhook URL (optional)
Modifying or disabling automated deployments
Automated deployment is triggered by the GitHub Actions workflow in
.github/workflows/deploy.yml
. This file, in turn, invokes the
steamship-core/deploy-to-steamship@main
action.
To modify or disable automated deployments, remove, comment out, or modify that file.
Troubleshooting Deployments
The deployment fails because the version already exists
This means the version specified in steamship.json
has already been
registered with Steamship. Simply update the version in
steamship.json
to an identifier that has not yet been used.
The deployment fails because the tag does not match the manifest file
This means you have tried to push a branch with a semver-style tag (like
v1.2.3
), resulting in a version deployment whose name must match
that tag without the v
prefix (1.2.3
). Make sure the version
field of steamship.json
matches this string.
For example, if you are deploying branch v6.0.0
, the version
field of your steamship.json
file must be 6.0.0
The deployment fails with an authentication error
If you’re deploying from GitHub Actions, make sure you’re set your
STEAMSHIP_KEY
in your GitHub secrets. If you’re deploying from your
local machine, make sure you’ve authenticated with the Steamship CLI.