Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADAP-1185: Separate serial integration tests #752

Draft
wants to merge 62 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
8a03920
initial work: split serial and parallel tests into separate workflows…
VanTudor Jan 27, 2025
342e196
Unblock PRs getting hung up by this test. (#747)
VersusFacit Jan 27, 2025
391d88c
ADAP-1135: Migrate dbt-adapters into a package sub-directory (#746)
mikealfare Jan 27, 2025
6b9fb3a
small refactor in ull-request-checks.yml
VanTudor Jan 28, 2025
34e1902
testing manual trigger on ull-request-checks.yml
VanTudor Jan 28, 2025
e1035e0
toying with pr checks workflow triggers
VanTudor Jan 28, 2025
80c8546
testing dynamic integration tests workflow name
VanTudor Jan 28, 2025
aa25aef
toying with pr checks workflow trigger
VanTudor Jan 28, 2025
399efcb
fixed workflow dependency name in pr requests check workflow
VanTudor Jan 28, 2025
2f0b49f
toying with workflow file versions
VanTudor Jan 28, 2025
a570e30
toying with workflow file versions
VanTudor Jan 28, 2025
7ff864a
fixed dependency for pr checks
VanTudor Jan 28, 2025
2458a7a
syntax quickfixes
VanTudor Jan 28, 2025
636326b
fixed param reference in integration tests workflow
VanTudor Jan 28, 2025
9190f23
fixed type in workflows
VanTudor Jan 28, 2025
c6be00e
merge conflicts
VanTudor Jan 30, 2025
1b50720
small wrkflow rename
VanTudor Jan 30, 2025
66ccded
pulled in main
VanTudor Feb 5, 2025
3b82bba
Merge branch 'main' into ADAP-1185/separate-serial-integration-tests
VanTudor Feb 5, 2025
92475e8
updated scheduled workflow tests to run serial tests separately
VanTudor Feb 5, 2025
ff18f42
job step dependency quickfix in scheduled-tests workflow
VanTudor Feb 5, 2025
c667cff
temporarily disabling runs on windows and macos for scheduled tests
VanTudor Feb 5, 2025
cabb2bd
removed condition that blocked scheduled tests workflow to skip runni…
VanTudor Feb 5, 2025
1fc205b
temporarily removed windows and mac tests again
VanTudor Feb 5, 2025
ad65411
cleanup
VanTudor Feb 5, 2025
3735e8b
linting
VanTudor Feb 5, 2025
93a7306
fixed job dependency in pr checks workflow
VanTudor Feb 5, 2025
13e1709
hoooked affected packages step to both serial and parallel test steps…
VanTudor Feb 5, 2025
0fd2ccf
several fixes to publish workflow
VanTudor Feb 5, 2025
a5c9a7b
merge conflict fixes
VanTudor Feb 6, 2025
5f5e802
tried to force execution of integration tests before changelog checks
VanTudor Feb 6, 2025
33978e4
attempt to unblock serial and parallel tests
VanTudor Feb 6, 2025
0037575
tried to force execution of integration tests before changelog checks
VanTudor Feb 6, 2025
2bbd9c6
serial tests now execute regardless of whether parallel tests have pa…
VanTudor Feb 6, 2025
af697a1
several fixes to publish workflow
VanTudor Feb 6, 2025
68bab5a
linting
VanTudor Feb 7, 2025
114098b
refactored gh workflows to avoid using concurrency option
VanTudor Feb 7, 2025
b6989ca
refactored gh workflows to avoid using concurrency option
VanTudor Feb 7, 2025
63fd1c8
linting
VanTudor Feb 7, 2025
6279609
syntax fix
VanTudor Feb 7, 2025
d70d3d7
syntax
VanTudor Feb 7, 2025
01148e4
syntax again
VanTudor Feb 7, 2025
9e411e5
✨syntax✨
VanTudor Feb 7, 2025
9625e24
removed unused workflow param
VanTudor Feb 7, 2025
f9cb134
syntax
VanTudor Feb 7, 2025
c2fe231
quickfix workflow cycle
VanTudor Feb 7, 2025
7525455
fixed which package itnegration test workflow's jobs invoke
VanTudor Feb 7, 2025
b157475
syntax?
VanTudor Feb 7, 2025
0bca5e0
syntax(:
VanTudor Feb 7, 2025
ca75551
✨syntax✨
VanTudor Feb 7, 2025
2bcda09
whatever
VanTudor Feb 7, 2025
f3f3543
json
VanTudor Feb 7, 2025
7990e42
i love github actions
VanTudor Feb 7, 2025
d0e1f0e
try number n
VanTudor Feb 7, 2025
b703433
lovely github syntax
VanTudor Feb 7, 2025
20ce3c2
syntax
VanTudor Feb 7, 2025
903d238
added pr trigger to create integrationt ests runs workflow
VanTudor Feb 7, 2025
70f2ae0
syntax
VanTudor Feb 7, 2025
ec722e3
no
VanTudor Feb 7, 2025
1762a06
json love
VanTudor Feb 7, 2025
396e67a
yes
VanTudor Feb 7, 2025
56a854c
passing secrets
VanTudor Feb 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
315 changes: 315 additions & 0 deletions .github/workflows/_create-integration-test-runs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,315 @@
# This file fine grains the way integration tests run in parallel and serial
# It's here as a workaround for GitHub's limitations on group and concurrency options, as these cancel runs,
# instead of queueing them.

name: "Create integration tests runs"

on:
pull_request:
workflow_call:
inputs:
package:
description: 'Array of packages to test. E.g. ["dbt-athena", "dbt-snowflake"]'
type: string
required: true
branch:
description: "Choose the branch to test"
type: string
default: "main"
repository:
description: "Choose the repository to test, when using a fork"
type: string
default: "dbt-labs/dbt-adapters"
os:
description: "Array of OS' to test against. E.g. ['ubuntu-22.04', 'macos-15']"
type: string
python-version:
description: "Array of OS' to test against. E.g. ['3.9', '3.10']"
type: string
default: "['3.9']"
workflow_dispatch:
inputs:
package:
description: "Array of packages to test. E.g. ['dbt-athena', 'dbt-snowflake']"
type: string
required: true
branch:
description: "Choose the branch to test"
type: string
default: "main"
repository:
description: "Choose the repository to test, when using a fork"
type: string
default: "dbt-labs/dbt-adapters"
os:
description: "Choose the OS to test against"
type: string
python-version:
description: "Array of OS' to test against. E.g. ['3.9', '3.10']. Valid picks: 3.9, 3.10, 3.11, 3.12"
type: string
default: "['3.9']"

permissions:
id-token: write
contents: read

jobs:
parallel-integration-tests-athena:
if: ${{ contains(fromJSON(inputs.package), 'dbt-athena') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-athena"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
parallel-integration-tests-athena-community:
if: ${{ contains(fromJSON(inputs.package), 'dbt-athena-community') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-athena-community"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-athena:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-athena') }}
uses: ./.github/workflows/_integration-tests2.yml
needs: [parallel-integration-tests-athena, parallel-integration-tests-athena-community]
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-athena"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit
serial-integration-tests-athena-community:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-athena-community') }}
uses: ./.github/workflows/_integration-tests2.yml
needs: [ parallel-integration-tests-athena, parallel-integration-tests-athena-community, serial-integration-tests-athena ]
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-athena-community"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit

parallel-integration-tests-bigquery:
if: ${{ contains(fromJSON(inputs.package), 'dbt-bigquery') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-bigquery"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-bigquery:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-bigquery') }}
needs: [parallel-integration-tests-bigquery]
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-bigquery"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit

parallel-integration-tests-postgres:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-postgres') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-postgres"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-postgres:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-postgres') }}
needs: [ parallel-integration-tests-postgres ]
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-postgres"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit
integration-tests-postgres-psycopg2-check:
if: ${{ contains(fromJSON(inputs.package), 'dbt-postgres') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-postgres"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit

parallel-integration-tests-redshift:
if: ${{ contains(fromJSON(inputs.package), 'dbt-redshift') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-redshift"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-redshift:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-redshift') }}
needs: [ parallel-integration-tests-redshift ]
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-redshift"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit

parallel-integration-tests-snowflake:
if: ${{ contains(fromJSON(inputs.package), 'dbt-snowflake') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-snowflake"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-snowflake:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-snowflake') }}
needs: [ parallel-integration-tests-snowflake ]
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-snowflake"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit

parallel-integration-tests-spark:
if: ${{ contains(fromJSON(inputs.package), 'dbt-spark') }}
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-spark"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: false
secrets: inherit
serial-integration-tests-spark:
if: ${{ always() && contains(fromJSON(inputs.package), 'dbt-spark') }}
needs: [ parallel-integration-tests-spark ]
uses: ./.github/workflows/_integration-tests2.yml
strategy:
fail-fast: false
max-parallel: 1
matrix:
os: ${{ fromJSON(inputs.os) }}
python-version: ${{ fromJSON(inputs.python-version) }}
with:
package: "dbt-spark"
branch: ${{ inputs.branch }}
repository: ${{ inputs.repository }}
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
is-serial-tests-run: true
secrets: inherit
Loading
Loading