potiuk opened a new pull request #10368:
URL: https://github.com/apache/airflow/pull/10368


   With this change we utilise the latest pull_request_target
   event type from Github Actions and we are building the
   CI image only once (per version) for the entire run.
   
   This safes from 2 to 10 minutes per job (!) depending on
   how much of the Docker image needs to be rebuilt.
   
   It works in the way that the image is built only in the
   build-or-wait step. In case of direct push run or
   scheduled runs, the build-or-wait step builds and pushes
   to the GitHub registry the CI image. In case of the
   pull_request runs, the build-and-wait step waits until
   separate build-ci-image.yml workflow builds and pushes
   the image and it will only move forward once the image
   is ready.
   
   This has numerous advantages:
   
   1) Each job that requires CI image is much faster because
      instead of pulling + rebuilding the image it only pulls
      the image that was build once. This saves around 2 minutes
      per job in regular builds but in case of python patch level
      updates, or adding new requirements it can save up to 10
      minutes per job (!)
   
   2) While the images are buing rebuilt we only block one job waiting
      for all the images. The tests will start running in parallell
      only when all images are ready, so we are not blocking
      other runs from running.
   
   3) Whole run uses THE SAME image. Previously we could have some
      variations because the images were built at different times
      and potentially releases of dependencies in-between several
      jobs could make different jobs in the same run use slightly
      different image. This is not happening any more.
   
   4) Also when we push image to github or dockerhub we push the
      very same image that was built and tested. Previously it could
      happen that the image pushed was slightly different than the
      one that was used for testing (for the same reason)
   
   5) Similar case is with the production images. We are now building
      and pushing consistently the same images accross the board.
   
   6) Documentation building is split into two parallel jobs docs
      building and spell checking - decreases elapsed time for
      the docs build.
   
   7) Last but not least - we keep the history of al the images
      - those images contain SHA of the commit. This means
      that we can simply download and run the image locally to reproduce
      any problem that anyone had in their PR (!). This is super useful
      to be able to help others to test their problems.
   
   ---
   **^ Add meaningful description above**
   
   Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/master/CONTRIBUTING.rst#pull-request-guidelines)**
 for more information.
   In case of fundamental code change, Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvements+Proposals))
 is needed.
   In case of a new dependency, check compliance with the [ASF 3rd Party 
License Policy](https://www.apache.org/legal/resolved.html#category-x).
   In case of backwards incompatible changes please leave a note in 
[UPDATING.md](https://github.com/apache/airflow/blob/master/UPDATING.md).
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to