diff --git a/.github/workflows/recce-ci.yml b/.github/workflows/recce-ci.yml new file mode 100644 index 0000000..64744cf --- /dev/null +++ b/.github/workflows/recce-ci.yml @@ -0,0 +1,77 @@ +name: Recce CI + +on: + pull_request: + branches: [main] + +env: + # Snowflake connection (configure these secrets in your repository settings) + SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} + SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }} + SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }} + SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }} + SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }} + SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }} + SNOWFLAKE_SCHEMA: ${{ secrets.SNOWFLAKE_SCHEMA }} + +jobs: + recce-ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install uv + uses: astral-sh/setup-uv@v5 + + - name: Install dependencies + run: | + uv venv + source .venv/bin/activate + uv pip install dbt-snowflake recce-cloud + + - name: Set up dbt profiles + run: | + mkdir -p ~/.dbt + cat > ~/.dbt/profiles.yml << EOF + default: + target: dev + outputs: + dev: + type: snowflake + account: ${{ secrets.SNOWFLAKE_ACCOUNT }} + user: ${{ secrets.SNOWFLAKE_USER }} + password: ${{ secrets.SNOWFLAKE_PASSWORD }} + role: ${{ secrets.SNOWFLAKE_ROLE }} + database: ${{ secrets.SNOWFLAKE_DATABASE }} + warehouse: ${{ secrets.SNOWFLAKE_WAREHOUSE }} + schema: ${{ secrets.SNOWFLAKE_SCHEMA }} + threads: 4 + EOF + + - name: Download production baseline from Recce Cloud + run: | + source .venv/bin/activate + recce-cloud download --prod --target-path target-base + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Run dbt + run: | + source .venv/bin/activate + dbt deps + dbt build + dbt docs generate + + - name: Upload PR artifacts to Recce Cloud + run: | + source .venv/bin/activate + recce-cloud upload + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/recce-prod.yml b/.github/workflows/recce-prod.yml new file mode 100644 index 0000000..fc5aa99 --- /dev/null +++ b/.github/workflows/recce-prod.yml @@ -0,0 +1,71 @@ +name: Recce Production Baseline + +on: + push: + branches: [main] + workflow_dispatch: + +env: + # Snowflake connection (configure these secrets in your repository settings) + SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} + SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }} + SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }} + SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }} + SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }} + SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }} + SNOWFLAKE_SCHEMA: ${{ secrets.SNOWFLAKE_SCHEMA }} + +jobs: + recce-prod: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install uv + uses: astral-sh/setup-uv@v5 + + - name: Install dependencies + run: | + uv venv + source .venv/bin/activate + uv pip install dbt-snowflake recce-cloud + + - name: Set up dbt profiles + run: | + mkdir -p ~/.dbt + cat > ~/.dbt/profiles.yml << EOF + default: + target: dev + outputs: + dev: + type: snowflake + account: ${{ secrets.SNOWFLAKE_ACCOUNT }} + user: ${{ secrets.SNOWFLAKE_USER }} + password: ${{ secrets.SNOWFLAKE_PASSWORD }} + role: ${{ secrets.SNOWFLAKE_ROLE }} + database: ${{ secrets.SNOWFLAKE_DATABASE }} + warehouse: ${{ secrets.SNOWFLAKE_WAREHOUSE }} + schema: ${{ secrets.SNOWFLAKE_SCHEMA }} + threads: 4 + EOF + + - name: Run dbt + run: | + source .venv/bin/activate + dbt deps + dbt build + dbt docs generate + + - name: Upload production baseline to Recce Cloud + run: | + source .venv/bin/activate + recce-cloud upload --type prod + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}