forked from dbt-labs/dbt-postgres
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9fb9c72
commit 747a38c
Showing
14 changed files
with
487 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
name: Publish PyPI | ||
|
||
inputs: | ||
python-version: | ||
description: Create an environment with the appropriate version of python and hatch installed | ||
default: "3.11" | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- name: Setup environment | ||
uses: ./.github/actions/setup-environment | ||
with: | ||
python-version: ${{ inputs.python-version }} | ||
|
||
- name: Build artifacts | ||
run: hatch build | ||
shell: bash | ||
|
||
- name: Check artifacts | ||
run: hatch run build:check-all | ||
shell: bash | ||
|
||
- name: Publish artifacts to PyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
name: Publish results | ||
|
||
inputs: | ||
file-name: | ||
description: File type for file name stub (e.g. "unit-tests") | ||
required: true | ||
python-version: | ||
description: Create an environment with the appropriate version of python and hatch installed | ||
required: true | ||
source-file: | ||
description: File to be uploaded | ||
required: true | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- name: Get timestamp | ||
id: timestamp | ||
run: echo "ts=$(date +'%Y-%m-%dT%H_%M_%S')" >> $GITHUB_OUTPUT #no colons allowed for artifacts | ||
shell: bash | ||
|
||
- uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ inputs.file-name }}_${{ inputs.python-version }}-${{ steps.timestamp.outputs.ts }}.csv | ||
path: ${{ inputs.source-file }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
name: Setup `hatch` | ||
|
||
inputs: | ||
python-version: | ||
description: Create an environment with the appropriate version of python and hatch installed | ||
required: true | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
- name: Set up Python ${{ inputs.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ inputs.python-version }} | ||
|
||
- name: Install hatch | ||
run: python -m pip install hatch | ||
shell: bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
name: "Set up postgres (linux)" | ||
description: "Set up postgres service on linux vm for dbt integration tests" | ||
runs: | ||
using: "composite" | ||
steps: | ||
- shell: bash | ||
run: | | ||
sudo systemctl start postgresql.service | ||
pg_isready | ||
sudo -u postgres bash ${{ github.action_path }}/setup_db.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/bin/bash | ||
set -x | ||
env | grep '^PG' | ||
|
||
# If you want to run this script for your own postgresql (run with | ||
# docker-compose) it will look like this: | ||
# PGHOST=127.0.0.1 PGUSER=root PGPASSWORD=password PGDATABASE=postgres \ | ||
PGUSER="${PGUSER:-postgres}" | ||
export PGUSER | ||
PGPORT="${PGPORT:-5432}" | ||
export PGPORT | ||
PGHOST="${PGHOST:-localhost}" | ||
|
||
function connect_circle() { | ||
# try to handle circleci/docker oddness | ||
let rc=1 | ||
while [[ $rc -eq 1 ]]; do | ||
nc -z ${PGHOST} ${PGPORT} | ||
let rc=$? | ||
done | ||
if [[ $rc -ne 0 ]]; then | ||
echo "Fatal: Could not connect to $PGHOST" | ||
exit 1 | ||
fi | ||
} | ||
|
||
# appveyor doesn't have 'nc', but it also doesn't have these issues | ||
if [[ -n $CIRCLECI ]]; then | ||
connect_circle | ||
fi | ||
|
||
for i in {1..10}; do | ||
if pg_isready -h "${PGHOST}" -p "${PGPORT}" -U "${PGUSER}" ; then | ||
break | ||
fi | ||
|
||
echo "Waiting for postgres to be ready..." | ||
sleep 2; | ||
done; | ||
|
||
createdb dbt | ||
psql -c "CREATE ROLE root WITH PASSWORD 'password';" | ||
psql -c "ALTER ROLE root WITH LOGIN;" | ||
psql -c "GRANT CREATE, CONNECT ON DATABASE dbt TO root WITH GRANT OPTION;" | ||
|
||
psql -c "CREATE ROLE noaccess WITH PASSWORD 'password' NOSUPERUSER;" | ||
psql -c "ALTER ROLE noaccess WITH LOGIN;" | ||
psql -c "GRANT CONNECT ON DATABASE dbt TO noaccess;" | ||
psql -c "CREATE ROLE dbt_test_user_1;" | ||
psql -c "CREATE ROLE dbt_test_user_2;" | ||
psql -c "CREATE ROLE dbt_test_user_3;" | ||
|
||
psql -c 'CREATE DATABASE "dbtMixedCase";' | ||
psql -c 'GRANT CREATE, CONNECT ON DATABASE "dbtMixedCase" TO root WITH GRANT OPTION;' | ||
|
||
set +x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
name: "Set up postgres (macos)" | ||
description: "Set up postgres service on macos vm for dbt integration tests" | ||
runs: | ||
using: "composite" | ||
steps: | ||
- shell: bash | ||
run: | | ||
brew services start postgresql | ||
echo "Check PostgreSQL service is running" | ||
i=10 | ||
COMMAND='pg_isready' | ||
while [ $i -gt -1 ]; do | ||
if [ $i == 0 ]; then | ||
echo "PostgreSQL service not ready, all attempts exhausted" | ||
exit 1 | ||
fi | ||
echo "Check PostgreSQL service status" | ||
eval $COMMAND && break | ||
echo "PostgreSQL service not ready, wait 10 more sec, attempts left: $i" | ||
sleep 10 | ||
((i--)) | ||
done | ||
createuser -s postgres | ||
bash ${{ github.action_path }}/setup_db.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/bin/bash | ||
set -x | ||
env | grep '^PG' | ||
|
||
# If you want to run this script for your own postgresql (run with | ||
# docker-compose) it will look like this: | ||
# PGHOST=127.0.0.1 PGUSER=root PGPASSWORD=password PGDATABASE=postgres \ | ||
PGUSER="${PGUSER:-postgres}" | ||
export PGUSER | ||
PGPORT="${PGPORT:-5432}" | ||
export PGPORT | ||
PGHOST="${PGHOST:-localhost}" | ||
|
||
function connect_circle() { | ||
# try to handle circleci/docker oddness | ||
let rc=1 | ||
while [[ $rc -eq 1 ]]; do | ||
nc -z ${PGHOST} ${PGPORT} | ||
let rc=$? | ||
done | ||
if [[ $rc -ne 0 ]]; then | ||
echo "Fatal: Could not connect to $PGHOST" | ||
exit 1 | ||
fi | ||
} | ||
|
||
# appveyor doesn't have 'nc', but it also doesn't have these issues | ||
if [[ -n $CIRCLECI ]]; then | ||
connect_circle | ||
fi | ||
|
||
for i in {1..10}; do | ||
if pg_isready -h "${PGHOST}" -p "${PGPORT}" -U "${PGUSER}" ; then | ||
break | ||
fi | ||
|
||
echo "Waiting for postgres to be ready..." | ||
sleep 2; | ||
done; | ||
|
||
createdb dbt | ||
psql -c "CREATE ROLE root WITH PASSWORD 'password';" | ||
psql -c "ALTER ROLE root WITH LOGIN;" | ||
psql -c "GRANT CREATE, CONNECT ON DATABASE dbt TO root WITH GRANT OPTION;" | ||
|
||
psql -c "CREATE ROLE noaccess WITH PASSWORD 'password' NOSUPERUSER;" | ||
psql -c "ALTER ROLE noaccess WITH LOGIN;" | ||
psql -c "GRANT CONNECT ON DATABASE dbt TO noaccess;" | ||
psql -c "CREATE ROLE dbt_test_user_1;" | ||
psql -c "CREATE ROLE dbt_test_user_2;" | ||
psql -c "CREATE ROLE dbt_test_user_3;" | ||
|
||
psql -c 'CREATE DATABASE "dbtMixedCase";' | ||
psql -c 'GRANT CREATE, CONNECT ON DATABASE "dbtMixedCase" TO root WITH GRANT OPTION;' | ||
|
||
set +x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
name: "Set up postgres (windows)" | ||
description: "Set up postgres service on windows vm for dbt integration tests" | ||
runs: | ||
using: "composite" | ||
steps: | ||
- shell: pwsh | ||
run: | | ||
$pgService = Get-Service -Name postgresql* | ||
Set-Service -InputObject $pgService -Status running -StartupType automatic | ||
Start-Process -FilePath "$env:PGBIN\pg_isready" -Wait -PassThru | ||
$env:Path += ";$env:PGBIN" | ||
bash ${{ github.action_path }}/setup_db.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/bin/bash | ||
set -x | ||
env | grep '^PG' | ||
|
||
# If you want to run this script for your own postgresql (run with | ||
# docker-compose) it will look like this: | ||
# PGHOST=127.0.0.1 PGUSER=root PGPASSWORD=password PGDATABASE=postgres \ | ||
PGUSER="${PGUSER:-postgres}" | ||
export PGUSER | ||
PGPORT="${PGPORT:-5432}" | ||
export PGPORT | ||
PGHOST="${PGHOST:-localhost}" | ||
|
||
function connect_circle() { | ||
# try to handle circleci/docker oddness | ||
let rc=1 | ||
while [[ $rc -eq 1 ]]; do | ||
nc -z ${PGHOST} ${PGPORT} | ||
let rc=$? | ||
done | ||
if [[ $rc -ne 0 ]]; then | ||
echo "Fatal: Could not connect to $PGHOST" | ||
exit 1 | ||
fi | ||
} | ||
|
||
# appveyor doesn't have 'nc', but it also doesn't have these issues | ||
if [[ -n $CIRCLECI ]]; then | ||
connect_circle | ||
fi | ||
|
||
for i in {1..10}; do | ||
if pg_isready -h "${PGHOST}" -p "${PGPORT}" -U "${PGUSER}" ; then | ||
break | ||
fi | ||
|
||
echo "Waiting for postgres to be ready..." | ||
sleep 2; | ||
done; | ||
|
||
createdb dbt | ||
psql -c "CREATE ROLE root WITH PASSWORD 'password';" | ||
psql -c "ALTER ROLE root WITH LOGIN;" | ||
psql -c "GRANT CREATE, CONNECT ON DATABASE dbt TO root WITH GRANT OPTION;" | ||
|
||
psql -c "CREATE ROLE noaccess WITH PASSWORD 'password' NOSUPERUSER;" | ||
psql -c "ALTER ROLE noaccess WITH LOGIN;" | ||
psql -c "GRANT CONNECT ON DATABASE dbt TO noaccess;" | ||
psql -c "CREATE ROLE dbt_test_user_1;" | ||
psql -c "CREATE ROLE dbt_test_user_2;" | ||
psql -c "CREATE ROLE dbt_test_user_3;" | ||
|
||
psql -c 'CREATE DATABASE "dbtMixedCase";' | ||
psql -c 'GRANT CREATE, CONNECT ON DATABASE "dbtMixedCase" TO root WITH GRANT OPTION;' | ||
|
||
set +x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
name: Integration Tests | ||
|
||
on: | ||
push: | ||
branches: | ||
- "main" | ||
- "*.latest" | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
permissions: read-all | ||
|
||
# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
unit: | ||
name: Python ${{ matrix.python-version }} | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
python-version: ["3.8", "3.9", "3.10", "3.11"] | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-environment | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Set up postgres (linux) | ||
if: runner.os == 'Linux' | ||
uses: ./.github/actions/setup-postgres-linux | ||
|
||
- name: Set up postgres (macos) | ||
if: runner.os == 'macOS' | ||
uses: ./.github/actions/setup-postgres-macos | ||
|
||
- name: Set up postgres (windows) | ||
if: runner.os == 'Windows' | ||
uses: ./.github/actions/setup-postgres-windows | ||
|
||
- name: Run integration tests | ||
run: hatch run integration-tests:all | ||
shell: bash | ||
|
||
- name: Publish results | ||
uses: ./.github/actions/publish-results | ||
if: always() | ||
with: | ||
source-file: "results.csv" | ||
file-name: "integration_results" | ||
python-version: ${{ matrix.python-version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
name: Lint | ||
|
||
on: | ||
push: | ||
branches: | ||
- "main" | ||
- "*.latest" | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
permissions: read-all | ||
|
||
# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
lint: | ||
name: Python 3.8 | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-environment | ||
with: | ||
python-version: "3.8" | ||
|
||
- name: Run linters | ||
run: hatch run lint:all | ||
shell: bash | ||
|
||
- name: Run typechecks | ||
run: hatch run typecheck:all | ||
shell: bash |
Oops, something went wrong.