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.20260405.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.20260405-py3-none-any.whl (215.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for recce_cloud_nightly-1.32.0.20260405.tar.gz
Algorithm Hash digest
SHA256 f9a4fab71cc8a09eaadef9987eaab7d5e22cde65e6a88f749ba77010b770fa0e
MD5 2308393c1067944339098cb523a0a61b
BLAKE2b-256 b1ec1aa98a80865283bdfb24fbed26af228ec792888108700dbf6e2573d12cb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for recce_cloud_nightly-1.32.0.20260405-py3-none-any.whl
Algorithm Hash digest
SHA256 3cb86d9d306cdde1e91d6c013fe0a988658bcba0595ab9126cd339b2af5699cb
MD5 6265c81f1bfb1b14e6724c1c2d921c97
BLAKE2b-256 1d0cbf8d49eac62f443e59c67fc47ef7e1bba4079b5e02e9229f009304bc2858

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