Skip to main content
Use GitHub as the source of truth for Deepline Play code. Pull requests validate changes, and merges to main publish them to Deepline. These instructions work for a human or coding agent.
For GitHub.com, use Git deploys unless your organization cannot install the Deepline GitHub App. This Actions workflow is the fallback for restricted organizations and GitHub Enterprise Server.

Deploy a directory of Plays

deepline plays deploy takes a directory, works out which Plays it contains, and deploys them as one unit: every changed Play is validated and registered, then promoted together, so either all of them go live or none do. Unchanged Plays are skipped. It does not use git. Check the code out however you like first — in GitHub Actions that is actions/checkout:
The directory’s deepline.json selects the Plays (default **/*.play.ts). Pass a path to deploy one part of a monorepo (deepline plays deploy ./growth) and --manifest <file> for a different manifest. Any CI works the same way: the command only needs the files on disk and DEEPLINE_API_KEY. Record where the code came from with --repo, --ref, and --commit. They are provenance on the deployment receipt, nothing more:
Each deploy prints its result, and the command exits non-zero when the deploy fails. A warning (for example, a Play another linked repository owns) still exits zero; it is printed with the Play. Look a deployment up again from anywhere in the workspace:
Deleting a Play file does not retire the live Play; decommission its schedules, webhooks, and callers separately. Each Play is built with the Deepline SDK, so a new SDK release gives Plays you didn’t change a new version on their next deploy. Those are marked SDK updated: the Play’s code and everything it imports are unchanged.

A Play a linked repository owns

Deploying a directory that contains a Play a linked repository deploys is allowed: the version goes live and the Play is marked drifted from that repository, because the next push from it will replace what you just deployed.
  • Still using the repository? Push the same change from it. That deploy wins and clears the drift.
  • Done with the repository? Unlink it. An unlinked repository owns nothing, so its Plays are released: they keep their live version and stop showing the repository as their source or being marked drifted from it.
Unlinking never stops a live Play; it only stops the repository deploying.

1. Add Play source to the repository

Commit each Deepline Play as a *.play.ts file. Each file must contain one default-exported definePlay and a top-level description. Do not put multiple deployable Plays in one file. The files can live anywhere in the repository. Keep code and non-secret configuration in GitHub. Store provider credentials in Deepline. Do not commit customer data, credentials, or live provider responses.

2. Pin the Deepline CLI

Choose a tested version:
Set DEEPLINE_CLI_VERSION as a GitHub Actions repository variable. Pinning the CLI prevents an unreviewed release from changing deployment behavior.

3. Configure Deepline credentials

Add these GitHub Actions secrets: Restrict the production environment to main. Add required reviewers if publication needs a separate approval. Each key must identify one Deepline workspace. Do not use a production key for pull-request validation or choose the target workspace from pull-request input. Configure each workspace with the provider credentials its Plays use and active Play secrets for every name those Plays declare. Use non-production credentials in the validation workspace and production credentials in the production workspace. This workflow supports pull requests whose branches live in the same repository. GitHub withholds repository secrets from forked pull requests. To validate a fork, move the reviewed commit to a maintainer-controlled branch; do not expose secrets with pull_request_target.

4. Add the workflow

Create .github/workflows/deepline.yml:
The workflow checks every tracked *.play.ts file. After a merge or manual run, it republishes every tracked Play so changes to imported helpers and configuration are included. --expected-artifact prevents publication if a file differs from the artifact that was just checked.

5. Test and operate the workflow

Open a pull request that changes a Play and confirm Validate Plays passes. Merge it, then confirm Publish Plays succeeds in GitHub Actions. Set PLAY_NAME to the saved Play you just published, then verify the live revision:
For later changes, repeat the same pull request, validation, merge, and verification flow. Test changed runtime behavior with approved synthetic input in an internal or test workspace. Do not publish production Plays from a workstation during normal development. To roll back, copy the previous immutable revision ID from plays versions, then promote it:
Then revert or fix the GitHub source so the repository and live revision agree again.
Keep production credentials out of pull-request jobs. Deleting a *.play.ts file does not disable the live Play; decommission its schedules, webhooks, and callers separately.

Play SDK quickstart

Create, check, and run a custom Play.

Production integration

Integrate published Plays into a production application.