Pre-commit

This package is best utilised when used as in conjunction with pre-commit hooks. Follow the installation guide below to set this up if needed.

Each contract operation is set up to take a list files that have changed since the last commit as is required for pre-commit hooks to function as expected.

Set up and add the dbt-contracts operations to your .pre-commit-hooks.yaml file like the example below.

default_stages: [manual]

repos:
 - repo: meta
   hooks:
     - id: identity
       name: List files
       stages: [ manual, pre-commit ]
 - repo: https://github.com/geo-martino/dbt-contracts
   rev: v1.0.0
   hooks:
     - id: dbt-clean
       stages: [manual, pre-commit]
       additional_dependencies: [dbt-postgres]
     - id: dbt-deps
       stages: [manual]
       additional_dependencies: [dbt-postgres]
     - id: dbt-validate
       alias: dbt-validate-no-output
       name: Run models contracts
       stages: [pre-commit]
       args:
         - --contract
         - models
       additional_dependencies: [dbt-postgres]
     - id: dbt-validate
       alias: dbt-validate-no-output
       name: Run model columns contracts
       stages: [pre-commit]
       args:
         - --contract
         - models.columns
       additional_dependencies: [dbt-postgres]
     - id: dbt-validate
       alias: dbt-validate-no-output
       name: Run sources contracts
       stages: [pre-commit]
       args:
         - --contract
         - sources
       additional_dependencies: [dbt-postgres]
     - id: dbt-validate
       alias: dbt-validate-no-output
       name: Run source columns contracts
       stages: [pre-commit]
       args:
         - --contract
         - sources.columns
       additional_dependencies: [dbt-postgres]

     - id: dbt-validate
       alias: dbt-validate-output-annotations
       name: Run all contracts
       stages: [manual]
       args:
         - --format
         - github-annotations
         - --output
         - contracts_results.json
       additional_dependencies: [dbt-postgres]
     - id: dbt-generate
       name: Generate properties for all contracts
       stages: [manual]
       additional_dependencies: [dbt-postgres]