This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 9c33ed3710 Extract tests to composite actions in CI (#27371)
9c33ed3710 is described below
commit 9c33ed3710e29e5731015c075beca8f843b1e3cd
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Oct 30 20:11:49 2022 +0100
Extract tests to composite actions in CI (#27371)
This change is a follow-up after #27369 - it extracts test steps to
a composite action.
---
.github/actions/breeze/action.yml | 3 +
.../actions/{breeze => migration_tests}/action.yml | 36 +-
.github/actions/{breeze => post_tests}/action.yml | 47 +-
.../action.yml | 36 +-
.github/workflows/build-images.yml | 30 +-
.github/workflows/ci.yml | 664 +++++++--------------
.../airflow_breeze/commands/developer_commands.py | 4 +-
.../commands/release_management_commands.py | 5 +
8 files changed, 280 insertions(+), 545 deletions(-)
diff --git a/.github/actions/breeze/action.yml
b/.github/actions/breeze/action.yml
index 395e3a8d42..bd8853d555 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/breeze/action.yml
@@ -45,3 +45,6 @@ runs:
echo "host-python-version=$(python -c 'import platform;
print(platform.python_version())')"
>> ${GITHUB_OUTPUT}
id: host-python-version
+ - name: "Disable cheatsheet"
+ shell: bash
+ run: breeze setup config --no-cheatsheet --no-asciiart
diff --git a/.github/actions/breeze/action.yml
b/.github/actions/migration_tests/action.yml
similarity index 52%
copy from .github/actions/breeze/action.yml
copy to .github/actions/migration_tests/action.yml
index 395e3a8d42..81ea7e8383 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/migration_tests/action.yml
@@ -16,32 +16,22 @@
# under the License.
#
---
-name: 'Setup Breeze'
-description: 'Sets up Python and Breeze'
+name: 'Run migration tests'
+description: 'Runs migration tests'
runs:
using: "composite"
steps:
- - name: "Setup python"
- uses: actions/setup-python@v4
- with:
- python-version: 3.7
- cache: 'pip'
- cache-dependency-path: ./dev/breeze/setup*
- - name: Cache breeze
- uses: actions/cache@v3
- with:
- path: ~/.local/pipx
- key: "breeze-${{ hashFiles('dev/breeze/README.md') }}" # README has
the latest breeze's hash
- restore-keys: breeze-
- - name: "Install Breeze"
+ - name: "Test downgrade migration file ${{env.BACKEND}}"
shell: bash
- run: ./scripts/ci/install_breeze.sh
- - name: "Free space"
- shell: bash
- run: breeze ci free-space
- - name: "Get Python version"
+ run: >
+ breeze shell "airflow db reset --skip-init -y &&
+ airflow db upgrade --to-revision heads &&
+ airflow db downgrade -r e959f08ac86c -y &&
+ airflow db upgrade"
+ - name: "Test downgrade ORM ${{env.BACKEND}}"
shell: bash
run: >
- echo "host-python-version=$(python -c 'import platform;
print(platform.python_version())')"
- >> ${GITHUB_OUTPUT}
- id: host-python-version
+ breeze shell "airflow db reset -y &&
+ airflow db upgrade &&
+ airflow db downgrade -r e959f08ac86c -y &&
+ airflow db upgrade"
diff --git a/.github/actions/breeze/action.yml
b/.github/actions/post_tests/action.yml
similarity index 51%
copy from .github/actions/breeze/action.yml
copy to .github/actions/post_tests/action.yml
index 395e3a8d42..2e15b01ba8 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/post_tests/action.yml
@@ -16,32 +16,33 @@
# under the License.
#
---
-name: 'Setup Breeze'
-description: 'Sets up Python and Breeze'
+name: 'Post tests'
+description: 'Run post tests actions'
runs:
using: "composite"
steps:
- - name: "Setup python"
- uses: actions/setup-python@v4
+ - name: "Upload airflow logs"
+ uses: actions/upload-artifact@v3
+ if: failure()
with:
- python-version: 3.7
- cache: 'pip'
- cache-dependency-path: ./dev/breeze/setup*
- - name: Cache breeze
- uses: actions/cache@v3
+ name: airflow-logs-${{env.JOB_ID}}
+ path: './files/airflow_logs*'
+ retention-days: 7
+ - name: "Upload container logs"
+ uses: actions/upload-artifact@v3
+ if: failure()
with:
- path: ~/.local/pipx
- key: "breeze-${{ hashFiles('dev/breeze/README.md') }}" # README has
the latest breeze's hash
- restore-keys: breeze-
- - name: "Install Breeze"
- shell: bash
- run: ./scripts/ci/install_breeze.sh
- - name: "Free space"
- shell: bash
- run: breeze ci free-space
- - name: "Get Python version"
+ name: container-logs-${{env.JOB_ID}}
+ path: "./files/container_logs*"
+ retention-days: 7
+ - name: "Upload artifact for coverage"
+ uses: actions/upload-artifact@v3
+ if: env.COVERAGE == 'true'
+ with:
+ name: coverage-${{env.JOB_ID}}
+ path: ./files/coverage*.xml
+ retention-days: 7
+ - name: "Fix ownership"
shell: bash
- run: >
- echo "host-python-version=$(python -c 'import platform;
print(platform.python_version())')"
- >> ${GITHUB_OUTPUT}
- id: host-python-version
+ run: breeze ci fix-ownership
+ if: always()
diff --git a/.github/actions/breeze/action.yml
b/.github/actions/prepare_breeze_and_image/action.yml
similarity index 53%
copy from .github/actions/breeze/action.yml
copy to .github/actions/prepare_breeze_and_image/action.yml
index 395e3a8d42..ed943446fe 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/prepare_breeze_and_image/action.yml
@@ -16,32 +16,22 @@
# under the License.
#
---
-name: 'Setup Breeze'
-description: 'Sets up Python and Breeze'
+name: 'Prepare breeze && current python image'
+description: 'Installs breeze and pulls current python image'
+inputs:
+ pull-image-type:
+ description: 'Which image to pull'
+ default: CI
runs:
using: "composite"
steps:
- - name: "Setup python"
- uses: actions/setup-python@v4
- with:
- python-version: 3.7
- cache: 'pip'
- cache-dependency-path: ./dev/breeze/setup*
- - name: Cache breeze
- uses: actions/cache@v3
- with:
- path: ~/.local/pipx
- key: "breeze-${{ hashFiles('dev/breeze/README.md') }}" # README has
the latest breeze's hash
- restore-keys: breeze-
- name: "Install Breeze"
+ uses: ./.github/actions/breeze
+ - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG }}
shell: bash
- run: ./scripts/ci/install_breeze.sh
- - name: "Free space"
+ run: breeze ci-image pull --tag-as-latest
+ if: inputs.pull-image-type == 'CI'
+ - name: Pull PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG }}
shell: bash
- run: breeze ci free-space
- - name: "Get Python version"
- shell: bash
- run: >
- echo "host-python-version=$(python -c 'import platform;
print(platform.python_version())')"
- >> ${GITHUB_OUTPUT}
- id: host-python-version
+ run: breeze prod-image pull --tag-as-latest
+ if: inputs.pull-image-type == 'PROD'
diff --git a/.github/workflows/build-images.yml
b/.github/workflows/build-images.yml
index c44cf2c2e9..c7d544ca70 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -38,7 +38,7 @@ env:
secrets.CONSTRAINTS_GITHUB_REPOSITORY || 'apache/airflow' }}
# This token is WRITE one - pull_request_target type of events always have
the WRITE token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- IMAGE_TAG_FOR_THE_BUILD: "${{ github.event.pull_request.head.sha ||
github.sha }}"
+ IMAGE_TAG: "${{ github.event.pull_request.head.sha || github.sha }}"
USE_SUDO: "true"
INCLUDE_SUCCESS_OUTPUTS: "true"
@@ -216,13 +216,12 @@ jobs:
- name: "Install Breeze"
uses: ./.github/actions/breeze
- name: >-
- Build & Push AMD64 CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build & Push AMD64 CI images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: breeze ci-image build --push --tag-as-latest --run-in-parallel
--upgrade-on-failure
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
- name: "Show dependencies to be upgraded"
run: >
@@ -231,11 +230,9 @@ jobs:
env:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
if: needs.build-info.outputs.upgrade-to-newer-dependencies != 'false'
- - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG }}
if: failure() || cancelled()
run: breeze ci-image build --push --empty-image --run-in-parallel
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- name: "Candidates for pip resolver backtrack triggers"
if: failure() || cancelled()
run: >
@@ -298,12 +295,11 @@ jobs:
python
scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
- name: >
Pull CI image for PROD build:
- ${{ needs.build-info.outputs.default-python-version }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ ${{ needs.build-info.outputs.default-python-version }}:${{
env.IMAGE_TAG }}
run: breeze ci-image pull --tag-as-latest
env:
# Always use default Python version of CI image for preparing
packages
PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- name: "Cleanup dist and context file"
run: rm -fv ./dist/* ./docker-context-files/*
- name: "Prepare providers packages"
@@ -320,25 +316,18 @@ jobs:
- name: "Move dist packages to docker-context files"
run: mv -v ./dist/*.whl ./docker-context-files
- name: >-
- Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build & Push PROD images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: >
- breeze prod-image build
- --run-in-parallel
- --tag-as-latest
- --push
- --install-packages-from-context
- --upgrade-on-failure
+ breeze prod-image build --run-in-parallel --tag-as-latest --push
+ --install-packages-from-context --upgrade-on-failure
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
- - name: Push empty PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Push empty PROD images ${{ env.IMAGE_TAG }}
if: failure() || cancelled()
run: breeze prod-image build --cleanup-context --push --empty-image
--run-in-parallel
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- name: "Fix ownership"
run: breeze ci fix-ownership
if: always()
@@ -394,14 +383,13 @@ jobs:
- name: "Install Breeze"
uses: ./.github/actions/breeze
- name: >
- Build ARM CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build ARM CI images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: >
breeze ci-image build --run-in-parallel --builder airflow_cache
--platform "linux/arm64"
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
- name: "Stop ARM instance"
run: ./scripts/ci/images/ci_stop_arm_instance.sh
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 05ce78c2bb..bbf51b1787 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -42,7 +42,7 @@ env:
# In builds from forks, this token is read-only. For scheduler/direct push
it is WRITE one
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ENABLE_TEST_COVERAGE: "${{ github.event_name == 'push' }}"
- IMAGE_TAG_FOR_THE_BUILD: "${{ github.event.pull_request.head.sha ||
github.sha }}"
+ IMAGE_TAG: "${{ github.event.pull_request.head.sha || github.sha }}"
USE_SUDO: "true"
INCLUDE_SUCCESS_OUTPUTS: "true"
@@ -238,7 +238,7 @@ jobs:
packages: write
timeout-minutes: 50
name: "Push Early Image Cache"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs:
- build-info
strategy:
@@ -246,7 +246,7 @@ jobs:
matrix:
platform: ["linux/amd64", "linux/arm64"]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
UPGRADE_TO_NEWER_DEPENDENCIES: false
continue-on-error: true
steps:
@@ -273,14 +273,14 @@ jobs:
--force-build
--platform ${{ matrix.platform }}
env:
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: needs.build-info.outputs.canary-run == 'true'
- name: "Push CI latest image ${{ matrix.platform }}"
run: >
breeze ci-image build
--tag-as-latest --push --run-in-parallel --platform ${{
matrix.platform }}
env:
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
# We only push "amd" image as it is really only needed for any kind of
automated builds in CI
# and currently there is not an easy way to make multi-platform image
from two separate builds
if: matrix.platform == 'linux/amd64' &&
needs.build-info.outputs.canary-run == 'true'
@@ -299,12 +299,12 @@ jobs:
chcek-that-image-builds-quicklly:
timeout-minutes: 5
name: "Check that image builds quickly"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs:
- build-info
- push-early-buildx-cache-to-github-registry
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
UPGRADE_TO_NEWER_DEPENDENCIES: false
PLATFORM: "linux/amd64"
steps:
@@ -333,12 +333,12 @@ jobs:
name: >-
${{needs.build-info.outputs.build-job-description}} CI images
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
env:
DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
DEFAULT_CONSTRAINTS_BRANCH: ${{
needs.build-info.outputs.default-constraints-branch }}
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -360,15 +360,14 @@ jobs:
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- name: >
- Build & Push CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build & Push CI images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: breeze ci-image build --push --tag-as-latest --run-in-parallel
--upgrade-on-failure
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: needs.build-info.outputs.in-workflow-build == 'true'
- name: "Show dependencies to be upgraded"
run: >
@@ -395,16 +394,16 @@ jobs:
name: >
${{needs.build-info.outputs.build-job-description}} PROD images
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, build-ci-images]
env:
DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
DEFAULT_CONSTRAINTS_BRANCH: ${{
needs.build-info.outputs.default-constraints-branch }}
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
BACKEND: sqlite
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
VERSION_SUFFIX_FOR_PYPI: "dev0"
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -427,12 +426,11 @@ jobs:
needs.build-info.outputs.default-branch == 'main'
- name: >
Pull CI image for PROD build:
- ${{ needs.build-info.outputs.default-python-version }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}"
+ "${{needs.build-info.outputs.default-python-version}}":${{
env.IMAGE_TAG }}"
run: breeze ci-image pull --tag-as-latest
env:
# Always use default Python version of CI image for preparing
packages
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
if: needs.build-info.outputs.in-workflow-build == 'true'
- name: "Cleanup dist and context file"
run: rm -fv ./dist/* ./docker-context-files/*
@@ -454,19 +452,14 @@ jobs:
run: mv -v ./dist/*.whl ./docker-context-files
if: needs.build-info.outputs.in-workflow-build == 'true'
- name: >
- Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build & Push PROD images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: >
- breeze prod-image build
- --tag-as-latest
- --run-in-parallel
- --push
- --install-packages-from-context
- --upgrade-on-failure
+ breeze prod-image build --tag-as-latest --run-in-parallel --push
+ --install-packages-from-context --upgrade-on-failure
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
if: needs.build-info.outputs.in-workflow-build == 'true'
- name: "Fix ownership"
@@ -476,7 +469,7 @@ jobs:
run-new-breeze-tests:
timeout-minutes: 10
name: Breeze unit tests
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
steps:
- name: Cleanup repo
@@ -486,7 +479,7 @@ jobs:
persist-credentials: false
- uses: actions/setup-python@v4
with:
- python-version: ${{ needs.build-info.outputs.default-python-version
}}
+ python-version:
"${{needs.build-info.outputs.default-python-version}}"
cache: 'pip'
cache-dependency-path: ./dev/breeze/setup*
- run: python -m pip install --editable ./dev/breeze/
@@ -496,7 +489,7 @@ jobs:
tests-www:
timeout-minutes: 10
name: React WWW tests
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
if: needs.build-info.outputs.run-www-tests == 'true'
steps:
@@ -524,7 +517,7 @@ jobs:
test-openapi-client-generation:
timeout-minutes: 10
name: "Test OpenAPI client generation"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
if: needs.build-info.outputs.needs-api-codegen == 'true'
steps:
@@ -541,7 +534,7 @@ jobs:
test-examples-of-prod-image-building:
timeout-minutes: 60
name: "Test examples of production image building"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
if: needs.build-info.outputs.image-build == 'true'
steps:
@@ -555,7 +548,7 @@ jobs:
- name: "Setup python"
uses: actions/setup-python@v4
with:
- python-version: ${{ needs.build-info.outputs.default-python-version
}}
+ python-version:
"${{needs.build-info.outputs.default-python-version}}"
cache: 'pip'
cache-dependency-path: ./dev/requirements.txt
- name: "Test examples of PROD image building"
@@ -579,11 +572,11 @@ jobs:
wait-for-ci-images:
timeout-minutes: 120
name: "Wait for CI images"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, build-ci-images]
if: needs.build-info.outputs.image-build == 'true'
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
BACKEND: sqlite
steps:
- name: Cleanup repo
@@ -594,13 +587,12 @@ jobs:
persist-credentials: false
- name: "Install Breeze"
uses: ./.github/actions/breeze
- - name: Wait for CI images ${{ env.PYTHON_VERSIONS }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Wait for CI images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG
}}
id: wait-for-images
run: breeze ci-image pull --run-in-parallel --verify --wait-for-image
--tag-as-latest
env:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
- name: "Fix ownership"
run: breeze ci fix-ownership
if: always()
@@ -608,11 +600,11 @@ jobs:
static-checks:
timeout-minutes: 30
name: "Static checks"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
if: needs.build-info.outputs.basic-checks-only == 'false'
steps:
- name: Cleanup repo
@@ -621,13 +613,18 @@ jobs:
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- name: >
- Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: Cache pre-commit envs
+ uses: actions/cache@v3
+ with:
+ path: ~/.cache/pre-commit-full
+ key:
"pre-commit-${{steps.host-python-version.outputs.host-python-version}}-\
+${{ hashFiles('.pre-commit-config.yaml') }}"
+ restore-keys: |
+
pre-commit-full-${{steps.host-python-version.outputs.host-python-version}}
+ pre-commit-full
- name: "Static checks"
run: breeze static-checks --all-files --show-diff-on-failure --color
always
env:
@@ -645,10 +642,10 @@ jobs:
static-checks-basic-checks-only:
timeout-minutes: 30
name: "Static checks: basic checks only"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
if: needs.build-info.outputs.basic-checks-only == 'true'
steps:
- name: Cleanup repo
@@ -656,7 +653,7 @@ jobs:
- name: "Setup python"
uses: actions/setup-python@v4
with:
- python-version: ${{ needs.build-info.outputs.default-python-version
}}
+ python-version:
"${{needs.build-info.outputs.default-python-version}}"
cache: 'pip'
cache-dependency-path: ./dev/breeze/setup*
- name: "Install Breeze"
@@ -667,7 +664,9 @@ jobs:
path: ~/.cache/pre-commit
key:
"pre-commit-basic-${{steps.host-python-version.outputs.host-python-version}}-\
${{ hashFiles('.pre-commit-config.yaml') }}"
- restore-keys:
pre-commit-basic-${{steps.host-python-version.outputs.host-python-version}}
+ restore-keys: |
+
pre-commit-basic-${{steps.host-python-version.outputs.host-python-version}}
+ pre-commit-basic-
- name: Fetch incoming commit ${{ github.sha }} with its parent
uses: actions/checkout@v3
with:
@@ -690,12 +689,12 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
docs:
timeout-minutes: 45
name: "Build docs"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
if: needs.build-info.outputs.docs-build == 'true'
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -704,12 +703,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
with:
persist-credentials: false
submodules: recursive
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: >
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
- uses: actions/cache@v3
id: cache-doc-inventories
with:
@@ -741,11 +737,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
prepare-test-provider-packages-wheel:
timeout-minutes: 80
name: "Build and test provider packages wheel"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
if: needs.build-info.outputs.image-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
steps:
- name: Cleanup repo
@@ -755,13 +751,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
with:
persist-credentials: false
if: needs.build-info.outputs.default-branch == 'main'
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- name: >
- Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
- name: "Cleanup dist files"
run: rm -fv ./dist/*
- name: "Prepare provider documentation"
@@ -807,11 +799,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
prepare-test-provider-packages-sdist:
timeout-minutes: 80
name: "Build and test provider packages sdist"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
if: >
needs.build-info.outputs.image-build == 'true' &&
needs.build-info.outputs.default-branch == 'main' &&
@@ -823,13 +815,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- name: >
- Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
- name: "Cleanup dist files"
run: rm -fv ./dist/*
- name: "Prepare provider packages: sdist"
@@ -859,14 +847,16 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
tests-helm:
timeout-minutes: 80
name: "Python unit tests for Helm chart"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
TEST_TYPES: "Helm"
BACKEND: ""
DB_RESET: "false"
- PYTHON_MAJOR_MINOR_VERSION:
${{needs.build-info.outputs.default-python-version}}
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
+ JOB_ID: "helm-tests"
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
if: >
needs.build-info.outputs.needs-helm-tests == 'true' &&
(github.repository == 'apache/airflow' || github.event_name !=
'schedule') &&
@@ -878,440 +868,219 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- name: >
- Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: Helm"
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: "Helm Unit Tests"
run: breeze testing helm-tests
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: airflow-logs-helm
- path: "./files/airflow_logs*"
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: container-logs-helm
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: "Post Helm Tests"
+ uses: ./.github/actions/post_tests
tests-postgres:
timeout-minutes: 130
name: >
Postgres${{matrix.postgres-version}},Py${{matrix.python-version}}:
${{needs.build-info.outputs.test-types}}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
strategy:
matrix:
- python-version: ${{ fromJson(needs.build-info.outputs.python-versions)
}}
- postgres-version: ${{
fromJson(needs.build-info.outputs.postgres-versions) }}
- exclude: ${{ fromJson(needs.build-info.outputs.postgres-exclude) }}
+ python-version:
"${{fromJson(needs.build-info.outputs.python-versions)}}"
+ postgres-version:
"${{fromJson(needs.build-info.outputs.postgres-versions)}}"
+ exclude: "${{fromJson(needs.build-info.outputs.postgres-exclude)}}"
fail-fast: false
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- BACKEND: postgres
- POSTGRES_VERSION: ${{ matrix.postgres-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
TEST_TYPES: "${{needs.build-info.outputs.test-types}}"
- PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "postgres"
+ PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
+ POSTGRES_VERSION: "${{matrix.postgres-version}}"
+ BACKEND_VERSION: "${{matrix.postgres-version}}"
+ JOB_ID:
"postgres-${{matrix.postgres-version}}-${{matrix.python-version}}"
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
if: needs.build-info.outputs.run-tests == 'true'
steps:
- name: Cleanup repo
+ shell: bash
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade migration file ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset --skip-init -y &&
- airflow db upgrade --to-revision heads --no-reserialize-dags &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade --no-reserialize-dags"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade ORM ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset -y &&
- airflow db upgrade --no-reserialize-dags &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade --no-reserialize-dags"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test Offline SQL generation ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db upgrade --from-version 2.0.0 -r heads
--show-sql-only &&
- airflow db downgrade --to-version 2.0.0 --show-sql-only -y"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: ${{needs.build-info.outputs.test-types}}"
+ - name: "Prepare breeze & CI image:
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: "Migration Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/migration_tests
+ - name: "Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
run: breeze testing tests --run-in-parallel
- env:
- PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
airflow-logs-${{matrix.python-version}}-${{matrix.postgres-version}}
- path: "./files/airflow_logs*"
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
container-logs-postgres-${{matrix.python-version}}-${{matrix.postgres-version}}
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Upload artifact for coverage"
- uses: actions/upload-artifact@v3
- if: needs.build-info.outputs.run-coverage == 'true'
- with:
- name:
coverage-postgres-${{matrix.python-version}}-${{matrix.postgres-version}}
- path: "./files/coverage*.xml"
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: "Post Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/post_tests
tests-mysql:
timeout-minutes: 130
name: >
MySQL${{matrix.mysql-version}}, Py${{matrix.python-version}}:
${{needs.build-info.outputs.test-types}}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
strategy:
matrix:
- python-version: ${{ fromJson(needs.build-info.outputs.python-versions)
}}
- mysql-version: ${{ fromJson(needs.build-info.outputs.mysql-versions) }}
- exclude: ${{ fromJson(needs.build-info.outputs.mysql-exclude) }}
+ python-version:
"${{fromJson(needs.build-info.outputs.python-versions)}}"
+ mysql-version: "${{fromJson(needs.build-info.outputs.mysql-versions)}}"
+ exclude: "${{fromJson(needs.build-info.outputs.mysql-exclude)}}"
fail-fast: false
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- BACKEND: mysql
- MYSQL_VERSION: ${{ matrix.mysql-version }}
- TEST_TYPES: "${{needs.build-info.outputs.test-types}}"
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
- PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
+ TEST_TYPES: "${{needs.build-info.outputs.test-types}}"
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "mysql"
+ PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
+ MYSQL_VERSION: "${{matrix.mysql-version}}"
+ BACKEND_VERSION: "${{matrix.mysql-version}}"
+ JOB_ID: "mysql-${{matrix.mysql-version}}-${{matrix.python-version}}"
if: needs.build-info.outputs.run-tests == 'true'
steps:
- name: Cleanup repo
+ shell: bash
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade migration file ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset --skip-init -y &&
- airflow db upgrade --to-revision heads --no-reserialize-dags &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade --no-reserialize-dags"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade ORM ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset -y &&
- airflow db upgrade --no-reserialize-dags &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade --no-reserialize-dags"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: ${{needs.build-info.outputs.test-types}}"
+ - name: "Prepare breeze & CI image:
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: "Migration Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/migration_tests
+ - name: "Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
run: breeze testing tests --run-in-parallel
- env:
- PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
airflow-logs-${{matrix.python-version}}-${{matrix.mysql-version}}
- path: "./files/airflow_logs*"
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
container-logs-mysql-${{matrix.python-version}}-${{matrix.mysql-version}}
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Upload artifact for coverage"
- uses: actions/upload-artifact@v3
- if: needs.build-info.outputs.run-coverage == 'true'
- with:
- name:
coverage-mysql-${{matrix.python-version}}-${{matrix.mysql-version}}
- path: "./files/coverage*.xml"
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: "Post Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/post_tests
tests-mssql:
timeout-minutes: 130
name: >
MSSQL${{matrix.mssql-version}}, Py${{matrix.python-version}}:
${{needs.build-info.outputs.test-types}}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
strategy:
matrix:
- python-version: ${{ fromJson(needs.build-info.outputs.python-versions)
}}
- mssql-version: ${{ fromJson(needs.build-info.outputs.mssql-versions) }}
- exclude: ${{ fromJson(needs.build-info.outputs.mssql-exclude) }}
+ python-version:
"${{fromJson(needs.build-info.outputs.python-versions)}}"
+ mssql-version: "${{fromJson(needs.build-info.outputs.mssql-versions)}}"
+ exclude: "${{fromJson(needs.build-info.outputs.mssql-exclude)}}"
fail-fast: false
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- BACKEND: mssql
- MSSQL_VERSION: ${{ matrix.mssql-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
TEST_TYPES: "${{needs.build-info.outputs.test-types}}"
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
- PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "mssql"
+ PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
+ MSSQL_VERSION: "${{matrix.mssql-version}}"
+ BACKEND_VERSION: "${{matrix.mssql-version}}"
+ JOB_ID: "mssql-${{matrix.mssql-version}}-${{matrix.python-version}}"
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
if: needs.build-info.outputs.run-tests == 'true'
steps:
- name: Cleanup repo
+ shell: bash
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade migration file ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset --skip-init -y &&
- airflow db upgrade --to-revision heads &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade ORM ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset -y &&
- airflow db upgrade &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: ${{needs.build-info.outputs.test-types}}"
+ - name: "Prepare breeze & CI image:
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: "Migration Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/migration_tests
+ - name: "Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
run: breeze testing tests --run-in-parallel
- env:
- PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
airflow-logs-${{matrix.python-version}}-${{matrix.mssql-version}}
- path: "./files/airflow_logs*"
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name:
container-logs-mssql-${{matrix.python-version}}-${{matrix.mssql-version}}
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Upload artifact for coverage"
- uses: actions/upload-artifact@v3
- if: needs.build-info.outputs.run-coverage == 'true'
- with:
- name:
coverage-mssql-${{matrix.python-version}}-${{matrix.mssql-version}}
- path: "./files/coverage*.xml"
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: "Post Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/post_tests
tests-sqlite:
timeout-minutes: 130
name: >
Sqlite Py${{matrix.python-version}}:
${{needs.build-info.outputs.test-types}}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images]
strategy:
matrix:
python-version: ${{ fromJson(needs.build-info.outputs.python-versions)
}}
exclude: ${{ fromJson(needs.build-info.outputs.sqlite-exclude) }}
fail-fast: false
+ if: needs.build-info.outputs.run-tests == 'true'
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- BACKEND: sqlite
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
TEST_TYPES: "${{needs.build-info.outputs.test-types}}"
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
+ PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
FULL_TESTS_NEEDED: "${{needs.build-info.outputs.full-tests-needed}}"
- PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
- if: needs.build-info.outputs.run-tests == 'true'
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "sqlite"
+ BACKEND_VERSION: ""
+ JOB_ID: "sqlite-${{matrix.python-version}}"
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
steps:
- name: Cleanup repo
+ shell: bash
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade migration file ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset --skip-init -y &&
- airflow db upgrade --to-revision heads &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Test downgrade ORM ${{ env.BACKEND }}"
- run: >
- breeze shell "airflow db reset -y &&
- airflow db upgrade &&
- airflow db downgrade -r e959f08ac86c -y &&
- airflow db upgrade"
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: ${{needs.build-info.outputs.test-types}}"
+ - name: "Prepare breeze & CI image:
${{matrix.python-version}}:${{env.IMAGE_TAG}}"
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: "Migration Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/migration_tests
+ - name: "Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
run: breeze testing tests --run-in-parallel
- env:
- PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: airflow-logs-${{matrix.python-version}}
- path: './files/airflow_logs*'
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: container-logs-sqlite-${{matrix.python-version}}
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Upload artifact for coverage"
- uses: actions/upload-artifact@v3
- if: needs.build-info.outputs.run-coverage == 'true'
- with:
- name: coverage-sqlite-${{matrix.python-version}}
- path: ./files/coverage*.xml
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: "Post Tests:
${{matrix.python-version}}:${{needs.build-info.outputs.test-types}}"
+ uses: ./.github/actions/post_tests
tests-quarantined:
timeout-minutes: 60
name: "Quarantined tests"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
continue-on-error: true
needs: [build-info, wait-for-ci-images]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- MYSQL_VERSION: ${{needs.build-info.outputs.default-mysql-version}}
- POSTGRES_VERSION: ${{needs.build-info.outputs.default-postgres-version}}
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ TEST_TYPES: "Quarantined"
+ PR_LABELS: "${{needs.build-info.outputs.pull-request-labels}}"
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
+ DEBUG_RESOURCES: "${{needs.build-info.outputs.debug-resources}}"
+ BACKEND: "sqlite"
+ BACKEND_VERSION: ""
+ JOB_ID:
"quarantined-${{needs.build-info.outputs.default-python-version}}"
+ COVERAGE: "${{needs.build-info.outputs.run-coverage}}"
if: needs.build-info.outputs.run-tests == 'true'
steps:
- name: Cleanup repo
+ shell: bash
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: "Set issue id for main"
- if: github.ref == 'refs/heads/main'
- run: |
- echo "ISSUE_ID=10118" >> ${GITHUB_ENV}
- - name: "Set issue id for v1-10-stable"
- if: github.ref == 'refs/heads/v1-10-stable'
- run: |
- echo "ISSUE_ID=10127" >> ${GITHUB_ENV}
- - name: "Set issue id for v1-10-test"
- if: github.ref == 'refs/heads/v1-10-test'
- run: |
- echo "ISSUE_ID=10128" >> ${GITHUB_ENV}
- - name: Pull CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze ci-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- - name: "Tests: Quarantined"
+ - name: >
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
+ - name: >
+ Tests:
${{needs.build-info.outputs.default-python-version}}:Quarantined
run: breeze testing tests --run-in-parallel || true
- env:
- PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- TEST_TYPES: "Quarantined"
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
- - name: "Upload Quarantine test results"
- uses: actions/upload-artifact@v3
- if: always()
- with:
- name: quarantined-tests
- path: "files/test_result-*.xml"
- retention-days: 7
- - name: "Upload airflow logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: airflow-logs-quarantined-${{ matrix.backend }}
- path: "./files/airflow_logs*"
- retention-days: 7
- - name: "Upload container logs"
- uses: actions/upload-artifact@v3
- if: failure()
- with:
- name: container-logs-quarantined-${{ matrix.backend }}
- path: "./files/container_logs*"
- retention-days: 7
- - name: "Upload artifact for coverage"
- uses: actions/upload-artifact@v3
- if: needs.build-info.outputs.run-coverage == 'true'
- with:
- name: coverage-quarantined-${{ matrix.backend }}
- path: "./files/coverage*.xml"
- retention-days: 7
- - name: "Fix ownership"
- run: breeze ci fix-ownership
- if: always()
+ - name: >
+ Post Tests:
${{needs.build-info.outputs.default-python-version}}:Quarantined"
+ uses: ./.github/actions/post_tests
upload-coverage:
timeout-minutes: 15
name: "Upload coverage"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
continue-on-error: true
needs:
- build-info
@@ -1321,7 +1090,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
- tests-mssql
- tests-quarantined
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
# Only upload coverage on merges to main
if: needs.build-info.outputs.run-coverage == 'true'
steps:
@@ -1346,13 +1115,13 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
wait-for-prod-images:
timeout-minutes: 120
name: "Wait for PROD images"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-ci-images, build-prod-images]
if: needs.build-info.outputs.image-build == 'true'
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
BACKEND: sqlite
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -1362,7 +1131,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
persist-credentials: false
- name: "Install Breeze"
uses: ./.github/actions/breeze
- - name: Wait for PROD images ${{ env.PYTHON_VERSIONS }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Wait for PROD images ${{ env.PYTHON_VERSIONS }}:${{
env.IMAGE_TAG }}
# We wait for the images to be available either from
"build-images.yml' run as pull_request_target
# or from build-prod-images above.
# We are utilising single job to wait for all images because this job
merely waits
@@ -1370,8 +1139,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
run: breeze prod-image pull --verify --wait-for-image --run-in-parallel
env:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
- name: "Fix ownership"
run: breeze ci fix-ownership
if: always()
@@ -1379,11 +1147,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
test-docker-compose-quick-start:
timeout-minutes: 60
name: "Test docker-compose quick start"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-prod-images]
if: needs.build-info.outputs.image-build == 'true'
env:
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -1392,12 +1160,11 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
with:
fetch-depth: 2
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- - name: Pull PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
- run: breeze prod-image pull --tag-as-latest
- env:
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: >
+ Prepare breeze & PROD image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
+ with:
+ pull-image-type: 'PROD'
- name: "Test docker-compose quick start"
run: breeze testing docker-compose-tests
- name: "Fix ownership"
@@ -1407,15 +1174,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
tests-kubernetes:
timeout-minutes: 240
name: "Helm: ${{matrix.executor}} -
${{needs.build-info.outputs.kubernetes-versions-list-as-string}}"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-prod-images]
strategy:
matrix:
executor: [KubernetesExecutor, CeleryExecutor, LocalExecutor]
fail-fast: false
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: >
( needs.build-info.outputs.run-kubernetes-tests == 'true' ||
needs.build-info.outputs.needs-helm-tests == 'true' ) &&
@@ -1429,11 +1196,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
persist-credentials: false
- name: "Install Breeze"
uses: ./.github/actions/breeze
- - name: Pull PROD images ${{ env.PYTHON_VERSIONS }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Pull PROD images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG }}
run: breeze prod-image pull --run-in-parallel --tag-as-latest
env:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- name: "Cache bin folder with tools for kubernetes testing"
uses: actions/cache@v3
with:
@@ -1445,7 +1211,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
KUBERNETES_VERSIONS:
${{needs.build-info.outputs.kubernetes-versions-list-as-string}}
EXECUTOR: ${{matrix.executor}}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
VERBOSE: false
- name: Upload KinD logs on failure
${{needs.build-info.outputs.kubernetes-combos}}
uses: actions/upload-artifact@v3
@@ -1473,7 +1238,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
contents: write
timeout-minutes: 40
name: "Constraints"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs:
- build-info
- docs
@@ -1486,8 +1251,8 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
- tests-postgres
- push-early-buildx-cache-to-github-registry
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: needs.build-info.outputs.upgrade-to-newer-dependencies != 'false'
steps:
- name: Cleanup repo
@@ -1499,11 +1264,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
submodules: recursive
- name: "Install Breeze"
uses: ./.github/actions/breeze
- - name: Pull CI images ${{ env.PYTHON_VERSIONS }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}
+ - name: Pull CI images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG }}
run: breeze ci-image pull --run-in-parallel --tag-as-latest
env:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
- name: "Generate constraints"
run: |
breeze release-management generate-constraints --run-in-parallel \
@@ -1548,7 +1312,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
packages: write
timeout-minutes: 50
name: "Push Image Cache"
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs:
- build-info
- constraints
@@ -1559,7 +1323,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
matrix:
platform: ["linux/amd64", "linux/arm64"]
env:
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm
-rf /workspace/*"
@@ -1567,16 +1331,12 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
uses: actions/checkout@v3
with:
persist-credentials: false
- - name: "Install Breeze"
- uses: ./.github/actions/breeze
- name: >
- Pull CI image ${{ needs.build-info.outputs.default-python-version }}
for PROD build
- ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{
env.IMAGE_TAG_FOR_THE_BUILD }}"
- run: breeze ci-image pull --tag-as-latest
+ Prepare breeze & CI image:
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+ uses: ./.github/actions/prepare_breeze_and_image
env:
# Always use default Python version of CI image for preparing
packages
- PYTHON_MAJOR_MINOR_VERSION: ${{
needs.build-info.outputs.default-python-version }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ PYTHON_MAJOR_MINOR_VERSION:
"${{needs.build-info.outputs.default-python-version}}"
- name: "Cleanup dist and context file"
run: rm -fv ./dist/* ./docker-context-files/*
- name: "Prepare airflow package for PROD build"
@@ -1603,13 +1363,13 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
--force-build
--platform ${{ matrix.platform }}
env:
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
- name: "Push CI latest image ${{ matrix.platform }}"
run: >
breeze ci-image build
--tag-as-latest --push --run-in-parallel --platform ${{
matrix.platform }}
env:
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: matrix.platform == 'linux/amd64'
- name: "Move dist packages to docker-context files"
run: mv -v ./dist/*.whl ./docker-context-files
@@ -1625,7 +1385,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
breeze prod-image build --tag-as-latest
--install-packages-from-context
--push --run-in-parallel --platform ${{ matrix.platform }}
env:
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
if: matrix.platform == 'linux/amd64'
- name: "Stop ARM instance"
run: ./scripts/ci/images/ci_stop_arm_instance.sh
@@ -1639,7 +1399,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
name: >
Build CI ARM images
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
- runs-on: ${{ needs.build-info.outputs.runs-on }}
+ runs-on: "${{needs.build-info.outputs.runs-on}}"
needs:
- build-info
- wait-for-ci-images
@@ -1652,7 +1412,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
env:
DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }}
DEFAULT_CONSTRAINTS_BRANCH: ${{
needs.build-info.outputs.default-constraints-branch }}
- RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
+ RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
if: >
needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' &&
needs.build-info.outputs.in-workflow-build == 'true' &&
@@ -1670,19 +1430,15 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
- name: "Start ARM instance"
run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
- name: >
- Build CI ARM images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+ Build CI ARM images ${{ env.IMAGE_TAG }}
${{ needs.build-info.outputs.all-python-versions-list-as-string }}
run: >
- breeze ci-image build
- --run-in-parallel
- --builder airflow_cache
- --platform "linux/arm64"
+ breeze ci-image build --run-in-parallel --builder airflow_cache
--platform "linux/arm64"
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{
needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
- IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
PYTHON_VERSIONS: ${{
needs.build-info.outputs.all-python-versions-list-as-string }}
- DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
+ DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
- name: "Stop ARM instance"
run: ./scripts/ci/images/ci_stop_arm_instance.sh
if: always()
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 2b1de482f4..765de06cb4 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -544,7 +544,9 @@ def enter_shell(**kwargs) -> RunCommandResult:
if shell_params.backend == "mssql":
get_console().print("\n[error]MSSQL is not supported on ARM
architecture[/]\n")
return 1
- command_result = run_command(cmd, env=env_variables, text=True,
check=False)
+ command_result = run_command(
+ cmd, env=env_variables, text=True, check=False,
output_outside_the_group=True
+ )
if command_result.returncode == 0:
return command_result
else:
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index f79335fa99..7732f2feab 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -96,6 +96,7 @@ def run_with_debug(
command: list[str],
debug: bool,
enable_input: bool = False,
+ output_outside_the_group: bool = False,
**kwargs,
) -> RunCommandResult:
env_variables = get_env_variables_for_docker_commands(params)
@@ -130,6 +131,7 @@ echo -e '\\e[34mRun this command to debug:
return run_command(
base_command,
env=env_variables,
+ output_outside_the_group=output_outside_the_group,
**kwargs,
)
else:
@@ -138,6 +140,7 @@ echo -e '\\e[34mRun this command to debug:
base_command,
env=env_variables,
check=False,
+ output_outside_the_group=output_outside_the_group,
**kwargs,
)
@@ -184,6 +187,7 @@ def prepare_airflow_packages(
params=shell_params,
command=["/opt/airflow/scripts/in_container/run_prepare_airflow_packages.sh"],
debug=debug,
+ output_outside_the_group=True,
)
sys.exit(result_command.returncode)
@@ -491,6 +495,7 @@ def verify_provider_packages(
params=shell_params,
command=cmd_to_run,
debug=debug,
+ output_outside_the_group=True,
)
sys.exit(result_command.returncode)