CI/CD Usage
Every CreateOS CLI command works in non-interactive mode. Use flags instead of prompts, --output json for machine-readable output, and --force to skip confirmation prompts.
Authentication in CI
Use an API token instead of browser OAuth:
Bash1createos login --token
Set the token via environment variable or pipe it in. Get your API key from Profile Settings > API Keys in the CreateOS dashboard.
Common CI commands
Deploy
Bash1createos deploy --project $CREATEOS_PROJECT_ID
Set environment variables from CI secrets
Bash1createos env set \2 DATABASE_URL=$DB_URL \3 API_KEY=$API_KEY \4 --project $CREATEOS_PROJECT_ID \5 --environment $CREATEOS_ENV_ID
Push a local .env file
Bash1createos env push --file .env.production --project $ID --environment $ID --force
Check deployment status
Bash1createos status --project $ID --output json
Delete resources without prompts
Bash1createos domains delete --project $ID --domain $DOMAIN_ID --force2createos deployments cancel --project $ID --deployment $DEPLOY_ID --force3createos cronjobs delete --project $ID --cronjob $CRON_ID --force
JSON output
Add --output json or -o json to any list or get command:
Bash1# Get project list as JSON2createos projects list --output json34# Parse with jq5createos status --output json | jq '.project.status'67# Use in scripts8DEPLOY_URL=$(createos deployments list -o json | jq -r '.[0].extra.endpoint')
GitHub Actions example
YAML1name: Deploy to CreateOS2on:3 push:4 branches: [main]56jobs:7 deploy:8 runs-on: ubuntu-latest9 steps:10 - uses: actions/checkout@v41112 - name: Install CreateOS CLI13 run: curl -sfL https://raw.githubusercontent.com/NodeOps-app/createos-cli/main/install.sh | sh -1415 - name: Authenticate16 run: createos login --token17 env:18 CREATEOS_API_KEY: ${{ secrets.CREATEOS_API_KEY }}1920 - name: Deploy21 run: createos deploy --project ${{ vars.PROJECT_ID }}
Environment variables
| Variable | Description |
|---|---|
CREATEOS_API_URL | Override API base URL (default: https://api-createos.nodeops.network) |
CREATEOS_DEBUG | Set to true to enable debug logging |
CREATEOS_OUTPUT | Set to json for JSON output on all commands |
Non-interactive behavior
When the CLI detects a non-TTY environment (piped output, CI runner), it:
- Skips all interactive prompts
- Requires explicit flags for any selection (project, environment, deployment)
- Returns clear error messages if required flags are missing
- Outputs JSON by default when piped
Bash1# This works in CI (explicit flags)2createos env list --project abc-123 --environment prod-45634# This fails in CI (would need interactive selection)5createos env list6# Error: non-interactive mode: use --project and --environment flags