Skip to main content

Lightweight CLI for Recce Cloud operations

Project description

Recce Cloud CLI

Lightweight command-line tool for managing dbt artifacts with Recce Cloud in CI/CD environments.

Overview

The Recce Cloud CLI (recce-cloud) is a standalone tool designed for CI/CD pipelines that need to upload and download dbt artifacts (manifest.json and catalog.json) to/from Recce Cloud without the full recce package dependencies.

Key Features:

  • Lightweight - minimal dependencies for fast CI/CD execution
  • Auto-detection - automatically detects CI platform, repository, and PR/MR context
  • Upload/Download - push and pull dbt artifacts to/from Recce Cloud sessions
  • Flexible authentication - browser-based login, token-based auth, or CI tokens
  • Platform-specific - optimized for GitHub Actions and GitLab CI

Installation

Quick Run (no install needed)

Using uv, you can run recce-cloud directly without installation:

# Run with uvx (creates temporary isolated environment)
uvx recce-cloud upload --type prod
uvx recce-cloud download --prod --target-path target-base

# Short alias also available
uvx --from recce-cloud rcc upload --type prod

Permanent Install

# With uv (recommended)
uv tool install recce-cloud

# With pip
pip install recce-cloud

# With pipx
pipx install recce-cloud

Quick Start

Local Development

# Login to Recce Cloud (opens browser for authentication)
recce-cloud login

# Initialize project binding (interactive)
recce-cloud init

# Check current status
recce-cloud init --status

# Logout
recce-cloud logout

GitHub Actions

- name: Upload to Recce Cloud
  run: recce-cloud upload
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Download from Recce Cloud
  run: recce-cloud download --prod --target-path target-base
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitLab CI

recce-upload:
  script:
    - recce-cloud upload

recce-download:
  script:
    - recce-cloud download --prod --target-path target-base

CI/CD Workflows

Upload Workflow

The recce-cloud upload command automatically creates sessions in supported CI environments.

# Basic upload (auto-detects CI context)
recce-cloud upload

# Custom target path
recce-cloud upload --target-path custom-target

# Override PR number or session type
recce-cloud upload --pr 123 --type pr

# Generic workflow with session name (for other CI platforms)
recce-cloud upload --session-name "PR-123" --yes

Options:

Option Description
--target-path Path to dbt target directory (default: target)
--session-id Session ID for generic workflow
--session-name Session name for human-readable workflow
--pr Override PR/MR number
--type Override session type: pr, prod, dev
--yes Auto-confirm session creation
--dry-run Preview without uploading

Download Workflow

The recce-cloud download command retrieves artifacts from Recce Cloud sessions.

# Download current PR/MR session
recce-cloud download

# Download production/base session
recce-cloud download --prod

# Download to custom path
recce-cloud download --prod --target-path target-base

# Force overwrite existing files
recce-cloud download --force

# Generic workflow with session ID
recce-cloud download --session-id abc123

Options:

Option Description
--target-path Download destination (default: target)
--session-id Session ID for generic workflow
--prod Download production/base session
--force, -f Overwrite existing files
--dry-run Preview without downloading

Authentication

The CLI supports multiple authentication methods (in priority order):

  1. RECCE_API_TOKEN - Environment variable (recommended for CI)
  2. GITHUB_TOKEN - GitHub Actions (must be explicitly set)
  3. CI_JOB_TOKEN - GitLab CI (auto-detected)
  4. Stored credentials - From recce-cloud login

Getting API Tokens

Recce Cloud API Token:

  1. Log in to Recce Cloud
  2. Go to Settings → API Tokens

CI/CD Integration Examples

GitHub Actions - Complete Workflow

name: Recce CI

on:
  pull_request:
    branches: [main]

jobs:
  recce:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"

      - name: Install dependencies
        run: pip install dbt-core dbt-snowflake recce-cloud

      # Download production artifacts for comparison
      - name: Download base artifacts
        run: recce-cloud download --prod --target-path target-base
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # Build current PR
      - name: Build dbt project
        run: |
          dbt deps
          dbt build
          dbt docs generate

      # Upload current PR artifacts
      - name: Upload to Recce Cloud
        run: recce-cloud upload
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitLab CI - Complete Workflow

