Skip to main content
Version: Next

CI/CD Deployment

Spice deployments can be automated through continuous integration and delivery (CI/CD) pipelines. The right approach depends on the target environment:

  • Spice Cloud Platform — use the spicehq/spice-cloud-deploy-action GitHub Action to deploy a Spicepod from a repository directly to a Spice Cloud app.
  • Self-hosted Kubernetes — use Argo CD or Flux to reconcile cluster state from a Git repository against the Spice Helm chart.
  • Cloud VMs / containers (AWS, Azure, Docker) — invoke the standard provider tooling (CloudFormation, ARM/Bicep, docker run/Compose) from any pipeline runner. See the AWS, Azure, or Docker guides for the deployment artifacts to invoke.

Deploy a Spicepod with GitHub Actions​

The spicehq/spice-cloud-deploy-action GitHub Action deploys a Spicepod manifest to a Spice Cloud Platform app on each pipeline run.

Prerequisites​

  • A Spice Cloud account.
  • An OAuth client created from the Spice Cloud Portal. Two repository secrets — SPICE_CLIENT_ID and SPICE_CLIENT_SECRET — store its credentials.
  • A spicepod.yaml checked into the repository.

Minimal workflow​

name: Deploy Spicepod
on:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: spicehq/spice-cloud-deploy-action@v1
with:
client-id: ${{ secrets.SPICE_CLIENT_ID }}
client-secret: ${{ secrets.SPICE_CLIENT_SECRET }}
app-name: my-app
spicepod: spicepod.yaml

Common options​

InputPurpose
app-name or app-idTarget Spice Cloud app. One is required.
spicepodPath to the Spicepod manifest. Defaults to spicepod.yaml.
regionRequired when create-app-if-missing provisions a new app (for example, us-east-1).
create-app-if-missingBoolean. Creates the app on first deploy.
secretsYAML or JSON map of app-level secrets to set on the deployment.
tagsYAML or JSON map of metadata labels.
test-sql, test-chat, test-searchPost-deploy smoke checks against the deployed app.
wait-for-completionPoll until the deployment finishes. Defaults to true.
timeout-secondsMaximum time to wait when polling. Defaults to 600.

The action emits app-id, app-url, deployment-id, deployment-status, and test-results outputs that downstream steps can consume.

For the full input and output reference, see the action's README.

Kubernetes GitOps​

For Spice deployments on a self-hosted Kubernetes cluster, manage the Spice Helm chart declaratively from a Git repository:

  • Argo CD — Application manifests reconciled by the Argo CD controller.
  • Flux — HelmRelease resources reconciled by the Flux toolkit.

Both guides include end-to-end manifests targeting the official chart, including upgrade and rollback patterns.