Skip to content

Commit 64174ce

Browse files
authored
Convert provider CI jobs into matrix jobs (#27373)
Follow-up after #27372
1 parent 8b5f1d9 commit 64174ce

File tree

3 files changed

+42
-75
lines changed

3 files changed

+42
-75
lines changed

.github/workflows/ci.yml

Lines changed: 29 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ jobs:
146146
mysql-exclude: ${{ steps.selective-checks.outputs.mysql-exclude }}
147147
mssql-exclude: ${{ steps.selective-checks.outputs.mssql-exclude }}
148148
sqlite-exclude: ${{ steps.selective-checks.outputs.sqlite-exclude }}
149+
providers-package-format-exclude: ${{ steps.selective-checks.outputs.providers-package-format-exclude }}
149150
run-tests: ${{ steps.selective-checks.outputs.run-tests }}
150151
run-www-tests: ${{ steps.selective-checks.outputs.run-www-tests }}
151152
run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }}
@@ -668,14 +669,21 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
668669
run: breeze ci fix-ownership
669670
if: always()
670671

671-
prepare-test-provider-packages-wheel:
672+
prepare-test-provider-packages:
672673
timeout-minutes: 80
673-
name: "Build and test provider packages wheel"
674+
name: "Provider packages ${{matrix.package-format}}"
674675
runs-on: "${{needs.build-info.outputs.runs-on}}"
675676
needs: [build-info, wait-for-ci-images]
677+
strategy:
678+
matrix:
679+
package-format: ["sdist", "wheel"]
680+
exclude: "${{fromJson(needs.build-info.outputs.providers-package-format-exclude)}}"
681+
fail-fast: false
676682
env:
677683
RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
678684
PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
685+
PACKAGE_FORMAT: "${{matrix.package-format}}"
686+
USE_AIRFLOW_VERSION: "${{matrix.package-format}}"
679687
if: needs.build-info.outputs.image-build == 'true' && needs.build-info.outputs.default-branch == 'main'
680688
steps:
681689
- name: Cleanup repo
@@ -684,96 +692,42 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
684692
uses: actions/checkout@v3
685693
with:
686694
persist-credentials: false
687-
if: needs.build-info.outputs.default-branch == 'main'
688695
- name: >
689696
Prepare breeze & CI image: ${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
690697
uses: ./.github/actions/prepare_breeze_and_image
691698
- name: "Cleanup dist files"
692699
run: rm -fv ./dist/*
693-
- name: "Prepare provider documentation"
694-
run: breeze release-management prepare-provider-documentation --answer yes
695-
- name: "Prepare provider packages: wheel"
696-
run: >
697-
breeze release-management prepare-provider-packages
698-
--package-format wheel --version-suffix-for-pypi dev0
699-
- name: "Prepare airflow package: wheel"
700-
run: >
701-
breeze release-management prepare-airflow-package
702-
--package-format wheel --version-suffix-for-pypi dev0
703-
- name: "Install and test provider packages and airflow via wheel files"
704-
run: >
705-
breeze release-management verify-provider-packages
706-
--use-airflow-version wheel --use-packages-from-dist --package-format wheel
700+
- name: "Prepare provider packages: ${{matrix.package-format}}"
701+
run: breeze release-management prepare-provider-packages --version-suffix-for-pypi dev0
702+
- name: "Prepare airflow package: ${{matrix.package-format}}"
703+
run: breeze release-management prepare-airflow-package --version-suffix-for-pypi dev0
704+
- name: "Verify wheel packages with twine"
705+
run: pipx install twine && twine check dist/*.whl
706+
if: matrix.package-format == 'wheel'
707+
- name: "Verify sdist packages with twine"
708+
run: pipx install twine && twine check dist/*.tgz
709+
if: matrix.package-format == 'sdist'
710+
- name: "Install and test provider packages and airflow via ${{matrix.package-format}} files"
711+
run: breeze release-management verify-provider-packages --use-packages-from-dist
707712
env:
708713
SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}"
709-
- name: "Verify packages with twine"
710-
run: |
711-
pipx install twine
712-
twine check dist/*.whl
713714
- name: "Remove airflow package and replace providers with 2.3-compliant versions"
714715
run: |
715-
rm -vf dist/apache_airflow-*.whl \
716-
dist/apache_airflow_providers_docker*.whl
717-
pip download --no-deps --dest dist \
718-
apache-airflow-providers-docker==3.1.0
719-
- name: "Get all provider extras as AIRFLOW_EXTRAS evn variable"
716+
rm -vf dist/apache_airflow-*.whl dist/apache_airflow_providers_docker*.whl
717+
pip download --no-deps --dest dist apache-airflow-providers-docker==3.1.0
718+
if: matrix.package-format == 'wheel'
719+
- name: "Get all provider extras as AIRFLOW_EXTRAS env variable"
720720
run: >
721721
python -c 'from pathlib import Path; import json;
722722
providers = json.loads(Path("generated/provider_dependencies.json").read_text());
723723
provider_keys = ",".join(providers.keys());
724724
print("AIRFLOW_EXTRAS={}".format(provider_keys))' >> $GITHUB_ENV
725+
if: matrix.package-format == 'wheel'
725726
- name: "Install and test provider packages and airflow on Airflow 2.3 files"
726727
run: >
727728
breeze release-management verify-provider-packages --use-airflow-version 2.3.0
728-
--use-packages-from-dist --package-format wheel --airflow-constraints-reference constraints-2.3.0
729-
- name: "Fix ownership"
730-
run: breeze ci fix-ownership
731-
if: always()
732-
733-
prepare-test-provider-packages-sdist:
734-
timeout-minutes: 80
735-
name: "Build and test provider packages sdist"
736-
runs-on: "${{needs.build-info.outputs.runs-on}}"
737-
needs: [build-info, wait-for-ci-images]
738-
env:
739-
RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
740-
PYTHON_MAJOR_MINOR_VERSION: "${{needs.build-info.outputs.default-python-version}}"
741-
if: >
742-
needs.build-info.outputs.image-build == 'true' &&
743-
needs.build-info.outputs.default-branch == 'main' &&
744-
needs.build-info.outputs.canary-run == 'true'
745-
steps:
746-
- name: Cleanup repo
747-
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
748-
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
749-
uses: actions/checkout@v3
750-
with:
751-
persist-credentials: false
752-
- name: >
753-
Prepare breeze & CI image: ${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
754-
uses: ./.github/actions/prepare_breeze_and_image
755-
- name: "Cleanup dist files"
756-
run: rm -fv ./dist/*
757-
- name: "Prepare provider packages: sdist"
758-
run: >
759-
breeze release-management prepare-provider-packages
760-
--package-format sdist --version-suffix-for-pypi dev0
761-
- name: "Prepare airflow package: sdist"
762-
run: >
763-
breeze release-management prepare-airflow-package
764-
--package-format sdist --version-suffix-for-pypi dev0
765-
- name: "Upload provider distribution artifacts"
766-
uses: actions/upload-artifact@v3
767-
with:
768-
name: airflow-provider-packages
769-
path: "./dist/apache-airflow-providers-*.tar.gz"
770-
retention-days: 1
771-
- name: "Install and test provider packages and airflow via sdist files"
772-
run: >
773-
breeze release-management verify-provider-packages
774-
--use-airflow-version sdist --use-packages-from-dist --package-format sdist
775-
env:
776-
SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}"
729+
--use-packages-from-dist --airflow-constraints-reference constraints-2.3.0
730+
if: matrix.package-format == 'wheel'
777731
- name: "Fix ownership"
778732
run: breeze ci fix-ownership
779733
if: always()

dev/breeze/src/airflow_breeze/utils/selective_checks.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,11 @@ def kind_version(self) -> str:
346346
def helm_version(self) -> str:
347347
return HELM_VERSION
348348

349+
@cached_property
350+
def providers_package_format_exclude(self) -> list[dict[str, str]]:
351+
# Exclude sdist format unless full tests are run
352+
return [{"package-format": "sdist"}] if not self.full_tests_needed else []
353+
349354
@cached_property
350355
def postgres_exclude(self) -> list[dict[str, str]]:
351356
return [{"python-version": "3.7"}] if self.full_tests_needed else []

dev/breeze/tests/test_selective_checks.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ def test_expected_output_pull_request_main(
266266
"run-tests": "true",
267267
"docs-build": "true",
268268
"full-tests-needed": "true",
269+
"providers-package-format-exclude": "[]",
269270
"upgrade-to-newer-dependencies": "false",
270271
"test-types": "API Always CLI Core Integration Other Providers WWW",
271272
},
@@ -287,6 +288,7 @@ def test_expected_output_pull_request_main(
287288
"run-tests": "true",
288289
"docs-build": "true",
289290
"full-tests-needed": "true",
291+
"providers-package-format-exclude": "[]",
290292
"upgrade-to-newer-dependencies": "false",
291293
"test-types": "API Always CLI Core Integration Other Providers WWW",
292294
},
@@ -307,6 +309,7 @@ def test_expected_output_pull_request_main(
307309
"docs-build": "true",
308310
"full-tests-needed": "true",
309311
"upgrade-to-newer-dependencies": "false",
312+
"providers-package-format-exclude": "[]",
310313
"test-types": "API Always CLI Core Integration Other Providers WWW",
311314
},
312315
id="Everything should run including full providers when"
@@ -326,6 +329,7 @@ def test_expected_output_pull_request_main(
326329
"docs-build": "true",
327330
"full-tests-needed": "true",
328331
"upgrade-to-newer-dependencies": "false",
332+
"providers-package-format-exclude": "[]",
329333
"test-types": "API Always CLI Core Other WWW",
330334
},
331335
id="Everything should run except Providers and Integration "
@@ -363,6 +367,7 @@ def test_expected_output_full_tests_needed(
363367
"run-tests": "false",
364368
"docs-build": "false",
365369
"full-tests-needed": "false",
370+
"providers-package-format-exclude": "[{'package-format': 'sdist'}]",
366371
"upgrade-to-newer-dependencies": "false",
367372
"test-types": "",
368373
},
@@ -381,6 +386,7 @@ def test_expected_output_full_tests_needed(
381386
"run-tests": "true",
382387
"docs-build": "true",
383388
"full-tests-needed": "false",
389+
"providers-package-format-exclude": "[{'package-format': 'sdist'}]",
384390
"run-kubernetes-tests": "true",
385391
"upgrade-to-newer-dependencies": "false",
386392
"test-types": "Always",
@@ -401,6 +407,7 @@ def test_expected_output_full_tests_needed(
401407
"run-tests": "true",
402408
"docs-build": "true",
403409
"full-tests-needed": "false",
410+
"providers-package-format-exclude": "[{'package-format': 'sdist'}]",
404411
"run-kubernetes-tests": "true",
405412
"upgrade-to-newer-dependencies": "false",
406413
"test-types": "Always CLI",
@@ -420,6 +427,7 @@ def test_expected_output_full_tests_needed(
420427
"run-tests": "true",
421428
"docs-build": "true",
422429
"full-tests-needed": "false",
430+
"providers-package-format-exclude": "[{'package-format': 'sdist'}]",
423431
"run-kubernetes-tests": "false",
424432
"upgrade-to-newer-dependencies": "false",
425433
"test-types": "API Always CLI Core Other WWW",

0 commit comments

Comments
 (0)