Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
28897f7
Run triggers inline with dag test (#34642)
dstandish Nov 27, 2023
881d802
improved visibility of tasks in ActionModal for taskInstance (#35810)
theaadya Nov 27, 2023
ecbc959
Use ExitStack to manage mutation of secrets_backend_list in dag.test …
dstandish Nov 27, 2023
713dfdf
Implement `is_authorized_variable` in AWS auth manager (#35804)
vincbeck Nov 27, 2023
bc95360
Relax mandatory requirement for start_date when schedule=None (#35356)
vishnucoder1 Nov 28, 2023
9be2ffc
Add a public interface for custom weight_rule implementation (#35210)
hussein-awala Nov 28, 2023
9798f31
Consolidate the call of change_state to fail or success in the core e…
hussein-awala Nov 28, 2023
2fba7bd
Remove workaround for pymssql failing compilation with new Cython (#3…
potiuk Nov 28, 2023
54dc2b9
Change dag grid overscroll behaviour to auto (#35717)
yermalov-here Nov 28, 2023
7e9b6a4
Revert "Prevent assignment of non JSON serializable values to DagRun.…
ephraimbuddy Nov 29, 2023
90f10b1
Rename `Connection.to_json_dict` to `Connection.to_dict` (#35894)
Taragolis Nov 30, 2023
9ba72a2
Move `duckdb` & `pandas` import in tutorial DAG into task (#35964)
ephraimbuddy Nov 30, 2023
7b03a11
Add processor_subdir to import_error table to handle multiple dag pro…
tirkarthi Nov 30, 2023
f6cfd45
Fix airflow db shell needing an extra keypress to exit (#35982)
renzepost Nov 30, 2023
9ea67c8
Bump FAB to 4.3.10 (#35991)
potiuk Nov 30, 2023
8a0252d
Add feature to build "chicken-egg" packages from sources (#35890)
potiuk Dec 1, 2023
9281ccb
Pass conn ID to ObjectStoragePath via URI (#35913)
uranusjr Dec 1, 2023
72d610a
Switch "latest" image to point to newest supported Python version (#3…
potiuk Dec 1, 2023
e1f469b
Add support for chicken-egg providers to dockerhub release process (#…
potiuk Dec 1, 2023
08188ed
[AIP-44] Introduce Pydantic model for LogTemplate (#36004)
mhenc Dec 1, 2023
4652d7f
Add multiselect to run state in grid view (#35403)
vchiapaikeo Dec 1, 2023
d6ce328
Change Trigger UI to use HTTP POST in web ui (#36026)
jscheffl Dec 2, 2023
552fbe3
Use dropdown instead of buttons when there are more than 10 retries i…
tirkarthi Dec 3, 2023
d265100
34058: Fix UI Grid error when DAG has been removed. (#36028)
avkirilishin Dec 3, 2023
f4c4a06
Limit Pytest-asyncio to < 0.23.1 (#36037)
potiuk Dec 3, 2023
be0fb8b
Limit pytest-asyncio even more - to <0.23.0 (#36040)
potiuk Dec 4, 2023
a257350
Add the section describing the security model of DAG Author capabilit…
potiuk Dec 4, 2023
beba3b8
Remove pytest-asyncio upper-binding limitatin (#36046)
potiuk Dec 4, 2023
be86dd3
Add XCom tab to Grid (#35719)
hduong-mwam Dec 4, 2023
4430283
Update supported-versions.rst (#36058)
andar9 Dec 4, 2023
a42d3d8
Avoid crushing container when directory is not found on rm (#36050)
romsharon98 Dec 4, 2023
2a008cf
Update reset_user_sessions to work from either CLI or web (#36056)
pdebelak Dec 4, 2023
48d7ac4
Mark daskexecutor provider as removed (#35965)
potiuk Nov 30, 2023
7d1211d
Fix gantt chart queued duration when queued_dttm is greater than star…
tirkarthi Dec 5, 2023
d347d70
Add read access to pools for viewer role (#35352)
marekhanus Dec 5, 2023
2ef5689
Replace architecture diagram of Airflow with diagrams-generated one (…
potiuk Dec 5, 2023
5d3aa8d
Account for change in UTC offset when calculating next schedule (#35887)
uranusjr Dec 6, 2023
9a2fae3
Revert "Add a public interface for custom weight_rule implementation …
hussein-awala Dec 6, 2023
37519bf
Add support for tabs (and other UX components) to docs (#36041)
josh-fell Dec 6, 2023
5f74d7d
Fix optimization of PROD image building side-effect
potiuk Dec 7, 2023
bdadabc
Use S3 hook instead of AwsGenericHook in AWS S3 FS (#35973)
hussein-awala Nov 30, 2023
c26eaf5
Allow storage options to be passed (#35820)
bolkedebruin Dec 8, 2023
d0c1c45
Update RELEASE_NOTES.rst
ephraimbuddy Dec 5, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/actions/build-prod-images/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ inputs:
build-provider-packages:
description: 'Whether to build provider packages from sources'
required: true
chicken-egg-providers:
description: 'List of chicken-egg provider packages to build from sources'
required: true
runs:
using: "composite"
steps:
Expand All @@ -41,6 +44,15 @@ runs:
--package-list-file ./airflow/providers/installed_providers.txt
--package-format wheel --version-suffix-for-pypi dev0
if: ${{ inputs.build-provider-packages == 'true' }}
- name: "Prepare chicken-eggs provider packages"
# In case of provider packages which use latest dev0 version of providers, we should prepare them
# from the source code, not from the PyPI because they have apache-airflow>=X.Y.Z dependency
# And when we prepare them from sources they will have apache-airflow>=X.Y.Z.dev0
shell: bash
run: >
breeze release-management prepare-provider-packages
--package-format wheel --version-suffix-for-pypi dev0 ${{ inputs.chicken-egg-providers }}
if: ${{ inputs.build-provider-packages != 'true' && inputs.chicken-egg-providers != '' }}
- name: "Prepare airflow package"
shell: bash
run: >
Expand All @@ -54,6 +66,13 @@ runs:
with:
name: source-constraints
path: ./docker-context-files
if: ${{ inputs.build-provider-packages == 'true' }}
- name: "Download constraints from the Generate & Verify build"
uses: actions/download-artifact@v3
with:
name: constraints
path: ./docker-context-files
if: ${{ inputs.build-provider-packages != 'true' }}
- name: "Build & Push PROD images with source providers ${{ env.IMAGE_TAG }}:${{ env.PYTHON_VERSIONS }}"
shell: bash
run: >
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ jobs:
is-arm-runner: ${{ steps.selective-checks.outputs.is-arm-runner }}
is-vm-runner: ${{ steps.selective-checks.outputs.is-vm-runner }}
is-k8s-runner: ${{ steps.selective-checks.outputs.is-k8s-runner }}
chicken-egg-providers: ${{ steps.selective-checks.outputs.chicken-egg-providers }}
target-commit-sha: "${{steps.discover-pr-merge-commit.outputs.target-commit-sha ||
github.event.pull_request.head.sha ||
github.sha
Expand Down Expand Up @@ -293,6 +294,7 @@ jobs:
uses: ./.github/actions/build-prod-images
with:
build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
chicken-egg-providers: ${{ needs.build-info.outputs.chicken-egg-providers }}
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
Expand Down
157 changes: 149 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ jobs:
is-arm-runner: ${{ steps.selective-checks.outputs.is-arm-runner }}
is-vm-runner: ${{ steps.selective-checks.outputs.is-vm-runner }}
is-k8s-runner: ${{ steps.selective-checks.outputs.is-k8s-runner }}
chicken-egg-providers: ${{ steps.selective-checks.outputs.chicken-egg-providers }}
has-migrations: ${{ steps.selective-checks.outputs.has-migrations }}
source-head-repo: ${{ steps.source-run-info.outputs.source-head-repo }}
pull-request-labels: ${{ steps.source-run-info.outputs.pr-labels }}
Expand Down Expand Up @@ -474,6 +475,7 @@ jobs:
RUNS_ON: "${{ needs.build-info.outputs.runs-on }}"
PYTHON_VERSIONS: ${{needs.build-info.outputs.all-python-versions-list-as-string}}
DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
VERSION_SUFFIX_FOR_PYPI: "dev0"
if: needs.build-info.outputs.ci-image-build == 'true'
steps:
- name: Cleanup repo
Expand Down Expand Up @@ -502,12 +504,23 @@ jobs:
run: >
breeze release-management generate-constraints --run-in-parallel
--airflow-constraints-mode constraints-no-providers
- name: "Prepare chicken-eggs provider packages"
# In case of provider packages which use latest dev0 version of providers, we should prepare them
# from the source code, not from the PyPI because they have apache-airflow>=X.Y.Z dependency
# And when we prepare them from sources they will have apache-airflow>=X.Y.Z.dev0
shell: bash
run: >
breeze release-management prepare-provider-packages
--package-format wheel --version-suffix-for-pypi dev0
${{ needs.build-info.outputs.chicken-egg-providers }}
if: needs.build-info.outputs.chicken-egg-providers != ''
- name: "PyPI constraints"
shell: bash
timeout-minutes: 25
run: >
breeze release-management generate-constraints --run-in-parallel
--airflow-constraints-mode constraints
--chicken-egg-providers "${{ needs.build-info.outputs.chicken-egg-providers }}"
- name: "Dependency upgrade summary"
shell: bash
run: |
Expand Down Expand Up @@ -1576,7 +1589,7 @@ jobs:
build-prod-images:
timeout-minutes: 80
name: >
${{needs.build-info.outputs.build-job-description}} PROD images
${{needs.build-info.outputs.build-job-description}} PROD images (main)
${{needs.build-info.outputs.all-python-versions-list-as-string}}
runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
needs: [build-info, build-ci-images]
Expand All @@ -1592,22 +1605,31 @@ jobs:
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
if: needs.build-info.outputs.in-workflow-build == 'true'
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- uses: actions/checkout@v4
with:
ref: ${{ needs.build-info.outputs.targetCommitSha }}
persist-credentials: false
if: needs.build-info.outputs.in-workflow-build == 'true'
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- name: "Install Breeze"
uses: ./.github/actions/breeze
if: needs.build-info.outputs.in-workflow-build == 'true'
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- name: >
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'
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
with:
build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
chicken-egg-providers: ${{ needs.build-info.outputs.chicken-egg-providers }}
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
Expand All @@ -1617,7 +1639,7 @@ jobs:
build-prod-images-bullseye:
timeout-minutes: 80
name: >
Build Bullseye PROD images
Build Bullseye PROD images (main)
${{needs.build-info.outputs.all-python-versions-list-as-string}}
runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
needs: [build-info, build-ci-images]
Expand All @@ -1634,19 +1656,138 @@ jobs:
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- uses: actions/checkout@v3
with:
ref: ${{ needs.build-info.outputs.targetCommitSha }}
persist-credentials: false
submodules: recursive
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- name: "Install Breeze"
uses: ./.github/actions/breeze
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch == 'main'
- name: >
Build Bullseye 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' &&
needs.build-info.outputs.default-branch == 'main'
with:
build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
chicken-egg-providers: ${{ needs.build-info.outputs.chicken-egg-providers }}
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}}
DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}
DEBIAN_VERSION: "bullseye"
# Do not override the "bookworm" image - just push a new bullseye image
# TODO: improve caching for that build
IMAGE_TAG: "bullseye-${{ github.event.pull_request.head.sha || github.sha }}"

build-prod-images-release-branch:
timeout-minutes: 80
name: >
${{needs.build-info.outputs.build-job-description}} PROD images (v2_*_test)
${{needs.build-info.outputs.all-python-versions-list-as-string}}
runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
needs: [build-info, generate-constraints]
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}}"
BACKEND: sqlite
VERSION_SUFFIX_FOR_PYPI: "dev0"
DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
# Force more parallelism for build even on public images
PARALLELISM: 6
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- uses: actions/checkout@v4
with:
ref: ${{ needs.build-info.outputs.targetCommitSha }}
persist-credentials: false
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- name: "Install Breeze"
uses: ./.github/actions/breeze
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- name: >
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' &&
needs.build-info.outputs.default-branch != 'main'
with:
build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
chicken-egg-providers: ${{ needs.build-info.outputs.chicken-egg-providers }}
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}}
DEBUG_RESOURCES: ${{ needs.build-info.outputs.debug-resources }}

build-prod-images-bullseye-release-branch:
timeout-minutes: 80
name: >
Build Bullseye PROD images (v2_*_test)
${{needs.build-info.outputs.all-python-versions-list-as-string}}
runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
needs: [build-info, generate-constraints]
if: needs.build-info.outputs.canary-run == 'true'
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}}"
BACKEND: sqlite
VERSION_SUFFIX_FOR_PYPI: "dev0"
DEBUG_RESOURCES: ${{needs.build-info.outputs.debug-resources}}
# Force more parallelism for build even on public images
PARALLELISM: 6
steps:
- name: Cleanup repo
run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- uses: actions/checkout@v3
with:
ref: ${{ needs.build-info.outputs.targetCommitSha }}
persist-credentials: false
submodules: recursive
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- name: "Install Breeze"
uses: ./.github/actions/breeze
if: >
needs.build-info.outputs.in-workflow-build == 'true' &&
needs.build-info.outputs.default-branch != 'main'
- name: >
Build Bullseye 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' &&
needs.build-info.outputs.default-branch != 'main'
with:
build-provider-packages: ${{ needs.build-info.outputs.default-branch == 'main' }}
chicken-egg-providers: ${{ needs.build-info.outputs.chicken-egg-providers }}
env:
UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
Expand All @@ -1661,7 +1802,7 @@ jobs:
timeout-minutes: 80
name: "Wait for PROD images"
runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
needs: [build-info, wait-for-ci-images, build-prod-images]
needs: [build-info, wait-for-ci-images, build-prod-images, build-prod-images-release-branch]
if: needs.build-info.outputs.prod-image-build == 'true'
env:
RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
Expand All @@ -1683,7 +1824,7 @@ jobs:
if: needs.build-info.outputs.in-workflow-build == 'false'
- 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.
# or from build-prod-images (or build-prod-images-release-branch) above.
# We are utilising single job to wait for all images because this job merely waits
# For the images to be available.
run: breeze prod-image pull --wait-for-image --run-in-parallel
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/release_dockerhub_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ concurrency:
cancel-in-progress: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERBOSE: true
jobs:
build-info:
timeout-minutes: 10
Expand All @@ -46,6 +47,7 @@ jobs:
pythonVersions: ${{ steps.selective-checks.outputs.python-versions }}
allPythonVersions: ${{ steps.selective-checks.outputs.all-python-versions }}
defaultPythonVersion: ${{ steps.selective-checks.outputs.default-python-version }}
chicken-egg-providers: ${{ steps.selective-checks.outputs.chicken-egg-providers }}
skipLatest: ${{ github.event.inputs.skipLatest == '' && ' ' || '--skip-latest' }}
limitPlatform: ${{ github.repository == 'apache/airflow' && ' ' || '--limit-platform linux/amd64' }}
env:
Expand Down Expand Up @@ -107,6 +109,20 @@ jobs:
run: >
echo ${{ secrets.DOCKERHUB_TOKEN }} |
docker login --password-stdin --username ${{ secrets.DOCKERHUB_USER }}
- name: "Prepare chicken-eggs provider packages"
# In case of provider packages which use latest dev0 version of providers, we should prepare them
# from the source code, not from the PyPI because they have apache-airflow>=X.Y.Z dependency
# And when we prepare them from sources they will have apache-airflow>=X.Y.Z.dev0
shell: bash
run: >
breeze release-management prepare-provider-packages
--package-format wheel
--version-suffix-for-pypi dev0 ${{ needs.build-info.outputs.chicken-egg-providers }}
if: needs.build-info.outputs.chicken-egg-providers != ''
- name: "Copy dist packages to docker-context files"
shell: bash
run: cp -v --no-preserve=mode,ownership ./dist/*.whl ./docker-context-files
if: needs.build-info.outputs.chicken-egg-providers != ''
- name: >
Release regular images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
run: >
Expand All @@ -116,6 +132,7 @@ jobs:
${{ needs.build-info.outputs.skipLatest }}
${{ needs.build-info.outputs.limitPlatform }}
--limit-python ${{ matrix.python-version }}
--chicken-egg-providers "${{ needs.build-info.outputs.chicken-egg-providers }}"
env:
COMMIT_SHA: ${{ github.sha }}
- name: >
Expand Down
7 changes: 7 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,13 @@ repos:
files: ^Dockerfile$
pass_filenames: false
additional_dependencies: ['rich>=12.4.4']
- id: generate-airflow-diagrams
name: Generate airflow diagrams
entry: ./scripts/ci/pre_commit/pre_commit_generate_airflow_diagrams.py
language: python
files: ^scripts/ci/pre_commit/pre_commit_generate_airflow_diagrams.py
pass_filenames: false
additional_dependencies: ['rich>=12.4.4', "diagrams>=0.23.4"]
- id: update-supported-versions
name: Updates supported versions in documentation
entry: ./scripts/ci/pre_commit/pre_commit_supported_versions.py
Expand Down
Loading