vertracloud/github-action is the official GitHub
Action that uploads your repository to an existing Vertra Cloud application and restarts it. It
wraps the same CLI binary used locally (vertra deploy), pinned to a release and verified
by SHA-256, and runs on Linux and macOS runners (x64 and ARM64).
The Action updates an existing application — it does not create one. Create the application
first, either in the dashboard or with
POST /v1/apps, then point the workflow at its ID.Prerequisites
- A Vertra Cloud application already created (any plan).
- The application’s ID, shown in the dashboard or via
GET /v1/apps/:id. - A GitHub repository you can add secrets and workflows to.
1. Create an API key with the minimum scopes
Deploying uploads files and, by default, restarts the application afterward. In Dashboard → Settings → API Keys, create a key with:apps:files— required, covers the file upload.apps:write— required unless you setrestart: falsein the workflow (see variations below); covers the restart.
2. Save the key and app ID as secrets
In the repository, go to Settings → Secrets and variables → Actions and add:
Never write the key directly in the workflow file — the Action also masks it in the logs, but the
source of truth should always be a secret.
3. Add the workflow
Save this as.github/workflows/deploy.yml:
.github/workflows/deploy.yml
main and follow the run under the repository’s Actions tab. Files are merged: the
upload overwrites matching paths, but files that only exist in the application (not in the
repository) are left alone — deploying does not delete them.
Inputs
The Action has no outputs: the step succeeds when the deploy succeeds and fails otherwise.
Variations
Update an existing app only on push to main
This is the default behavior of the workflow above — on.push.branches: [main] is what limits
runs to that branch. Pushes to any other branch don’t trigger the job, since GitHub Actions only
runs jobs that match the event filter.
Monorepo — deploy a subfolder
Pointpath at the application’s directory inside the repository; only that directory is
uploaded, so you don’t have to package the whole repo:
.vertraignore file inside that directory for extra exclusion patterns — node_modules,
.git, .github, .vscode, .venv, venv, vendor, target, .next and __pycache__ are
already ignored by default.
Upload without restarting
Setrestart: false to only sync files — useful when you want to trigger the restart separately
(for example, from another step or on a schedule). With this set, the API key only needs the
apps:files scope:
Deploy after your tests
Add the deploy step at the end of an existing job, after your test/build steps, so files are only sent when everything before it passed:Alternative: the deploy webhook
Instead of running the CLI from a workflow, you can enable automatic deploy from GitHub directly on the application: Vertra Cloud registers a webhook on the repository itself and redeploys on every push tomain/master, with no workflow file or secret needed. Use the Action instead when you want
the deploy to run only after CI passes, need to deploy a subfolder, or want the upload to skip the
restart.
Troubleshooting
See the full error code catalog for anything not listed here.