You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/10/30 20:40:54 UTC

[airflow] branch main updated: Extract Build images to composite actions (#27372)

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 53c91f178a Extract Build images to composite actions (#27372)
53c91f178a is described below

commit 53c91f178ac848d451bd001c446e0079efe10ffb
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Sun Oct 30 21:40:43 2022 +0100

    Extract Build images to composite actions (#27372)
    
    Follow-up after #27371
---
 .github/actions/build-ci-images/action.yml         |  56 +++++++++++
 .github/actions/build-prod-images/action.yml       |  71 ++++++++++++++
 .github/workflows/build-images.yml                 | 102 +++++----------------
 .github/workflows/ci.yml                           | 100 ++++----------------
 .../commands/release_management_commands.py        |   1 +
 5 files changed, 166 insertions(+), 164 deletions(-)

diff --git a/.github/actions/build-ci-images/action.yml b/.github/actions/build-ci-images/action.yml
new file mode 100644
index 0000000000..08259aadab
--- /dev/null
+++ b/.github/actions/build-ci-images/action.yml
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: 'Build CI images'
+description: 'Build CI images'
+runs:
+  using: "composite"
+  steps:
+    - name: "Install Breeze"
+      uses: ./.github/actions/breeze
+    - name: "Regenerate dependencies"
+      # This is done in case some someone updated provider dependencies and did not generate
+      # dependencies - in which case build image might fail because of lack of new dependencies
+      shell: bash
+      run: |
+        pip install rich>=12.4.4 pyyaml
+        python scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
+      if: env.UPGRADE_TO_NEWER_DEPENDENCIES != 'false'
+    - name: "Build & Push AMD64 CI images ${{ env.IMAGE_TAG }} ${{ env.PYTHON_VERSIONS }}"
+      shell: bash
+      run: breeze ci-image build --push --tag-as-latest --run-in-parallel --upgrade-on-failure
+    - name: "Show dependencies to be upgraded"
+      shell: bash
+      run: >
+        breeze release-management generate-constraints --run-in-parallel
+        --airflow-constraints-mode constraints-source-providers
+      if: env.UPGRADE_TO_NEWER_DEPENDENCIES != 'false'
+    - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE }}
+      if: failure() || cancelled()
+      shell: bash
+      run: breeze ci-image build --push --empty-image --run-in-parallel
+      env:
+        IMAGE_TAG: ${{ env.IMAGE_TAG }}
+    - name: "Candidates for pip resolver backtrack triggers"
+      shell: bash
+      run: breeze ci find-newer-dependencies --max-age 1 --python 3.7
+      if: failure() || cancelled()
+    - name: "Fix ownership"
+      shell: bash
+      run: breeze ci fix-ownership
+      if: always()
diff --git a/.github/actions/build-prod-images/action.yml b/.github/actions/build-prod-images/action.yml
new file mode 100644
index 0000000000..b4cec13ddc
--- /dev/null
+++ b/.github/actions/build-prod-images/action.yml
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+name: 'Build PROD images'
+description: 'Build PROD images'
+inputs:
+  build-provider-packages:
+    description: 'Whether to build provider packages from sources'
+    required: true
+runs:
+  using: "composite"
+  steps:
+    - name: "Install Breeze"
+      uses: ./.github/actions/breeze
+    - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
+      shell: bash
+      run: |
+        pip install rich>=12.4.4 pyyaml
+        python scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
+      if: env.UPGRADE_TO_NEWER_DEPENDENCIES != 'false'
+    - name: "Pull CI image for PROD build: ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG }}"
+      shell: bash
+      run: breeze ci-image pull --tag-as-latest
+      env:
+        PYTHON_MAJOR_MINOR_VERSION: "3.7"
+    - name: "Cleanup dist and context file"
+      shell: bash
+      run: rm -fv ./dist/* ./docker-context-files/*
+    - name: "Prepare providers packages"
+      shell: bash
+      run: >
+        breeze release-management prepare-provider-packages
+        --package-list-file ./scripts/ci/installed_providers.txt
+        --package-format wheel --version-suffix-for-pypi dev0
+      if: ${{ inputs.build-provider-packages == 'true' }}
+    - name: "Prepare airflow package"
+      shell: bash
+      run: >
+        breeze release-management prepare-airflow-package
+        --package-format wheel --version-suffix-for-pypi dev0
+    - name: "Move dist packages to docker-context files"
+      shell: bash
+      run: mv -v ./dist/*.whl ./docker-context-files
+    - name: "Build & Push PROD images ${{ env.IMAGE_TAG }}:${{ env.PYTHON_VERSIONS }}"
+      shell: bash
+      run: >
+        breeze prod-image build --tag-as-latest --run-in-parallel --push
+        --install-packages-from-context --upgrade-on-failure
+    - name: Push empty PROD images ${{ env.IMAGE_TAG }}
+      shell: bash
+      run: breeze prod-image build --cleanup-context --push --empty-image --run-in-parallel
+      if: failure() || cancelled()
+    - name: "Fix ownership"
+      shell: bash
+      run: breeze ci fix-ownership
+      if: always()
diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index c7d544ca70..0f399da2f9 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -162,7 +162,8 @@ jobs:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "Build CI images ${{ needs.build-info.outputs.all-python-versions-list-as-string }}"
+    name: >
+      Build CI images ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
     runs-on: ${{ needs.build-info.outputs.runs-on }}
     needs: [build-info]
     if: |
@@ -173,7 +174,6 @@ jobs:
       DEFAULT_CONSTRAINTS_BRANCH: ${{ needs.build-info.outputs.default-constraints-branch }}
       RUNS_ON: ${{ needs.build-info.outputs.runs-on }}
       BACKEND: sqlite
-      outputs: ${{toJSON(needs.build-info.outputs) }}
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
@@ -182,10 +182,6 @@ jobs:
           ref: ${{ needs.build-info.outputs.target-commit-sha }}
           persist-credentials: false
           submodules: recursive
-      - name: "Setup python"
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ needs.build-info.outputs.default-python-version }}
       - name: >
           Checkout "main branch to 'main-airflow' folder
           to use ci/scripts from there.
@@ -208,45 +204,22 @@ jobs:
           mv -v "main-airflow/dev" "."
           rm -rfv "./github/actions"
           mv -v "main-airflow/.github/actions" "actions"
-      - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
-        run: |
-          pip install rich>=12.4.4 pyyaml
-          python scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
-        if: needs.build-info.outputs.default-branch == 'main'
-      - name: "Install Breeze"
-        uses: ./.github/actions/breeze
-      - name: >-
-          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
+      - name: >
+          Build CI Images ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
+        uses: ./.github/actions/build-ci-images
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
-      - name: "Show dependencies to be upgraded"
-        run: >
-          breeze release-management generate-constraints --run-in-parallel
-          --airflow-constraints-mode constraints-source-providers
-        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 }}
-        if: failure() || cancelled()
-        run: breeze ci-image build --push --empty-image --run-in-parallel
-      - name: "Candidates for pip resolver backtrack triggers"
-        if: failure() || cancelled()
-        run: >
-          breeze ci find-newer-dependencies --max-age 1
-          --python "${{ needs.build-info.outputs.default-python-version }}"
-      - name: "Fix ownership"
-        run: breeze ci fix-ownership
-        if: always()
+          PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
+          DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
 
   build-prod-images:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "Build PROD images ${{ needs.build-info.outputs.all-python-versions-list-as-string }}"
+    name: >
+      Build PROD images
+      ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
     runs-on: ${{ needs.build-info.outputs.runs-on }}
     needs: [build-info, build-ci-images]
     if: |
@@ -287,55 +260,22 @@ jobs:
           mv -v "main-airflow/dev" "."
           rm -rfv "./github/actions"
           mv -v "main-airflow/.github/actions" "actions"
-      - name: "Install Breeze"
-        uses: ./.github/actions/breeze
-      - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
-        run: |
-          pip install rich>=12.4.4 pyyaml
-          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 }}
-        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 }}
-      - name: "Cleanup dist and context file"
-        run: rm -fv ./dist/*  ./docker-context-files/*
-      - name: "Prepare providers packages"
-        run: >
-          breeze release-management prepare-provider-packages
-          --package-list-file ./scripts/ci/installed_providers.txt
-          --package-format wheel
-          --version-suffix-for-pypi dev0
-        if: needs.build-info.outputs.default-branch == 'main'
-      - name: "Prepare airflow package"
-        run: >
-          breeze release-management prepare-airflow-package
-          --package-format wheel --version-suffix-for-pypi dev0
-      - name: "Move dist packages to docker-context files"
-        run: mv -v ./dist/*.whl ./docker-context-files
-      - name: >-
-          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
+          Build PROD Images
+          ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
+        uses: ./.github/actions/build-prod-images
+        if: needs.build-info.outputs.in-workflow-build == 'true'
+        with:
+          build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
-      - name: Push empty PROD images ${{ env.IMAGE_TAG }}
-        if: failure() || cancelled()
-        run: breeze prod-image build --cleanup-context --push --empty-image --run-in-parallel
-      - name: "Fix ownership"
-        run: breeze ci fix-ownership
-        if: always()
-
+          PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
+          DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
 
   build-ci-images-arm:
     timeout-minutes: 50
-    name: "Build ARM CI images ${{ needs.build-info.outputs.all-python-versions-list-as-string }}"
+    name: "Build ARM CI images ${{needs.build-info.outputs.all-python-versions-list-as-string}}"
     runs-on: ${{ needs.build-info.outputs.runs-on }}
     needs: [build-info, build-prod-images]
     if: |
@@ -384,13 +324,13 @@ jobs:
         uses: ./.github/actions/breeze
       - name: >
           Build ARM CI images ${{ env.IMAGE_TAG }}
-          ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+          ${{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 }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+          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
         if: always()
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bbf51b1787..85461787b8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -332,7 +332,7 @@ jobs:
     timeout-minutes: 80
     name: >-
       ${{needs.build-info.outputs.build-job-description}} CI images
-      ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+      ${{needs.build-info.outputs.all-python-versions-list-as-string}}
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs: [build-info]
     env:
@@ -349,43 +349,16 @@ jobs:
           persist-credentials: false
           submodules: recursive
         if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Install Breeze"
-        uses: ./.github/actions/breeze
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
-        run: |
-          pip install rich>=12.4.4 pyyaml
-          python scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
-        if: >
-          needs.build-info.outputs.in-workflow-build == 'true' &&
-          needs.build-info.outputs.default-branch == 'main'
       - name: >
-          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
+          Build CI Images
+          ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
+        uses: ./.github/actions/build-ci-images
+        if: needs.build-info.outputs.in-workflow-build == 'true'
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+          PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
           DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Show dependencies to be upgraded"
-        run: >
-          breeze release-management generate-constraints --run-in-parallel
-          --airflow-constraints-mode constraints-source-providers
-        env:
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.python-versions-list-as-string }}
-        if: >
-          needs.build-info.outputs.upgrade-to-newer-dependencies != 'false' &&
-          needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Candidates for pip resolver backtrack triggers"
-        if: failure() || cancelled()
-        run: >
-          breeze ci find-newer-dependencies --max-age 1
-          --python "${{ needs.build-info.outputs.default-python-version }}"
-      - name: "Fix ownership"
-        run: breeze ci fix-ownership
-        if: always() && needs.build-info.outputs.in-workflow-build == 'true'
 
   build-prod-images:
     permissions:
@@ -393,7 +366,7 @@ jobs:
     timeout-minutes: 80
     name: >
       ${{needs.build-info.outputs.build-job-description}} PROD images
-      ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+      ${{needs.build-info.outputs.all-python-versions-list-as-string}}
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs: [build-info, build-ci-images]
     env:
@@ -414,57 +387,18 @@ jobs:
           persist-credentials: false
           submodules: recursive
         if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Install Breeze"
-        uses: ./.github/actions/breeze
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
-        run: |
-          pip install rich>=12.4.4 pyyaml
-          python scripts/ci/pre_commit/pre_commit_update_providers_dependencies.py
-        if: >
-          needs.build-info.outputs.in-workflow-build == 'true' &&
-          needs.build-info.outputs.default-branch == 'main'
       - name: >
-          Pull CI image for PROD 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}}"
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Cleanup dist and context file"
-        run: rm -fv ./dist/* ./docker-context-files/*
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Prepare providers packages"
-        run: >
-          breeze release-management prepare-provider-packages
-          --package-list-file ./scripts/ci/installed_providers.txt
-          --package-format wheel --version-suffix-for-pypi dev0
-        if: >
-          needs.build-info.outputs.in-workflow-build == 'true' &&
-          needs.build-info.outputs.default-branch == 'main'
-      - name: "Prepare airflow package"
-        run: >
-          breeze release-management prepare-airflow-package
-          --package-format wheel --version-suffix-for-pypi dev0
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Move dist packages to docker-context files"
-        run: mv -v ./dist/*.whl ./docker-context-files
+          Build PROD Images
+          ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
+        uses: ./.github/actions/build-prod-images
         if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: >
-          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
+        with:
+          build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
-        if: needs.build-info.outputs.in-workflow-build == 'true'
-      - name: "Fix ownership"
-        run: breeze ci fix-ownership
-        if: always() && needs.build-info.outputs.in-workflow-build == 'true'
+          PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
+          DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
 
   run-new-breeze-tests:
     timeout-minutes: 10
@@ -1398,7 +1332,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
     timeout-minutes: 50
     name: >
       Build CI ARM images
-      ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+      ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
     runs-on: "${{needs.build-info.outputs.runs-on}}"
     needs:
       - build-info
@@ -1431,13 +1365,13 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
       - name: >
           Build CI ARM images ${{ env.IMAGE_TAG }}
-          ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+          ${{needs.build-info.outputs.all-python-versions-list-as-string}}:${{env.IMAGE_TAG}}
         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 }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.all-python-versions-list-as-string }}
+          PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
           DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
       - name: "Stop ARM instance"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
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 7732f2feab..b348eecee1 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -292,6 +292,7 @@ def run_generate_constraints(
         command=cmd_to_run,
         debug=debug,
         output=output,
+        output_outside_the_group=True,
     )
     return (
         generate_constraints_result.returncode,