You asked for review app help. These commands are generated by cpflow.
+review-app-deploy
- Creates the review app if it does not exist
- Builds the PR commit image
- Deploys the image and comments with the review URL
- Comment body must be exactly
+review-app-deploy, with no surrounding text or trailing spaces. A single trailing newline from GitHub's comment editor is accepted. Comments likeplease +review-app-deploy nowor+review-app-deploy(with a trailing space) silently no-op.
+review-app-delete
- Deletes the review app when the PR is done
- This also runs automatically when the PR closes
- Comment body must be exactly
+review-app-delete, with no surrounding text or trailing spaces. A single trailing newline from GitHub's comment editor is accepted. Same command-match rule as+review-app-deploy.
+review-app-help
- Posts this message on the PR.
- Comment body must be exactly
+review-app-help, with no surrounding text or trailing spaces. A single trailing newline from GitHub's comment editor is accepted. Same command-match rule as+review-app-deploy.
- Review apps are opt-in and created with
+review-app-deploy - New commits redeploy existing review apps automatically
- Pushes to the staging branch deploy staging automatically
- Promotion to production is manual via the Actions tab
- A nightly workflow removes stale review apps
Advanced: GitHub Actions secrets and variables
| Name | Required | Notes |
|---|---|---|
CPLN_TOKEN_STAGING |
yes | Service-account token scoped to the staging Control Plane org on controlplane.com. |
CPLN_TOKEN_PRODUCTION |
yes (for promote) | Service-account token scoped to the production Control Plane org on controlplane.com. |
DOCKER_BUILD_SSH_KEY |
optional | Private SSH key used when Docker builds fetch private deps via RUN --mount=type=ssh. |
| Name | Required | Notes |
|---|---|---|
CPLN_ORG_STAGING |
yes | Control Plane org on controlplane.com for staging and review apps. |
CPLN_ORG_PRODUCTION |
yes (for promote) | Control Plane org on controlplane.com for production. |
STAGING_APP_NAME |
yes | App name in controlplane.yml used as the staging deploy target. |
PRODUCTION_APP_NAME |
yes (for promote) | App name in controlplane.yml used as the production deploy target. |
REVIEW_APP_PREFIX |
yes | Prefix for per-PR review app names (e.g. review-app). |
REVIEW_APP_DEPLOYING_ICON_URL |
optional | Custom image URL for the animated deploying icon in review-app PR comments. Set to none to use the text fallback icon. |
STAGING_APP_BRANCH |
optional | Custom staging branch. Custom branches must also appear in cpflow-deploy-staging.yml's push filter. |
PRIMARY_WORKLOAD |
optional | Workload polled for health and rollback (defaults to rails). |
DOCKER_BUILD_EXTRA_ARGS |
optional | Newline-delimited extra docker build tokens (e.g. --build-arg=FOO=bar). |
DOCKER_BUILD_SSH_KNOWN_HOSTS |
optional | SSH known_hosts entries when SSH build hosts are not GitHub.com. |
HEALTH_CHECK_ACCEPTED_STATUSES |
optional | Space-separated HTTP statuses considered healthy on promote (default 200 301 302). |
CPLN_CLI_VERSION |
optional | Pin a specific @controlplane/cli version; falls back to the action default when unset. |
CPFLOW_VERSION |
optional | Runtime gem-install override. When unset, cpflow is built from the pinned upstream workflow ref. When set, use the RubyGems version without a leading v. |
Advanced: testing changes to generated workflows
When iterating on the generated workflow YAML on a PR branch, comment-triggered runs (+review-app-deploy, +review-app-delete, +review-app-help) execute the workflow code from the repository's default branch — not your PR branch. To exercise the PR-branch workflow code before merging, dispatch the workflow manually with gh:
gh workflow run cpflow-deploy-review-app.yml --ref <your-pr-branch> -f pr_number=<pr-number>
gh workflow run cpflow-delete-review-app.yml --ref <your-pr-branch> -f pr_number=<pr-number>
gh workflow run cpflow-help-command.yml --ref <your-pr-branch> -f pr_number=<pr-number>workflow_dispatch runs use the workflow file from the --ref you pass, so this is the supported way to test PR-branch workflow edits before merge. After merge, comment triggers go back to running the default-branch workflow code as usual.