stages:
  - download
  - build
  - upload

recce-download-base:
  stage: download
  image: python:3.11-slim
  script:
    - pip install recce-cloud
    - recce-cloud download --prod --target-path target-base
  artifacts:
    paths:
      - target-base/
  only:
    - merge_requests

dbt-build:
  stage: build
  image: python:3.11-slim
  script:
    - pip install dbt-core dbt-snowflake
    - dbt deps
    - dbt build
    - dbt docs generate
  artifacts:
    paths:
      - target/
  only:
    - merge_requests

recce-upload:
  stage: upload
  image: python:3.11-slim
  script:
    - pip install recce-cloud
    - recce-cloud upload
  dependencies:
    - dbt-build
  only:
    - merge_requests

Generic CI Platform

For other CI platforms, use session name workflow with your PR/MR number:

export RECCE_API_TOKEN=your_token_here

# Upload PR artifacts (creates session if not exists)
recce-cloud upload --session-name "PR-${PR_NUMBER}" --yes

# Upload production artifacts (in CD pipeline after merge)
recce-cloud upload --type prod --yes

The --session-name option creates a human-readable session that's easy to track. Use --yes to auto-confirm session creation in CI environments.

Environment Variables

Variable Description
RECCE_API_TOKEN Recce Cloud API token
RECCE_SESSION_ID Default session ID for generic workflows
GITHUB_TOKEN GitHub authentication (Actions)
CI_JOB_TOKEN GitLab CI job token (auto-detected)

Additional Commands

Beyond upload and download, the CLI provides:

# List sessions in your project
recce-cloud list

# Delete a session
recce-cloud delete --session-id abc123

# Generate AI review for a session
recce-cloud review --session-id abc123

# Generate PR metrics report
recce-cloud report --since 30d

# Diagnose setup issues
recce-cloud doctor

# Show version
recce-cloud version

Run recce-cloud <command> --help for detailed options.

Troubleshooting

Quick Diagnosis

recce-cloud doctor

This validates login status, project binding, and session availability.

Common Issues

Missing dbt artifacts:

dbt build
dbt docs generate  # Required before upload
recce-cloud upload

Authentication failed:

  • For GitHub Actions: Set GITHUB_TOKEN in env
  • For GitLab CI: CI_JOB_TOKEN is auto-detected
  • For generic CI: Set RECCE_API_TOKEN

Platform not supported:

# Use session name workflow for unsupported CI platforms
recce-cloud upload --session-name "PR-${PR_NUMBER}" --yes

Debug Mode

export RECCE_LOG_LEVEL=DEBUG
recce-cloud upload

Support

License

Apache License 2.0 - See LICENSE file for details.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recce_cloud_nightly-1.32.0.20260608.tar.gz (198.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

recce_cloud_nightly-1.32.0.20260608-py3-none-any.whl (215.0 kB view details)

Uploaded Python 3

File details

Details for the file recce_cloud_nightly-1.32.0.20260608.tar.gz.

File metadata

File hashes

Hashes for recce_cloud_nightly-1.32.0.20260608.tar.gz
Algorithm Hash digest
SHA256 a5145912078a1443d63b9d6ab30d72c98b781cc3c1adcda4d57877a29af1ed73
MD5 77b6f950675a6f8f71cd197d5470610a
BLAKE2b-256 d19f0d8a55c7aac37ea078f4344a411ba04af9d29f52dfc85131c1cbf7840e67

See more details on using hashes here.

File details

Details for the file recce_cloud_nightly-1.32.0.20260608-py3-none-any.whl.

File metadata

File hashes

Hashes for recce_cloud_nightly-1.32.0.20260608-py3-none-any.whl
Algorithm Hash digest
SHA256 7805e3683016a165a6ccd1e2f3d84041061afa3672be8fa94c37e7c39a333970
MD5 1ccf25e7844a9f84fd74311af46deecc
BLAKE2b-256 8ff2f01895ca5fb90c2fbd5f23e13899937d37f576e31f011d767a82b056d498

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page