diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml index bd9fdaec1e6a7..a6c3e86ddd814 100644 --- a/.github/workflows/release_dockerhub_image.yml +++ b/.github/workflows/release_dockerhub_image.yml @@ -16,7 +16,7 @@ # under the License. # --- -name: "Release PROD image" +name: "Release PROD images" on: # yamllint disable-line rule:truthy workflow_dispatch: inputs: @@ -27,6 +27,9 @@ on: # yamllint disable-line rule:truthy description: 'Skip Latest: Set to true if not latest.' default: '' required: false +concurrency: + group: ${{ github.event.inputs.airflowVersion }} + cancel-in-progress: true jobs: build-info: timeout-minutes: 10 @@ -53,7 +56,7 @@ jobs: run: ./scripts/ci/selective_ci_checks.sh release-images: timeout-minutes: 120 - name: "Release images" + name: "Release images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}" runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }} needs: [build-info] strategy: @@ -98,7 +101,8 @@ jobs: run: > echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login --password-stdin --username ${{ secrets.DOCKERHUB_USER }} - - name: "Release regular images" + - name: > + Release regular images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }} run: > breeze release-prod-images --dockerhub-repo ${{ github.repository }} @@ -106,7 +110,8 @@ jobs: ${{ needs.build-info.outputs.skipLatest }} ${{ needs.build-info.outputs.limitPlatform }} --limit-python ${{ matrix.python-version }} - - name: "Release slim images" + - name: > + Release slim images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }} run: > breeze release-prod-images --dockerhub-repo ${{ github.repository }} diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md index 5a785ff7dffda..7e2cc8da83e9d 100644 --- a/dev/README_RELEASE_AIRFLOW.md +++ b/dev/README_RELEASE_AIRFLOW.md @@ -27,7 +27,7 @@ - [Build RC artifacts](#build-rc-artifacts) - [[\Optional\] Prepare new release branches and cache](#%5Coptional%5C-prepare-new-release-branches-and-cache) - [Prepare PyPI convenience "snapshot" packages](#prepare-pypi-convenience-snapshot-packages) - - [Prepare production Docker Image](#prepare-production-docker-image) + - [Prepare production Docker Image RC](#prepare-production-docker-image-rc) - [Prepare issue for testing status of rc](#prepare-issue-for-testing-status-of-rc) - [Prepare Vote email on the Apache Airflow release candidate](#prepare-vote-email-on-the-apache-airflow-release-candidate) - [Verify the release candidate by PMCs](#verify-the-release-candidate-by-pmcs) @@ -487,7 +487,7 @@ is not supposed to be used by and advertised to the end-users who do not read th git push origin tag ${VERSION} ``` -## Prepare production Docker Image +## Prepare production Docker Image RC Production Docker images should be manually prepared and pushed by the release manager or another committer who has access to Airflow's DockerHub. Note that we started releasing a multi-platform build, so you need @@ -497,15 +497,15 @@ to have an environment prepared to build multi-platform images. You can achieve * Emulation (very slow) * Hardware builders if you have both AMD64 and ARM64 hardware locally -Building the image is triggered by running the `Release PROD image` workflow via -[GitHub Actions](https://github.com/apache/airflow/actions). +Building the image is triggered by running the +[Release PROD Images](https://github.com/apache/airflow/actions/workflows/release_dockerhub_image.yml) workflow. When you trigger it you need to pass: -* Airflow Version -* Optional "true" in skip latest field if you do not want to retag the latest image +* Airflow Version (including the right rc suffix) +* Optional "true" in the "Skip latest:" field if you do not want to re-tag the latest image -![Release prod image](images/release_prod_image.png) +![Release prod image](images/release_prod_image_rc.png) The manual building is described in [MANUALLY_BUILDING_IMAGES.md](MANUALLY_BUILDING_IMAGES.md). @@ -958,8 +958,8 @@ At this point we release an official package: ## Manually prepare production Docker Image -Building the image is triggered by running the `Release PROD image` workflow via -[GitHub Actions](https://github.com/apache/airflow/actions). +Building the image is triggered by running the +[Release PROD Images](https://github.com/apache/airflow/actions/workflows/release_dockerhub_image.yml) workflow. When you trigger it you need to pass: diff --git a/dev/images/release_prod_image.png b/dev/images/release_prod_image.png index 78f941a43b4c9..50336e5194f58 100644 Binary files a/dev/images/release_prod_image.png and b/dev/images/release_prod_image.png differ diff --git a/dev/images/release_prod_image_rc.png b/dev/images/release_prod_image_rc.png new file mode 100644 index 0000000000000..c88b1285c83cf Binary files /dev/null and b/dev/images/release_prod_image_rc.png differ