Skip to content

Add Vercel - Deploy step template#1696

Open
Meanski wants to merge 1 commit into
OctopusDeploy:masterfrom
Meanski:seanw/vercel-deploy
Open

Add Vercel - Deploy step template#1696
Meanski wants to merge 1 commit into
OctopusDeploy:masterfrom
Meanski:seanw/vercel-deploy

Conversation

@Meanski

@Meanski Meanski commented Jul 20, 2026

Copy link
Copy Markdown

Background

Adds a new step template, Vercel - Deploy, which triggers a git-connected deployment of a Vercel project via the Vercel REST API (POST /v13/deployments).

There are currently no Vercel templates in the library. This template is aimed at teams that use Octopus as their release control plane and want Vercel-hosted frontends inside the same governed pipeline: controlled environment promotion instead of push-to-deploy, approvals/change control on production, and coordinated releases where a frontend deploy is one step among several.

What the step does:

  • Triggers a deployment of a Vercel project from its connected GitHub, GitLab, or Bitbucket repository at a given branch or commit SHA.
  • Optionally polls the Vercel API until the deployment reaches the READY state (enabled by default), failing the step if the build errors, is canceled, or a configurable timeout is reached.
  • Sets output variables for downstream steps: DeploymentId, DeploymentUrl, and DeploymentState.
  • The step never accesses the repository directly — Vercel fetches the code using its own git integration — so no git credentials are needed in Octopus, and private repositories work without extra configuration.

Implementation notes:

  • Bash script; requires curl and either jq or python3 on the worker (falls back from jq to python3 for JSON encoding/parsing).
  • The API token parameter is a Sensitive control type with an empty default; help text recommends binding it to a sensitive project variable.
  • Required parameters are validated with non-zero exit codes on all failure paths, and Vercel API errors are surfaced with their code and message.

Results

A new Vercel - Deploy step template under a new vercel category.

Before

n/a — new step template; no Vercel templates exist in the library today.

After

Verified end-to-end from an Octopus Cloud instance against a live Vercel project (GitHub git source). Log excerpt from a successful deployment:

Triggering Vercel deployment...
  Project : vercel-deploy-test
  Provider: github
  Ref     : main
  Target  : production

Deployment created.
  ID    : dpl_...
  State : INITIALIZING
  URL   : https://vercel-deploy-test-....vercel.app

Waiting up to 600s for the deployment to become READY...
  [0s] State: INITIALIZING
  [10s] State: BUILDING
  [20s] State: READY

Deployment is READY: https://vercel-deploy-test-....vercel.app

Error paths verified: invalid token (Vercel 403 surfaced with code and message, step fails with a non-zero exit code) and missing required parameters. GitLab and Bitbucket source payloads were validated against the Vercel API reference but not exercised against live projects.

gulp tests passes locally (4 specs, 0 failures).

Pre-requisites

  • Id should be a GUID that is not 00000000-0000-0000-0000-000000000000
    • NOTE If you are modifying an existing step template, please make sure that you do not modify the Id property (updating the Id will break the Library sync functionality in Octopus).
  • Version should be incremented, otherwise the integration with Octopus won't update the step template correctly
  • Parameter names should not start with $
  • Step template parameter names (the ones declared in the JSON, not the script body) should be prefixed with a namespace so that they are less likely to clash with other user-defined variables in Octopus (see this issue). For example, use an abbreviated name of the step template or the category of the step template).
  • LastModifiedBy field must be present, and (optionally) updated with the correct author
  • The best practices documented here have been applied
  • If a new Category has been created:
    • An image with the name {categoryname}.png must be present under the step-templates/logos folder
    • The switch in the humanize function in gulpfile.babel.js must have a case statement corresponding to it

@CLAassistant

CLAassistant commented Jul 20, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@github-actions

Copy link
Copy Markdown

Review this PR in Hyponome for a side-by-side diff of the step-template JSON and any embedded scripts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants