Skip to content
LogoLogo

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:

createos 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

createos deploy --project $CREATEOS_PROJECT_ID

Set environment variables from CI secrets

createos env set \
  DATABASE_URL=$DB_URL \
  API_KEY=$API_KEY \
  --project $CREATEOS_PROJECT_ID \
  --environment $CREATEOS_ENV_ID

Push a local .env file

createos env push --file .env.production --project $ID --environment $ID --force

Check deployment status

createos status --project $ID --output json

Delete resources without prompts

createos domains delete --project $ID --domain $DOMAIN_ID --force
createos deployments cancel --project $ID --deployment $DEPLOY_ID --force
createos cronjobs delete --project $ID --cronjob $CRON_ID --force

JSON output

Add --output json or -o json to any list or get command:

# Get project list as JSON
createos projects list --output json
 
# Parse with jq
createos status --output json | jq '.project.status'
 
# Use in scripts
DEPLOY_URL=$(createos deployments list -o json | jq -r '.[0].extra.endpoint')

GitHub Actions example

name: Deploy to CreateOS
on:
  push:
    branches: [main]
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      - name: Install CreateOS CLI
        run: curl -sfL https://raw.githubusercontent.com/NodeOps-app/createos-cli/main/install.sh | sh -
 
      - name: Authenticate
        run: createos login --token
        env:
          CREATEOS_API_KEY: ${{ secrets.CREATEOS_API_KEY }}
 
      - name: Deploy
        run: createos deploy --project ${{ vars.PROJECT_ID }}

Environment variables

VariableDescription
CREATEOS_API_URLOverride API base URL (default: https://api-createos.nodeops.network)
CREATEOS_DEBUGSet to true to enable debug logging
CREATEOS_OUTPUTSet 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
# This works in CI (explicit flags)
createos env list --project abc-123 --environment prod-456
 
# This fails in CI (would need interactive selection)
createos env list
# Error: non-interactive mode: use --project and --environment flags