docs/tutorials/ci/cd-pipelines
Advanced15 minFree (local runner) · Pro (cloud vault)

CI/CD pipelines

Run saved deploy commands from GitHub Actions and similar. Local vault on the runner works on Free; a shared cloud vault needs Pro.

Why use recall in CI/CD?

✓Store complex deployment commands outside your codebase
✓Update deploy commands without changing workflow files
✓Share deploy scripts across multiple repos (Pro cloud vault)
✓Audit who changed what command and when (Team)

01Set up recall in CI

A runner with a local ~/.recall/commands.json can recall run on Free. Authenticating and syncing a shared cloud vault is Pro. In pipelines you typically use the native installer or npm. The VS Code extension is for local editing; it does not replace a CLI in headless runners.

Option A — Free local on the runner (no token)
- name: Install recall run: curl -fsSL https://devkitvault.com/recall/install.sh | sh# Pre-bake ~/.recall/commands.json on the runner, or# check in a vault file and copy it before recall run- name: Deploy run: recall run deploy-app
Option B — Pro cloud vault (token + sync)
- uses: actions/setup-node@v4 with: node-version: 20- run: npm install -g @devkitvault/recall- name: Authenticate (Pro) run: echo "${{ secrets.RECALL_TOKEN }}" > ~/.recall/token- name: Sync cloud vault run: recall sync --pull- name: Deploy run: recall run deploy-app

Option C — VS Code: for local workflows use the recall VS Code extension. See also /docs/install.

02Store your deploy command

recall save "kubectl set image deployment/app app=myrepo/app:latest -n production" --name deploy-app --tags deploy,k8s

03Call it from your pipeline

.github/workflows/deploy.yml
- name: Deploy run: recall run deploy-app

To update the deploy command, change it in recall — no PR needed on your workflow file.

Pro: get your token for CI

Only needed for Option B (shared cloud vault). Free local runners skip this.

recall auth logincat ~/.recall/token# Copy this value to your CI secrets as RECALL_TOKEN
// what's next
→ Save multi-line deploy scripts as snippets→ Load environment variables in CI