You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deploys an already-built image (or a static site) to deploys.app by calling the
deployment.deploy API directly. It is a pure bash + curl composite action —
no CLI to download — and exposes every argument the deploy API accepts.
Looking to build and push a Dockerfile in the same step, with keyless OIDC
auth and pull-request previews? Use
deploys-app/build-deploy-action
instead. This action just deploys an image/site you already have.
Usage
This action deploys an image you have already pushed to any registry the
deploy location can pull from — Docker Hub, GHCR, GCR/Artifact Registry, your own
private registry (pass pullSecret), or our built-in registry.deploys.app.
Swap the build-and-push steps below for whatever registry you use; only the
image you hand to the deploy step matters.
The example uses registry.deploys.app, which is convenient because one
service account covers both halves: it logs in to the registry via
docker/login-action (the registry takes the account's email/key as the
docker login username/password directly) and authenticates the deploy — the
same DEPLOYS_AUTH_USER / DEPLOYS_AUTH_PASS. Images live under
registry.deploys.app/<project>/<name>, and the account needs registry.push
plus deploy permission on the project.
Provide credentials one of two ways. A token (Bearer) takes precedence over
service-account Basic auth.
Env var (back-compat)
Input
Description
DEPLOYS_TOKEN
token
Auth token (Bearer)
DEPLOYS_AUTH_USER
authUser
Service-account email (Basic auth)
DEPLOYS_AUTH_PASS
authPass
Service-account key (Basic auth)
The env-var form (set via the step's env: or at the job level) is supported for
backward compatibility. The matching with: inputs are equivalent and override
the env vars if both are set:
Only the inputs you set are sent. Anything left empty is omitted from the
request, and the API treats an omitted field as "no change" — so this action is
safe for both creating and updating a deployment.
Target (required)
Name
Description
project
Project ID
location
Deploy location ID (e.g. gke.cluster-rcf2)
name
Deployment name
Artifact
Name
Description
image
Container image (e.g. ghcr.io/owner/repo@sha256:...). Required for container deployments.
site
Static site release ref (site://bucket/project/name@<sha>). Required for type: Static.
siteManifestDigest
Digest of the static-site manifest (type: Static).
Type & networking
Name
Description
type
WebService, Worker, CronJob, TCPService, InternalTCPService, or Static. Optional on update.
port
Service port. Required for WebService, TCPService, InternalTCPService.
protocol
http, https, or h2c (WebService only).
internal
Run a WebService as internal-only (true/false).
Scaling
Name
Description
minReplicas
Autoscale minimum replicas (0–20).
maxReplicas
Autoscale maximum replicas (0–20).
Environment
env / addEnv take one KEY=VALUE per line. The list inputs take one item
per line or comma-separated.
Name
Description
env
Environment variables (KEY=VALUE per line). Replaces the whole set.
addEnv
Env vars to add to the previous revision.
removeEnv
Env var keys to remove.
envGroups
Env groups to attach (replaces the set). Each must already exist in the project.
addEnvGroups
Env groups to add.
removeEnvGroups
Env groups to remove.
Container
command / args take one token per line (commas and spaces are preserved
within a token).