diff --git a/.gitignore b/.gitignore index 87e481045..d37765858 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ var/ logs/ .venv poetry.lock -package-lock.yml # PyInstaller # Usually these files are written by a python script from a template @@ -97,4 +96,4 @@ venv/ # elementary outputs edr_target/ -tests/tests_with_db/dbt_project/dbt_packages/ \ No newline at end of file +tests/tests_with_db/dbt_project/dbt_packages/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 025cf92a5..260d30f0c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,3 +43,20 @@ repos: entry: mypy --no-error-summary language: system files: ^elementary/.*\.py$ + + - repo: local + hooks: + - id: verify-dbt-project-packages-lock + name: Verify internal dbt project package lock + entry: | + bash -c ' + dbt_version=$(python -c "from dbt.version import __version__; print(__version__)"); + required_version="1.8"; + if [[ $(echo -e "$dbt_version\n$required_version" | sort -V | tail -1) == "$dbt_version" ]]; then + dbt deps --lock --project-dir elementary/monitor/dbt_project && git diff --quiet elementary/monitor/dbt_project/package-lock.yml || (echo "Changes detected in package lock file!" && exit 1); + else + echo "Skipping hook, dbt version is $dbt_version (< 1.8)."; + fi + ' + language: system + pass_filenames: false diff --git a/elementary/monitor/dbt_project/package-lock.yml b/elementary/monitor/dbt_project/package-lock.yml new file mode 100644 index 000000000..643e604a0 --- /dev/null +++ b/elementary/monitor/dbt_project/package-lock.yml @@ -0,0 +1,6 @@ +packages: + - package: dbt-labs/dbt_utils + version: 0.8.6 + - git: https://github.com/elementary-data/dbt-data-reliability.git + revision: 4c65ce164ff02dd816d0d311471e521cf0b7bd14 +sha1_hash: d1378c3e1fda6c00a2e6cd156455d39cfc08a4d8