---
title: "CI/CD"
description: "Backups from pipelines: trigger them, wait on them, or upload from a job."
url: "https://saved.sh/docs/cicd"
---

A pipeline meets saved.sh in one of three ways: **trigger** an existing backup and move on,
**trigger and wait** so a deploy gates on a fresh copy, or **submit** an artifact the job
itself produced as a manual backup. All three run on an API key with exactly the
permissions the job needs, never on a person's session.

<Cards>
  <Card href="/docs/cicd/github-actions" title="GitHub Actions" description="The action, and the raw sctl fallback." />

  <Card href="/docs/cicd/gitlab-ci" title="GitLab CI" description="The same three patterns in .gitlab-ci.yml." />

  <Card href="/docs/cicd/other-ci" title="Any other CI" description="sctl and an API key is the whole integration." />

  <Card href="/docs/cicd/api-keys" title="API keys for CI" description="Scoping, storage and rotation." />
</Cards>
