2019-08-27 21:39:36 +03:00
|
|
|
.. 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.
|
|
|
|
|
|
|
|
.. image:: images/AirflowBreeze_logo.png
|
|
|
|
:align: center
|
|
|
|
:alt: Airflow Breeze Logo
|
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
.. contents:: :local:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Airflow Breeze CI Environment
|
|
|
|
=============================
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
Airflow Breeze is an easy-to-use development environment using
|
2019-10-26 14:31:51 +03:00
|
|
|
`Docker Compose <https://docs.docker.com/compose/>`_.
|
2020-01-13 22:47:37 +03:00
|
|
|
The environment is available for local use and is also used in Airflow's CI tests.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
We called it *Airflow Breeze* as **It's a Breeze to develop Airflow**.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
The advantages and disadvantages of using the Breeze environment vs. other ways of testing Airflow
|
|
|
|
are described in `CONTRIBUTING.rst <CONTRIBUTING.rst#integration-test-development-environment>`_.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
Here is a short 10-minute video about Airflow Breeze (note that it shows an old version of Breeze. Some
|
2020-02-27 02:32:16 +03:00
|
|
|
of the points in the video are not valid anymore. The video will be updated shortly with more up-to-date
|
2020-01-13 22:47:37 +03:00
|
|
|
version):
|
2019-08-27 21:39:36 +03:00
|
|
|
|
|
|
|
.. image:: http://img.youtube.com/vi/ffKFHV6f3PQ/0.jpg
|
|
|
|
:width: 480px
|
|
|
|
:height: 360px
|
|
|
|
:scale: 100 %
|
|
|
|
:alt: Airflow Breeze Simplified Development Workflow
|
|
|
|
:align: center
|
|
|
|
:target: http://www.youtube.com/watch?v=ffKFHV6f3PQ
|
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
Prerequisites
|
|
|
|
=============
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Docker Community Edition
|
|
|
|
------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
- **Version**: Install the latest stable Docker Community Edition and add it to the PATH.
|
|
|
|
- **Permissions**: Configure to run the ``docker`` commands directly and not only via root user.
|
|
|
|
Your user should be in the ``docker`` group.
|
|
|
|
See `Docker installation guide <https://docs.docker.com/install/>`_ for details.
|
|
|
|
- **Disk space**: On macOS, increase your available disk space before starting to work with
|
|
|
|
the environment. At least 128 GB of free disk space is recommended. You can also get by with a
|
|
|
|
smaller space but make sure to clean up the Docker disk space periodically.
|
|
|
|
See also `Docker for Mac - Space <https://docs.docker.com/docker-for-mac/space>`_ for details
|
|
|
|
on increasing disk space available for Docker on Mac.
|
|
|
|
- **Docker problems**: Sometimes it is not obvious that space is an issue when you run into
|
2020-04-02 20:52:11 +03:00
|
|
|
a problem with Docker. If you see a weird behaviour, try ``breeze cleanup-image`` command.
|
|
|
|
Also see `pruning <https://docs.docker.com/config/pruning/>`_ instructions from Docker.
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2020-01-21 13:44:00 +03:00
|
|
|
Here is an example configuration with more than 200GB disk space for Docker:
|
|
|
|
|
|
|
|
.. image:: images/disk_space_osx.png
|
|
|
|
:align: left
|
|
|
|
:alt: Disk space OSX
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Docker Compose
|
|
|
|
--------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
- **Version**: Install the latest stable Docker Compose and add it to the PATH.
|
|
|
|
See `Docker Compose Installation Guide <https://docs.docker.com/compose/install/>`_ for details.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
- **Permissions**: Configure to run the ``docker-compose`` command.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-06-01 10:04:31 +03:00
|
|
|
Docker in WSL 2
|
|
|
|
---------------
|
2020-03-01 19:38:07 +03:00
|
|
|
|
2020-06-01 10:04:31 +03:00
|
|
|
- **WSL 2 installation** :
|
|
|
|
Install WSL 2 and a Linux Distro (e.g. Ubuntu) see
|
|
|
|
`WSL 2 Installation Guide <https://docs.microsoft.com/en-us/windows/wsl/install-win10>`_ for details.
|
|
|
|
|
|
|
|
- **Docker Desktop installation** :
|
|
|
|
Install Docker Desktop for Windows. For Windows Home follow the
|
|
|
|
`Docker Windows Home Installation Guide <https://docs.docker.com/docker-for-windows/install-windows-home>`_.
|
|
|
|
For Windows Pro, Enterprise, or Education follow the
|
|
|
|
`Docker Windows Installation Guide <https://docs.docker.com/docker-for-windows/install/>`_.
|
2020-03-01 19:38:07 +03:00
|
|
|
|
|
|
|
- **Docker setting** :
|
2020-06-01 10:04:31 +03:00
|
|
|
WSL integration needs to be enabled
|
2020-03-01 19:38:07 +03:00
|
|
|
|
2020-06-01 10:04:31 +03:00
|
|
|
.. image:: images/docker_wsl_integration.png
|
2020-03-01 19:38:07 +03:00
|
|
|
:align: left
|
2020-06-01 10:04:31 +03:00
|
|
|
:alt: Docker WSL2 integration
|
|
|
|
|
|
|
|
- **WSL 2 Filesystem Performance** :
|
|
|
|
Accessing the host Windows filesystem incurs a performance penalty,
|
|
|
|
it is therefore recommended to do development on the Linux filesystem.
|
|
|
|
E.g. Run ``cd ~`` and create a development folder in your Linux distro home
|
|
|
|
and git pull the Airflow repo there.
|
|
|
|
|
|
|
|
- **WSL 2 Memory Usage** :
|
2020-06-04 20:12:09 +03:00
|
|
|
WSL 2 can consume a lot of memory under the process name "Vmmem". To reclaim the memory after
|
|
|
|
development you can:
|
|
|
|
|
2020-06-01 10:04:31 +03:00
|
|
|
* On the Linux distro clear cached memory: ``sudo sysctl -w vm.drop_caches=3``
|
|
|
|
* If no longer using Docker you can quit Docker Desktop
|
|
|
|
(right click system try icon and select "Quit Docker Desktop")
|
|
|
|
* If no longer using WSL you can shut it down on the Windows Host
|
|
|
|
with the following command: ``wsl --shutdown``
|
|
|
|
|
|
|
|
- **Developing in WSL 2** :
|
|
|
|
You can use all the standard Linux command line utilities to develop on WSL 2.
|
|
|
|
Further VS Code supports developing in Windows but remotely executing in WSL.
|
|
|
|
If VS Code is installed on the Windows host system then in the WSL Linux Distro
|
|
|
|
you can run ``code .`` in the root directory of you Airflow repo to launch VS Code.
|
2020-03-01 19:38:07 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Docker Images Used by Breeze
|
|
|
|
----------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-31 18:44:14 +03:00
|
|
|
For all development tasks, unit tests, integration tests, and static code checks, we use the
|
2020-04-02 20:52:11 +03:00
|
|
|
**CI image** maintained on the DockerHub in the ``apache/airflow`` repository.
|
2020-03-31 18:44:14 +03:00
|
|
|
This Docker image contains a lot of test-related packages (size of ~1GB).
|
2020-03-27 17:27:53 +03:00
|
|
|
Its tag follows the pattern of ``<BRANCH>-python<PYTHON_MAJOR_MINOR_VERSION>-ci``
|
2020-04-02 20:52:11 +03:00
|
|
|
(for example, ``apache/airflow:master-python3.6-ci`` or ``apache/airflow:v1-10-test-python3.6-ci``).
|
|
|
|
The image is built using the `<Dockerfile.ci>`_ Dockerfile.
|
|
|
|
|
|
|
|
For testing production image, the **Production image** is used and maintained on the DockerHub in the
|
|
|
|
```apache/airflow`` repository. This Docker image contains only size-optimised Airflow with selected
|
|
|
|
extras and dependencies. Its tag follows the pattern of ``<BRANCH>-python<PYTHON_MAJOR_MINOR_VERSION>``
|
|
|
|
(for example, ``apache/airflow:master-python3.6`` or ``apache/airflow:v1-10-test-python3.6``).
|
|
|
|
|
|
|
|
More information about the images can be found in `<IMAGES.rst>`_.
|
|
|
|
|
|
|
|
By default CI images are used unless ``--production-image`` flag is used.
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Before you run tests, enter the environment or run local static checks, the necessary local images should be
|
|
|
|
pulled and built from Docker Hub. This happens automatically for the test environment but you need to
|
2020-01-07 02:08:12 +03:00
|
|
|
manually trigger it for static checks as described in `Building the images <#building-the-images>`_
|
2019-10-26 14:31:51 +03:00
|
|
|
and `Pulling the latest images <#pulling-the-latest-images>`_.
|
|
|
|
The static checks will fail and inform what to do if the image is not yet built.
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Building the image first time pulls a pre-built version of images from the Docker Hub, which may take some
|
|
|
|
time. But for subsequent source code changes, no wait time is expected.
|
2020-03-23 10:56:26 +03:00
|
|
|
However, changes to sensitive files like ``setup.py`` or ``Dockerfile.ci`` will trigger a rebuild
|
2019-10-26 14:31:51 +03:00
|
|
|
that may take more time though it is highly optimized to only rebuild what is needed.
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
In most cases, rebuilding an image requires network connectivity (for example, to download new
|
|
|
|
dependencies). If you work offline and do not want to rebuild the images when needed, you can set the
|
|
|
|
``FORCE_ANSWER_TO_QUESTIONS`` variable to ``no`` as described in the
|
|
|
|
`Default behaviour for user interaction <#default-behaviour-for-user-interaction>`_ section.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-31 18:44:14 +03:00
|
|
|
See the `Troubleshooting section <#troubleshooting>`_ for steps you can make to clean the environment.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Getopt and gstat
|
|
|
|
----------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
* For Linux, run ``apt install util-linux coreutils`` or an equivalent if your system is not Debian-based.
|
2019-10-26 14:31:51 +03:00
|
|
|
* For macOS, install GNU ``getopt`` and ``gstat`` utilities to get Airflow Breeze running.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Run ``brew install gnu-getopt coreutils`` and then follow instructions to link the gnu-getopt version to
|
|
|
|
become the first on the PATH. Make sure to re-login after you make the suggested changes.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
**Examples:**
|
|
|
|
|
|
|
|
If you use bash, run this command and re-login:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
echo 'export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"' >> ~/.bash_profile
|
|
|
|
. ~/.bash_profile
|
|
|
|
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
If you use zsh, run this command and re-login:
|
2019-10-26 14:31:51 +03:00
|
|
|
|
|
|
|
.. code-block:: bash
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
echo 'export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"' >> ~/.zprofile
|
|
|
|
. ~/.zprofile
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
Memory
|
|
|
|
------
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Minimum 4GB RAM is required to run the full Breeze environment.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
On macOS, 2GB of RAM are available for your Docker containers by default, but more memory is recommended
|
2019-09-05 11:28:48 +03:00
|
|
|
(4GB should be comfortable). For details see
|
2019-10-26 14:31:51 +03:00
|
|
|
`Docker for Mac - Advanced tab <https://docs.docker.com/v17.12/docker-for-mac/#advanced-tab>`_.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-06-01 10:04:31 +03:00
|
|
|
On Windows WSL 2 expect the Linux Disto and Docker containers to use 7 - 8 GB of RAM.
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Airflow Directory Structure inside Docker
|
2020-06-04 20:12:09 +03:00
|
|
|
=========================================
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
When you are in the CI container, the following directories are used:
|
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
/opt/airflow - Contains sources of Airflow mounted from the host (AIRFLOW_SOURCES).
|
|
|
|
/root/airflow - Contains all the "dynamic" Airflow files (AIRFLOW_HOME), such as:
|
|
|
|
airflow.db - sqlite database in case sqlite is used;
|
|
|
|
dags - folder with non-test dags (test dags are in /opt/airflow/tests/dags);
|
|
|
|
logs - logs from Airflow executions;
|
|
|
|
unittest.cfg - unit test configuration generated when entering the environment;
|
|
|
|
webserver_config.py - webserver configuration generated when running Airflow in the container.
|
|
|
|
|
|
|
|
Note that when running in your local environment, the ``/root/airflow/logs`` folder is actually mounted
|
|
|
|
from your ``logs`` directory in the Airflow sources, so all logs created in the container are automatically
|
|
|
|
visible in the host as well. Every time you enter the container, the ``logs`` directory is
|
|
|
|
cleaned so that logs do not accumulate.
|
|
|
|
|
|
|
|
When you are in the production container, the following directories are used:
|
2019-10-26 14:31:51 +03:00
|
|
|
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
/opt/airflow - Contains sources of Airflow mounted from the host (AIRFLOW_SOURCES).
|
|
|
|
/root/airflow - Contains all the "dynamic" Airflow files (AIRFLOW_HOME), such as:
|
|
|
|
airflow.db - sqlite database in case sqlite is used;
|
|
|
|
dags - folder with non-test dags (test dags are in /opt/airflow/tests/dags);
|
|
|
|
logs - logs from Airflow executions;
|
|
|
|
unittest.cfg - unit test configuration generated when entering the environment;
|
|
|
|
webserver_config.py - webserver configuration generated when running Airflow in the container.
|
|
|
|
|
|
|
|
Note that when running in your local environment, the ``/root/airflow/logs`` folder is actually mounted
|
|
|
|
from your ``logs`` directory in the Airflow sources, so all logs created in the container are automatically
|
|
|
|
visible in the host as well. Every time you enter the container, the ``logs`` directory is
|
|
|
|
cleaned so that logs do not accumulate.
|
|
|
|
|
2020-06-04 20:12:09 +03:00
|
|
|
CLIs for cloud providers
|
|
|
|
========================
|
|
|
|
|
|
|
|
For development convenience we installed simple wrappers for the most common cloud providers CLIs. Those
|
|
|
|
CLIs are not installed when you build or pull the image - they will be downloaded as docker images
|
|
|
|
the first time you attempt to use them. It is downloaded and executed in your host's docker engine so once
|
|
|
|
it is downloaded, it will stay until you remove the downloaded images from your host container.
|
|
|
|
|
|
|
|
For each of those CLI credentials are taken (automatically) from the credentials you have defined in
|
|
|
|
your ${HOME} directory on host.
|
|
|
|
|
2020-06-09 10:33:16 +03:00
|
|
|
Those tools also have host Airflow source directory mounted in /opt/airflow path
|
|
|
|
so you can directly transfer files to/from your airflow host sources.
|
|
|
|
|
2020-06-04 20:12:09 +03:00
|
|
|
Those are currently installed CLIs (they are available as aliases to the docker commands):
|
|
|
|
|
|
|
|
+-----------------------+----------+-------------------------------------------------+-------------------+
|
|
|
|
| Cloud Provider | CLI tool | Docker image | Configuration dir |
|
|
|
|
+=======================+==========+=================================================+===================+
|
|
|
|
| Amazon Web Services | aws | amazon/aws-cli:latest | .aws |
|
|
|
|
+-----------------------+----------+-------------------------------------------------+-------------------+
|
|
|
|
| Microsoft Azure | az | mcr.microsoft.com/azure-cli:latest | .azure |
|
|
|
|
+-----------------------+----------+-------------------------------------------------+-------------------+
|
|
|
|
| Google Cloud Platform | bq | gcr.io/google.com/cloudsdktool/cloud-sdk:latest | .config/gcloud |
|
|
|
|
| +----------+-------------------------------------------------+-------------------+
|
|
|
|
| | gcloud | gcr.io/google.com/cloudsdktool/cloud-sdk:latest | .config/gcloud |
|
|
|
|
| +----------+-------------------------------------------------+-------------------+
|
|
|
|
| | gsutil | gcr.io/google.com/cloudsdktool/cloud-sdk:latest | .config/gcloud |
|
|
|
|
+-----------------------+----------+-------------------------------------------------+-------------------+
|
|
|
|
|
|
|
|
For each of the CLIs we have also an accompanying ``*-update`` alias (for example ``aws-update``) which
|
|
|
|
will pull the latest image for the tool. Note that all Google Cloud Platform tools are served by one
|
|
|
|
image and they are updated together.
|
|
|
|
|
|
|
|
Also - in case you run several different Breeze containers in parallel (from different directories,
|
|
|
|
with different versions) - they docker images for CLI Cloud Providers tools are shared so if you update it
|
|
|
|
for one Breeze container, they will also get updated for all the other containers.
|
|
|
|
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Using the Airflow Breeze Environment
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
Airflow Breeze is a bash script serving as a "swiss-army-knife" of Airflow testing. Under the
|
|
|
|
hood it uses other scripts that you can also run manually if you have problem with running the Breeze
|
|
|
|
environment.
|
|
|
|
|
|
|
|
Breeze script allows performing the following tasks:
|
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Manage environments - CI (default) or Production - if ``--production-image`` flag is specified:
|
|
|
|
|
|
|
|
* Build docker images with ``breeze build-image`` command
|
|
|
|
* Enter interactive shell when no command are specified (default behaviour)
|
|
|
|
* Join running interactive shell with ``breeze exec`` command
|
2020-06-03 21:58:38 +03:00
|
|
|
* Start/stops/restarts Kind Kubernetes cluster with ``kind-cluster`` command
|
2020-04-02 20:52:11 +03:00
|
|
|
* Stop running interactive environment with ``breeze stop`` command
|
|
|
|
* Restart running interactive environment with ``breeze restart`` command
|
|
|
|
* Optionally reset database if specified as extra ``--db-reset`` flag
|
|
|
|
* Optionally start integrations (separate images) if specified as extra ``--integration`` flags (only CI)
|
|
|
|
|
|
|
|
Interact with CI environment:
|
|
|
|
|
|
|
|
* Run test target specified with ``breeze test-target`` command
|
|
|
|
* Execute arbitrary command in the test environment with ``breeze execute-command`` command
|
|
|
|
* Execute arbitrary docker-compose command with ``breeze docker-compose`` command
|
|
|
|
|
|
|
|
Run static checks:
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
* Run static checks - either for currently staged change or for all files with
|
2020-04-02 20:52:11 +03:00
|
|
|
``breeze static-check`` or ``breeze static-check-all-files`` command
|
|
|
|
|
|
|
|
Build documentation:
|
|
|
|
|
|
|
|
* Build documentation with ``breeze build-docs`` command
|
|
|
|
|
|
|
|
Set up local development environment:
|
|
|
|
|
|
|
|
* Setup local virtualenv with ``breeze setup-virtualenv`` command
|
|
|
|
* Setup autocomplete for itself with ``breeze setup-autocomplete`` command
|
|
|
|
|
|
|
|
|
|
|
|
Note that the below environment interaction is by default with the CI image. If you want to use production
|
|
|
|
image for those commands you need to add ``--production-image`` flag.
|
|
|
|
|
2020-04-15 14:05:02 +03:00
|
|
|
Note that you also should not run both (CI and production) environments simultaneously, as they are using
|
|
|
|
the same docker-compose configuration which for example contain the link to the database, port mapping, etc.
|
2020-04-02 20:52:11 +03:00
|
|
|
|
|
|
|
Entering Breeze CI environment
|
|
|
|
------------------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
You enter the Breeze test environment by running the ``./breeze`` script. You can run it with
|
2020-02-25 00:31:50 +03:00
|
|
|
the ``help`` command to see the list of available options. See `Breeze Command-Line Interface Reference`_
|
2019-10-26 14:31:51 +03:00
|
|
|
for details.
|
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
.. code-block:: bash
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
./breeze
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2020-03-31 18:44:14 +03:00
|
|
|
The First time you run Breeze, it pulls and builds a local version of Docker images.
|
2019-10-26 14:31:51 +03:00
|
|
|
It pulls the latest Airflow CI images from `Airflow DockerHub <https://hub.docker.com/r/apache/airflow>`_
|
2020-03-31 18:44:14 +03:00
|
|
|
and uses them to build your local Docker images. Note that the first run (per python) might take up to 10
|
2019-10-26 14:31:51 +03:00
|
|
|
minutes on a fast connection to start. Subsequent runs should be much faster.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Once you enter the environment, you are dropped into bash shell of the Airflow container and you can
|
|
|
|
run tests immediately.
|
|
|
|
|
|
|
|
You can `set up autocomplete <#setting-up-autocomplete>`_ for commands and add the
|
2019-12-04 15:15:02 +03:00
|
|
|
checked-out Airflow repository to your PATH to run Breeze without the ``./`` and from any directory.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-02-21 20:25:32 +03:00
|
|
|
|
|
|
|
When you enter the Breeze environment, automatically an environment file is sourced from
|
|
|
|
``files/airflow-breeze-config/variables.env``. The ``files`` folder from your local sources is
|
|
|
|
automatically mounted to the container under ``/files`` path and you can put there any files you want
|
2020-03-31 18:44:14 +03:00
|
|
|
to make available for the Breeze container.
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-03-07 22:18:51 +03:00
|
|
|
Launching multiple terminals
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
Often if you want to run full airflow in the Breeze environment you need to launch multiple terminals and
|
|
|
|
run ``airflow webserver``, ``airflow scheduler``, ``airflow worker`` in separate terminals.
|
|
|
|
|
|
|
|
This can be achieved either via ``tmux`` or via exec-ing into the running container from the host. Tmux
|
2020-03-31 18:44:14 +03:00
|
|
|
is installed inside the container and you can launch it with ``tmux`` command. Tmux provides you with the
|
2020-03-07 22:18:51 +03:00
|
|
|
capability of creating multiple virtual terminals and multiplex between them. More about ``tmux`` can be
|
|
|
|
found at `tmux github wiki page <https://github.com/tmux/tmux/wiki>`_ . Tmux has several useful shortcuts
|
|
|
|
that allow you to split the terminals, open new tabs etc - it's pretty useful to learn it.
|
|
|
|
|
|
|
|
Another - slightly easier - way is to exec into Breeze terminal from the host's terminal. Often you can
|
|
|
|
have multiple terminals in the host (Linux/MacOS/WSL2 on Windows) and you can simply use those terminals
|
2020-03-31 18:44:14 +03:00
|
|
|
to enter the running container. It's as easy as launching ``breeze exec`` while you already started the
|
2020-03-07 22:18:51 +03:00
|
|
|
Breeze environment. You will be dropped into bash and environment variables will be read in the same
|
|
|
|
way as when you enter the environment. You can do it multiple times and open as many terminals as you need.
|
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Stopping Interactive environment
|
|
|
|
--------------------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
After starting up, the environment runs in the background and takes precious memory.
|
|
|
|
You can always stop it via:
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
.. code-block:: bash
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2020-03-04 03:21:11 +03:00
|
|
|
./breeze stop
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Restarting Breeze environment
|
|
|
|
-----------------------------
|
2020-02-27 12:44:43 +03:00
|
|
|
|
|
|
|
You can also restart the environment and enter it via:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2020-03-04 03:21:11 +03:00
|
|
|
./breeze restart
|
2020-02-27 12:44:43 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Choosing a Breeze Environment
|
|
|
|
-----------------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You can use additional ``breeze`` flags to customize your environment. For example, you can specify a Python
|
|
|
|
version to use, backend and a container environment for testing. With Breeze, you can recreate the same
|
2020-04-21 18:27:09 +03:00
|
|
|
environments as we have in matrix builds in the CI.
|
2019-08-28 10:33:31 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
For example, you can choose to run Python 3.6 tests with MySQL as backend and in the Docker environment as
|
|
|
|
follows:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
.. code-block:: bash
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-11 18:25:19 +03:00
|
|
|
./breeze --python 3.6 --backend mysql
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
The choices you make are persisted in the ``./.build/`` cache directory so that next time when you use the
|
|
|
|
``breeze`` script, it could use the values that were used previously. This way you do not have to specify
|
|
|
|
them when you run the script. You can delete the ``.build/`` directory in case you want to restore the
|
|
|
|
default settings.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
The defaults when you run the Breeze environment are Python 3.6, Sqlite, and Docker.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
Launching Breeze Integrations
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
When Breeze starts, it can start additional integrations. Those are additional docker containers
|
|
|
|
that are started in the same docker-compose command. Those are required by some of the tests
|
|
|
|
as described in `TESTING.rst <TESTING.rst#airflow-integration-tests>`_.
|
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
By default Breeze starts only airflow container without any integration enabled. If you selected
|
2020-02-21 21:53:14 +03:00
|
|
|
``postgres`` or ``mysql`` backend, the container for the selected backend is also started (but only the one
|
2020-01-13 22:47:37 +03:00
|
|
|
that is selected). You can start the additional integrations by passing ``--integration`` flag
|
|
|
|
with appropriate integration name when starting Breeze. You can specify several ``--integration`` flags
|
|
|
|
to start more than one integration at a time.
|
|
|
|
Finally you can specify ``--integration all`` to start all integrations.
|
|
|
|
|
|
|
|
Once integration is started, it will continue to run until the environment is stopped with
|
2020-03-04 03:21:11 +03:00
|
|
|
``breeze stop`` command. or restarted via ``breeze restart`` command
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Note that running integrations uses significant resources - CPU and memory.
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Cleaning the Environment
|
2020-01-13 22:47:37 +03:00
|
|
|
------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You may need to clean up your Docker environment occasionally. The images are quite big
|
|
|
|
(1.5GB for both images needed for static code analysis and CI tests) and, if you often rebuild/update
|
|
|
|
them, you may end up with some unused image data.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
To clean up the Docker environment:
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
1. Stop Breeze with ``./breeze stop``.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
2. Run the ``docker system prune`` command.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
3. Run ``docker images --all`` and ``docker ps --all`` to verify that your Docker is clean.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Both commands should return an empty list of images and containers respectively.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
If you run into disk space errors, consider pruning your Docker images with the ``docker system prune --all``
|
|
|
|
command. You may need to restart the Docker Engine before running this command.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
In case of disk space errors on macOS, increase the disk space available for Docker. See
|
|
|
|
`Prerequisites <#prerequisites>`_ for details.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Running Arbitrary Commands in the Breeze Environment
|
|
|
|
-------------------------------------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
To run other commands/executables inside the Breeze Docker-based environment, use the
|
2020-02-25 00:31:50 +03:00
|
|
|
``./breeze execute-command`` command. To add arguments, specify them
|
2019-12-04 15:15:02 +03:00
|
|
|
together with the command surrounded with either ``"`` or ``'``, or pass them after ``--`` as extra arguments.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
.. code-block:: bash
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
./breeze execute-command "ls -la"
|
2019-08-27 21:39:36 +03:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
./breeze execute-command ls -- --la
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Running Docker Compose Commands
|
|
|
|
-------------------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
To run Docker Compose commands (such as ``help``, ``pull``, etc), use the
|
2020-02-25 00:31:50 +03:00
|
|
|
``docker-compose`` command. To add extra arguments, specify them
|
2019-12-04 15:15:02 +03:00
|
|
|
after ``--`` as extra arguments.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
.. code-block:: bash
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
./breeze docker-compose pull -- --ignore-pull-failures
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Mounting Local Sources to Breeze
|
|
|
|
--------------------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Important sources of Airflow are mounted inside the ``airflow`` container that you enter.
|
2019-10-26 14:31:51 +03:00
|
|
|
This means that you can continue editing your changes on the host in your favourite IDE and have them
|
|
|
|
visible in the Docker immediately and ready to test without rebuilding images. You can disable mounting
|
2020-03-07 18:09:06 +03:00
|
|
|
by specifying ``--skip-mounting-local-sources`` flag when running Breeze. In this case you will have sources
|
2019-10-26 14:31:51 +03:00
|
|
|
embedded in the container and changes to these sources will not be persistent.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
|
2020-03-31 18:44:14 +03:00
|
|
|
After you run Breeze for the first time, you will have empty directory ``files`` in your source code,
|
2019-10-26 14:31:51 +03:00
|
|
|
which will be mapped to ``/files`` in your Docker container. You can pass there any files you need to
|
|
|
|
configure and run Docker. They will not be removed between Docker runs.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-26 13:11:53 +03:00
|
|
|
By default ``/files/dags`` folder is mounted from your local ``<AIRFLOW_SOURCES>/files/dags`` and this is
|
|
|
|
the directory used by airflow scheduler and webserver to scan dags for. You can use it to test your dags
|
|
|
|
from local sources in Airflow. If you wish to add local DAGs that can be run by Breeze.
|
2020-02-05 02:14:18 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Adding/Modifying Dependencies
|
|
|
|
-----------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-23 10:56:26 +03:00
|
|
|
If you need to change apt dependencies in the ``Dockerfile.ci``, add Python packages in ``setup.py`` or
|
2019-10-26 14:31:51 +03:00
|
|
|
add javascript dependencies in ``package.json``, you can either add dependencies temporarily for a single
|
2020-03-23 10:56:26 +03:00
|
|
|
Breeze session or permanently in ``setup.py``, ``Dockerfile.ci``, or ``package.json`` files.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Installing Dependencies for a Single Breeze Session
|
|
|
|
...................................................
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You can install dependencies inside the container using ``sudo apt install``, ``pip install`` or
|
2019-12-20 00:21:41 +03:00
|
|
|
``yarn install`` (in ``airflow/www`` folder) respectively. This is useful if you want to test something
|
2019-10-26 14:31:51 +03:00
|
|
|
quickly while you are in the container. However, these changes are not retained: they disappear once you
|
2020-01-07 02:08:12 +03:00
|
|
|
exit the container (except for the node.js dependencies if your sources are mounted to the container).
|
2019-10-26 14:31:51 +03:00
|
|
|
Therefore, if you want to retain a new dependency, follow the second option described below.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Adding Dependencies Permanently
|
|
|
|
...............................
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-23 10:56:26 +03:00
|
|
|
You can add dependencies to the ``Dockerfile.ci``, ``setup.py`` or ``package.json`` and rebuild the image.
|
|
|
|
This should happen automatically if you modify any of these files.
|
2019-10-26 14:31:51 +03:00
|
|
|
After you exit the container and re-run ``breeze``, Breeze detects changes in dependencies,
|
|
|
|
asks you to confirm rebuilding the image and proceeds with rebuilding if you confirm (or skip it
|
2020-02-25 00:31:50 +03:00
|
|
|
if you do not confirm). After rebuilding is done, Breeze drops you to shell. You may also use the
|
2020-04-02 20:52:11 +03:00
|
|
|
``build-image`` command to only rebuild CI image and not to go into shell.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-23 10:56:26 +03:00
|
|
|
Changing apt Dependencies in the Dockerfile.ci
|
|
|
|
..............................................
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-03-23 10:56:26 +03:00
|
|
|
During development, changing dependencies in ``apt-get`` closer to the top of the ``Dockerfile.ci``
|
2019-10-26 14:31:51 +03:00
|
|
|
invalidates cache for most of the image. It takes long time for Breeze to rebuild the image.
|
|
|
|
So, it is a recommended practice to add new dependencies initially closer to the end
|
2020-03-23 10:56:26 +03:00
|
|
|
of the ``Dockerfile.ci``. This way dependencies will be added incrementally.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Before merge, these dependencies should be moved to the appropriate ``apt-get install`` command,
|
2020-03-23 10:56:26 +03:00
|
|
|
which is already in the ``Dockerfile.ci``.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Port Forwarding
|
2019-08-27 21:39:36 +03:00
|
|
|
---------------
|
|
|
|
|
|
|
|
When you run Airflow Breeze, the following ports are automatically forwarded:
|
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
* 28080 -> forwarded to Airflow webserver -> airflow:8080
|
2019-10-26 14:31:51 +03:00
|
|
|
* 25433 -> forwarded to Postgres database -> postgres:5432
|
|
|
|
* 23306 -> forwarded to MySQL database -> mysql:3306
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You can connect to these ports/databases using:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
* Webserver: ``http://127.0.0.1:28080``
|
2019-08-27 21:39:36 +03:00
|
|
|
* Postgres: ``jdbc:postgresql://127.0.0.1:25433/airflow?user=postgres&password=airflow``
|
|
|
|
* Mysql: ``jdbc:mysql://localhost:23306/airflow?user=root``
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Start the webserver manually with the ``airflow webserver`` command if you want to connect
|
2020-02-05 02:14:18 +03:00
|
|
|
to the webserver. You can use ``tmux`` to multiply terminals. You may need to create a user prior to
|
|
|
|
running the webserver in order to log in. This can be done with the following command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
airflow users create --role Admin --username admin --password admin --email admin@example.com --firstname foo --lastname bar
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
For databases, you need to run ``airflow db reset`` at least once (or run some tests) after you started
|
|
|
|
Airflow Breeze to get the database/tables created. You can connect to databases with IDE or any other
|
|
|
|
database client:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
|
|
|
.. image:: images/database_view.png
|
|
|
|
:align: center
|
|
|
|
:alt: Database view
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You can change the used host port numbers by setting appropriate environment variables:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-09-05 11:28:48 +03:00
|
|
|
* ``WEBSERVER_HOST_PORT``
|
|
|
|
* ``POSTGRES_HOST_PORT``
|
|
|
|
* ``MYSQL_HOST_PORT``
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
If you set these variables, next time when you enter the environment the new ports should be in effect.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Setting Up Autocompletion
|
|
|
|
-------------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
The ``breeze`` command comes with a built-in bash/zsh autocomplete option for its options. When you start typing
|
2019-10-26 14:31:51 +03:00
|
|
|
the command, you can use <TAB> to show all the available switches and get autocompletion on typical
|
|
|
|
values of parameters that you can use.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You can set up the autocomplete option automatically by running:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
.. code-block:: bash
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
./breeze setup-autocomplete
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
You get the autocompletion working when you re-enter the shell.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Zsh autocompletion is currently limited to only autocomplete options. Bash autocompletion also completes
|
|
|
|
options values (for example, Python version or static check name).
|
2019-10-26 14:31:51 +03:00
|
|
|
|
|
|
|
Setting Defaults for User Interaction
|
|
|
|
--------------------------------------
|
|
|
|
|
|
|
|
Sometimes during the build, you are asked whether to perform an action, skip it, or quit. This happens
|
|
|
|
when rebuilding or removing an image - actions that take a lot of time and could be potentially destructive.
|
|
|
|
|
|
|
|
For automation scripts, you can export one of the three variables to control the default
|
|
|
|
interaction behaviour:
|
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
|
|
|
export FORCE_ANSWER_TO_QUESTIONS="yes"
|
|
|
|
|
|
|
|
If ``FORCE_ANSWER_TO_QUESTIONS`` is set to ``yes``, the images are automatically rebuilt when needed.
|
|
|
|
Images are deleted without asking.
|
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
|
|
|
export FORCE_ANSWER_TO_QUESTIONS="no"
|
|
|
|
|
|
|
|
If ``FORCE_ANSWER_TO_QUESTIONS`` is set to ``no``, the old images are used even if rebuilding is needed.
|
|
|
|
This is useful when you work offline. Deleting images is aborted.
|
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
|
|
|
export FORCE_ANSWER_TO_QUESTIONS="quit"
|
|
|
|
|
|
|
|
If ``FORCE_ANSWER_TO_QUESTIONS`` is set to ``quit``, the whole script is aborted. Deleting images is aborted.
|
|
|
|
|
|
|
|
If more than one variable is set, ``yes`` takes precedence over ``no``, which takes precedence over ``quit``.
|
|
|
|
|
|
|
|
Building the Documentation
|
|
|
|
--------------------------
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
To build documentation in Breeze, use the ``build-docs`` command:
|
2019-10-26 14:31:51 +03:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
./breeze build-docs
|
2019-10-26 14:31:51 +03:00
|
|
|
|
|
|
|
Results of the build can be found in the ``docs/_build`` folder.
|
|
|
|
|
|
|
|
Often errors during documentation generation come from the docstrings of auto-api generated classes.
|
|
|
|
During the docs building auto-api generated files are stored in the ``docs/_api`` folder. This helps you
|
|
|
|
easily identify the location the problems with documentation originated from.
|
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Using Your Host IDE
|
|
|
|
===================
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
You can set up your host IDE (for example, IntelliJ's PyCharm/Idea) to work with Breeze
|
|
|
|
and benefit from all the features provided by your IDE, such as local and remote debugging,
|
|
|
|
autocompletion, documentation support, etc.
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
To use your host IDE with Breeze:
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
1. Create a local virtual environment as follows:
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
``mkvirtualenv <ENV_NAME> --python=python<VERSION>``
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
You can use any of the following wrappers to create and manage your virtual environemnts:
|
|
|
|
`pyenv <https://github.com/pyenv/pyenv>`_, `pyenv-virtualenv <https://github.com/pyenv/pyenv-virtualenv>`_,
|
|
|
|
or `virtualenvwrapper <https://virtualenvwrapper.readthedocs.io/en/latest/>`_.
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Ideally, you should have virtualenvs for all Python versions supported by Airflow (3.5, 3.6, 3.7)
|
|
|
|
and switch between them with the ``workon`` command.
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
2. Use the ``workon`` command to enter the Breeze environment.
|
2019-10-26 14:31:51 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
3. Initialize the created local virtualenv:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
``./breeze initialize-local-virtualenv``
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
4. Select the virtualenv you created as the project's default virtualenv in your IDE.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Note that you can also use the local virtualenv for Airflow development without Breeze.
|
|
|
|
This is a lightweight solution that has its own limitations.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-07 02:08:12 +03:00
|
|
|
More details on using the local virtualenv are available in the `LOCAL_VIRTUALENV.rst <LOCAL_VIRTUALENV.rst>`_.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Running static checks in Breeze
|
2019-10-26 14:31:51 +03:00
|
|
|
===============================
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
The Breeze environment is also used to run some of the static checks as described in
|
|
|
|
`STATIC_CODE_CHECKS.rst <STATIC_CODE_CHECKS.rst>`_.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
Running Tests in Breeze
|
|
|
|
=======================
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
As soon as you enter the Breeze environment, you can run Airflow unit tests via the ``pytest`` command.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-12-04 15:15:02 +03:00
|
|
|
For supported CI test suites, types of unit tests, and other tests, see `TESTING.rst <TESTING.rst>`_.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Breeze Command-Line Interface Reference
|
|
|
|
=======================================
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Airflow Breeze Syntax
|
|
|
|
---------------------
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
This is the current syntax for `./breeze <./breeze>`_:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-11-04 12:37:31 +03:00
|
|
|
.. START BREEZE HELP MARKER
|
|
|
|
|
2019-08-27 21:39:36 +03:00
|
|
|
.. code-block:: text
|
|
|
|
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
Usage: breeze [FLAGS] [COMMAND] -- <EXTRA_ARGS>
|
|
|
|
|
|
|
|
By default the script enters IT environment and drops you to bash shell, but you can choose one
|
|
|
|
of the commands to run specific actions instead. Add --help after each command to see details:
|
|
|
|
|
|
|
|
Commands without arguments:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
shell [Default] Enters interactive shell in the container
|
|
|
|
build-docs Builds documentation in the container
|
2020-04-02 20:52:11 +03:00
|
|
|
build-image Builds CI or Production docker image
|
|
|
|
cleanup-image Cleans up the container image created
|
2020-03-07 22:18:51 +03:00
|
|
|
exec Execs into running breeze container in new terminal
|
2020-03-27 17:27:53 +03:00
|
|
|
generate-requirements Generates pinned requirements for pip dependencies
|
2020-05-19 15:17:22 +03:00
|
|
|
prepare-backport-readme Prepares backport packages readme files
|
2020-05-15 20:00:15 +03:00
|
|
|
prepare-backport-packages Prepares backport packages
|
2020-06-02 11:24:47 +03:00
|
|
|
push-image Pushes images to registry
|
2020-02-25 00:31:50 +03:00
|
|
|
initialize-local-virtualenv Initializes local virtualenv
|
2020-06-03 21:58:38 +03:00
|
|
|
kind-cluster Manages KinD cluster on the host
|
2020-02-25 00:31:50 +03:00
|
|
|
setup-autocomplete Sets up autocomplete for breeze
|
2020-04-13 09:51:33 +03:00
|
|
|
stop Stops the docker-compose environment
|
|
|
|
restart Stops the docker-compose environment including DB cleanup
|
2020-02-25 00:31:50 +03:00
|
|
|
toggle-suppress-cheatsheet Toggles on/off cheatsheet
|
|
|
|
toggle-suppress-asciiart Toggles on/off asciiart
|
|
|
|
|
|
|
|
Commands with arguments:
|
|
|
|
|
|
|
|
docker-compose <ARG> Executes specified docker-compose command
|
|
|
|
execute-command <ARG> Executes specified command in the container
|
2020-06-03 21:58:38 +03:00
|
|
|
kind-cluster <ARG> Manages KinD cluster on the host
|
2020-02-25 00:31:50 +03:00
|
|
|
static-check <ARG> Performs selected static check for changed files
|
|
|
|
static-check-all-files <ARG> Performs selected static check for all files
|
|
|
|
test-target <ARG> Runs selected test target in the container
|
|
|
|
|
|
|
|
Help commands:
|
|
|
|
|
|
|
|
flags Shows all breeze's flags
|
|
|
|
help Shows this help message
|
|
|
|
help-all Shows detailed help for all commands and flags
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
Detailed usage
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
####################################################################################################
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Detailed usage for command: shell
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze shell [FLAGS] -- <EXTRA_ARGS>
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
This is default subcommand if no subcommand is used.
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
Enters interactive shell where you can run all tests, start Airflow webserver, scheduler,
|
2020-02-25 00:31:50 +03:00
|
|
|
workers, interact with the database, run DAGs etc. It is the default command if no command
|
|
|
|
is selected. The shell is executed in the container and in case integrations are chosen,
|
|
|
|
the integrations will be started as separated docker containers - under the docker-compose
|
|
|
|
supervision. Local sources are by default mounted to within the container so you can edit
|
|
|
|
them locally and run tests immediately in the container. Several folders ('files', 'dist')
|
|
|
|
are also mounted so that you can exchange files between the host and container.
|
|
|
|
|
|
|
|
The 'files/airflow-breeze-config/variables.env' file can contain additional variables
|
|
|
|
and setup. This file is automatically sourced when you enter the container. Database
|
|
|
|
and webserver ports are forwarded to appropriate database/webserver so that you can
|
|
|
|
connect to it from your host environment.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
Run 'breeze flags' to see all applicable flags.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: build-docs
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze build-docs
|
2020-02-25 00:31:50 +03:00
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
Builds Airflow documentation. The documentation is build inside docker container - to
|
2020-02-25 00:31:50 +03:00
|
|
|
maintain the same build environment for everyone. Appropriate sources are mapped from
|
|
|
|
the host to the container so that latest sources are used. The folders where documentation
|
|
|
|
is generated ('docs/build') are also mounted to the container - this way results of
|
|
|
|
the documentation build is available in the host.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: build-image
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze build-image [FLAGS]
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
Builds docker image (CI or production) without entering the container. You can pass
|
|
|
|
additional options to this command, such as '--force-build-image',
|
|
|
|
'--force-pull-image' '--python' '--use-local-cache'' in order to modify build behaviour.
|
|
|
|
You can also pass '--production-image' flag to build production image rather than CI image.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
-a, --install-airflow-version <INSTALL_AIRFLOW_VERSION>
|
|
|
|
If specified, installs Airflow directly from PIP released version. This happens at
|
|
|
|
image building time in production image and at container entering time for CI image. One of:
|
|
|
|
|
|
|
|
1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 master v1-10-test
|
|
|
|
|
|
|
|
-t, --install-airflow-reference <INSTALL_AIRFLOW_REFERENCE>
|
|
|
|
If specified, installs Airflow directly from reference in GitHub. This happens at
|
|
|
|
image building time in production image and at container entering time for CI image.
|
|
|
|
|
|
|
|
-I, --production-image
|
|
|
|
Use production image for entering the environment and builds (not for tests).
|
|
|
|
|
|
|
|
-F, --force-build-images
|
|
|
|
Forces building of the local docker images. The images are rebuilt
|
|
|
|
automatically for the first time or when changes are detected in
|
|
|
|
package-related files, but you can force it using this flag.
|
|
|
|
|
|
|
|
-P, --force-pull-images
|
|
|
|
Forces pulling of images from DockerHub before building to populate cache. The
|
|
|
|
images are pulled by default only for the first time you run the
|
|
|
|
environment, later the locally build images are used as cache.
|
|
|
|
|
|
|
|
-E, --extras
|
|
|
|
Extras to pass to build images The default are different for CI and production images:
|
|
|
|
|
|
|
|
CI image:
|
|
|
|
devel_ci
|
|
|
|
|
|
|
|
Production image:
|
|
|
|
async,aws,azure,celery,dask,elasticsearch,gcp,kubernetes,mysql,postgres,redis,slack,
|
|
|
|
ssh,statsd,virtualenv
|
|
|
|
|
2020-05-27 18:09:11 +03:00
|
|
|
--additional-extras
|
|
|
|
Additional extras to pass to build images The default is no additional extras.
|
|
|
|
|
|
|
|
--additional-python-deps
|
|
|
|
Additional python dependencies to use when building the images.
|
|
|
|
|
2020-06-11 19:53:26 +03:00
|
|
|
--additional-dev-deps
|
|
|
|
Additional apt dev dependencies to use when building the images.
|
|
|
|
|
|
|
|
--additional-runtime-deps
|
|
|
|
Additional apt runtime dependencies to use when building the images.
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
-C, --force-clean-images
|
|
|
|
Force build images with cache disabled. This will remove the pulled or build images
|
|
|
|
and start building images from scratch. This might take a long time.
|
|
|
|
|
|
|
|
-L, --use-local-cache
|
|
|
|
Uses local cache to build images. No pulled images will be used, but results of local
|
|
|
|
builds in the Docker cache are used instead.
|
|
|
|
|
|
|
|
-D, --dockerhub-user
|
|
|
|
DockerHub user used to pull, push and build images. Default: apache.
|
|
|
|
|
|
|
|
-H, --dockerhub-repo
|
|
|
|
DockerHub repository used to pull, push, build images. Default: airflow.
|
|
|
|
|
2020-06-02 11:24:47 +03:00
|
|
|
-c, --registry-cache
|
|
|
|
If registry cache is enabled, pulls and pushes are done from the registry cache in github.
|
|
|
|
You need to be logged in to the registry in order to be able to pull/push from it and you
|
|
|
|
need to be committer to push to airflow registry.
|
|
|
|
|
|
|
|
-G, --github-organisation
|
|
|
|
GitHub organisation used to pull, push images when cache is used. Default: apache.
|
|
|
|
|
|
|
|
-g, --github-repo
|
|
|
|
GitHub repository used to pull, push images when cache is used. Default: airflow.
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: cleanup-image
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze cleanup-image [FLAGS]
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Removes the breeze-related images created in your local docker image cache. This will
|
|
|
|
not reclaim space in docker cache. You need to 'docker system prune' (optionally
|
|
|
|
with --all) to reclaim that space.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
-I, --production-image
|
|
|
|
Use production image for entering the environment and builds (not for tests).
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: exec
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze exec
|
2020-03-07 22:18:51 +03:00
|
|
|
|
|
|
|
Execs into interactive shell to an already running container. The container mus be started
|
|
|
|
already by breeze shell command. If you are not familiar with tmux, this is the best
|
|
|
|
way to run multiple processes in the same container at the same time for example scheduler,
|
|
|
|
webserver, workers, database console and interactive terminal.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: generate-requirements
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze generate-requirements [FLAGS]
|
2020-03-27 17:27:53 +03:00
|
|
|
|
|
|
|
Generates pinned requirements from setup.py. Those requirements are generated in requirements
|
|
|
|
directory - separately for different python version. Those requirements are used to run
|
|
|
|
CI builds as well as run repeatable production image builds. You can use those requirements
|
2020-04-13 09:51:33 +03:00
|
|
|
to predictably install released Airflow versions. You should run it always after you update
|
2020-03-27 17:27:53 +03:00
|
|
|
setup.py.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
Detailed usage for command: prepare-backport-readme
|
2020-05-15 20:00:15 +03:00
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze prepare-backport-packages [FLAGS] -- [YYYY.MM.DD] [PACKAGE_ID ...]
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
Prepares README.md files for backport packages. You can provide (after --) optional version
|
|
|
|
in the form of YYYY.MM.DD, optionally followed by the list of packages to generate readme for.
|
2020-05-26 20:12:21 +03:00
|
|
|
If the first parameter is not formatted as a date, then today is regenerated.
|
2020-05-15 20:00:15 +03:00
|
|
|
If no packages are specified, readme for all packages are generated.
|
|
|
|
If no date is specified, current date + 3 days is used (allowing for PMC votes to pass).
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
'breeze prepare-backport-readme' or
|
|
|
|
'breeze prepare-backport-readme -- 2020.05.10' or
|
|
|
|
'breeze prepare-backport-readme -- 2020.05.10 https google amazon'
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
General form:
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
'breeze prepare-backport-readme -- YYYY.MM.DD <PACKAGE_ID> ...'
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
* YYYY.MM.DD - is the CALVER version of the package to prepare. Note that this date
|
|
|
|
cannot be earlier than the already released version (the script will fail if it
|
|
|
|
will be). It can be set in the future anticipating the future release date.
|
|
|
|
|
|
|
|
* <PACKAGE_ID> is usually directory in the airflow/providers folder (for example
|
|
|
|
'google' but in several cases, it might be one level deeper separated with
|
|
|
|
'.' for example 'apache.hive'
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: prepare-backport-packages
|
|
|
|
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
breeze prepare-backport-packages [FLAGS] -- [PACKAGE_ID ...]
|
|
|
|
|
|
|
|
Prepares backport packages. You can provide (after --) optional list of packages to prepare.
|
2020-05-15 20:00:15 +03:00
|
|
|
If no packages are specified, readme for all packages are generated. You can specify optional
|
2020-05-19 15:17:22 +03:00
|
|
|
--version-suffix-for-svn flag to generate rc candidate packages to upload to SVN or
|
|
|
|
--version-suffix-for-pypi flag to generate rc candidates for PyPI packages.
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
'breeze prepare-backport-packages' or
|
|
|
|
'breeze prepare-backport-packages -- google' or
|
2020-05-19 15:17:22 +03:00
|
|
|
'breeze prepare-backport-packages --version-suffix-for-svn rc1 -- http google amazon' or
|
|
|
|
'breeze prepare-backport-packages --version-suffix-for-pypi rc1 -- http google amazon'
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
General form:
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
'breeze prepare-backport-packages \
|
|
|
|
[--version-suffix-for-svn|--version-suffix-for-pypi] -- <PACKAGE_ID> ...'
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
* <PACKAGE_ID> is usually directory in the airflow/providers folder (for example
|
|
|
|
'google'), but in several cases, it might be one level deeper separated with '.'
|
|
|
|
for example 'apache.hive'
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
-S, --version-suffix-for-pypi
|
|
|
|
Adds optional suffix to the version in the generated backport package. It can be used
|
|
|
|
to generate rc1/rc2 ... versions of the packages to be uploaded to PyPI.
|
|
|
|
|
|
|
|
-N, --version-suffix-for-svn
|
|
|
|
Adds optional suffix to the generated names of package. It can be used to generate
|
|
|
|
rc1/rc2 ... versions of the packages to be uploaded to SVN.
|
2020-05-15 20:00:15 +03:00
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-06-02 11:24:47 +03:00
|
|
|
Detailed usage for command: push-image
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze push_image [FLAGS]
|
2020-06-02 11:24:47 +03:00
|
|
|
|
|
|
|
Pushes images to docker registry. You can push the images to DockerHub registry (default)
|
|
|
|
or to the GitHub cache registry (if --registry-cache flag is used).
|
|
|
|
|
|
|
|
For DockerHub pushes --dockerhub-user and --dockerhub-repo flags can be used to specify
|
|
|
|
the repository to push to. For GitHub repository --github-organisation and --github-repo
|
|
|
|
flags can be used for the same purpose.
|
|
|
|
|
|
|
|
You can also add --production-image flag to switch to production image (default is CI one)
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
'breeze push-image' or
|
|
|
|
'breeze push-image --dockerhub-user user' to push to your private registry or
|
|
|
|
'breeze push-image --production-image' - to push production image or
|
|
|
|
'breeze push-image --registry-cache' - to push to GitHub cache or
|
|
|
|
'breeze push-image --registry-cache --github-organisation org' - for other organisation
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-D, --dockerhub-user
|
|
|
|
DockerHub user used to pull, push and build images. Default: apache.
|
|
|
|
|
|
|
|
-H, --dockerhub-repo
|
|
|
|
DockerHub repository used to pull, push, build images. Default: airflow.
|
|
|
|
|
|
|
|
-c, --registry-cache
|
|
|
|
If registry cache is enabled, pulls and pushes are done from the registry cache in github.
|
|
|
|
You need to be logged in to the registry in order to be able to pull/push from it and you
|
|
|
|
need to be committer to push to airflow registry.
|
|
|
|
|
|
|
|
-G, --github-organisation
|
|
|
|
GitHub organisation used to pull, push images when cache is used. Default: apache.
|
|
|
|
|
|
|
|
-g, --github-repo
|
|
|
|
GitHub repository used to pull, push images when cache is used. Default: airflow.
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
Detailed usage for command: initialize-local-virtualenv
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze initialize-local-virtualenv [FLAGS]
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-03-22 15:34:48 +03:00
|
|
|
Initializes locally created virtualenv installing all dependencies of Airflow
|
2020-03-27 17:27:53 +03:00
|
|
|
taking into account the frozen requirements from requirements folder.
|
2020-02-25 00:31:50 +03:00
|
|
|
This local virtualenv can be used to aid autocompletion and IDE support as
|
|
|
|
well as run unit tests directly from the IDE. You need to have virtualenv
|
|
|
|
activated before running this command.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
Detailed usage for command: kind-cluster
|
|
|
|
|
|
|
|
|
|
|
|
breeze kind-cluster [FLAGS] OPERATION
|
|
|
|
|
|
|
|
Manages host-side Kind Kubernetes cluster that is used to run Kubernetes integration tests.
|
|
|
|
It allows to start/stop/restart/status the Kind Kubernetes cluster and deploy Airflow to it.
|
|
|
|
This enables you to run tests inside the breeze environment with latest airflow images loaded.
|
|
|
|
Note that in case of deploying airflow, the first step is to rebuild the image and loading it
|
|
|
|
to the cluster so you can also pass appropriate build image flags that will influence
|
|
|
|
rebuilding the production image. Operation is one of:
|
|
|
|
|
|
|
|
start stop restart status deploy test
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
-F, --force-build-images
|
|
|
|
Forces building of the local docker images. The images are rebuilt
|
|
|
|
automatically for the first time or when changes are detected in
|
|
|
|
package-related files, but you can force it using this flag.
|
|
|
|
|
|
|
|
-P, --force-pull-images
|
|
|
|
Forces pulling of images from DockerHub before building to populate cache. The
|
|
|
|
images are pulled by default only for the first time you run the
|
|
|
|
environment, later the locally build images are used as cache.
|
|
|
|
|
|
|
|
-E, --extras
|
|
|
|
Extras to pass to build images The default are different for CI and production images:
|
|
|
|
|
|
|
|
CI image:
|
|
|
|
devel_ci
|
|
|
|
|
|
|
|
Production image:
|
|
|
|
async,aws,azure,celery,dask,elasticsearch,gcp,kubernetes,mysql,postgres,redis,slack,
|
|
|
|
ssh,statsd,virtualenv
|
|
|
|
|
|
|
|
--additional-extras
|
|
|
|
Additional extras to pass to build images The default is no additional extras.
|
|
|
|
|
|
|
|
--additional-python-deps
|
|
|
|
Additional python dependencies to use when building the images.
|
|
|
|
|
2020-06-11 19:53:26 +03:00
|
|
|
--additional-dev-deps
|
|
|
|
Additional apt dev dependencies to use when building the images.
|
|
|
|
|
|
|
|
--additional-runtime-deps
|
|
|
|
Additional apt runtime dependencies to use when building the images.
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
-C, --force-clean-images
|
|
|
|
Force build images with cache disabled. This will remove the pulled or build images
|
|
|
|
and start building images from scratch. This might take a long time.
|
|
|
|
|
|
|
|
-L, --use-local-cache
|
|
|
|
Uses local cache to build images. No pulled images will be used, but results of local
|
|
|
|
builds in the Docker cache are used instead.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
Detailed usage for command: setup-autocomplete
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze setup-autocomplete
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Sets up autocomplete for breeze commands. Once you do it you need to re-enter the bash
|
|
|
|
shell and when typing breeze command <TAB> will provide autocomplete for
|
|
|
|
parameters and values.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: stop
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze stop
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Brings down running docker compose environment. When you start the environment, the docker
|
|
|
|
containers will continue running so that startup time is shorter. But they take quite a lot of
|
|
|
|
memory and CPU. This command stops all running containers from the environment.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: restart
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze restart [FLAGS]
|
2020-02-27 12:44:43 +03:00
|
|
|
|
|
|
|
Restarts running docker compose environment. When you restart the environment, the docker
|
|
|
|
containers will be restarted. That includes cleaning up the databases. This is
|
2020-04-13 09:51:33 +03:00
|
|
|
especially useful if you switch between different versions of Airflow.
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
Run 'breeze flags' to see all applicable flags.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: toggle-suppress-cheatsheet
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze toggle-suppress-cheatsheet
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Toggles on/off cheatsheet displayed before starting bash shell.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: toggle-suppress-asciiart
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze toggle-suppress-asciiart
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Toggles on/off asciiart displayed before starting bash shell.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: docker-compose
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze docker-compose [FLAGS] COMMAND -- <EXTRA_ARGS>
|
2019-11-04 12:37:31 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Run docker-compose command instead of entering the environment. Use 'help' as command
|
|
|
|
to see available commands. The <EXTRA_ARGS> passed after -- are treated
|
|
|
|
as additional options passed to docker-compose. For example
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze docker-compose pull -- --ignore-pull-failures'
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
-b, --backend <BACKEND>
|
|
|
|
Backend to use for tests - it determines which database is used.
|
|
|
|
One of:
|
|
|
|
|
|
|
|
sqlite mysql postgres
|
|
|
|
|
|
|
|
Default: sqlite
|
|
|
|
|
|
|
|
--postgres-version <POSTGRES_VERSION>
|
|
|
|
Postgres version used. One of:
|
|
|
|
|
|
|
|
9.6 10
|
|
|
|
|
|
|
|
--mysql-version <MYSQL_VERSION>
|
|
|
|
Mysql version used. One of:
|
|
|
|
|
|
|
|
5.7 8
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: execute-command
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze execute-command [FLAGS] COMMAND -- <EXTRA_ARGS>
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Run chosen command instead of entering the environment. The command is run using
|
|
|
|
'bash -c "<command with args>" if you need to pass arguments to your command, you need
|
|
|
|
to pass them together with command surrounded with " or '. Alternatively you can
|
|
|
|
pass arguments as <EXTRA_ARGS> passed after --. For example:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze execute-command "ls -la"' or
|
|
|
|
'breeze execute-command ls -- --la'
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
-b, --backend <BACKEND>
|
|
|
|
Backend to use for tests - it determines which database is used.
|
|
|
|
One of:
|
|
|
|
|
|
|
|
sqlite mysql postgres
|
|
|
|
|
|
|
|
Default: sqlite
|
|
|
|
|
|
|
|
--postgres-version <POSTGRES_VERSION>
|
|
|
|
Postgres version used. One of:
|
|
|
|
|
|
|
|
9.6 10
|
|
|
|
|
|
|
|
--mysql-version <MYSQL_VERSION>
|
|
|
|
Mysql version used. One of:
|
|
|
|
|
|
|
|
5.7 8
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
Detailed usage for command: kind-cluster
|
|
|
|
|
|
|
|
|
|
|
|
breeze kind-cluster [FLAGS] OPERATION
|
|
|
|
|
|
|
|
Manages host-side Kind Kubernetes cluster that is used to run Kubernetes integration tests.
|
|
|
|
It allows to start/stop/restart/status the Kind Kubernetes cluster and deploy Airflow to it.
|
|
|
|
This enables you to run tests inside the breeze environment with latest airflow images loaded.
|
|
|
|
Note that in case of deploying airflow, the first step is to rebuild the image and loading it
|
|
|
|
to the cluster so you can also pass appropriate build image flags that will influence
|
|
|
|
rebuilding the production image. Operation is one of:
|
|
|
|
|
|
|
|
start stop restart status deploy test
|
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
|
|
|
Python version used for the image. This is always major/minor version.
|
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
-F, --force-build-images
|
|
|
|
Forces building of the local docker images. The images are rebuilt
|
|
|
|
automatically for the first time or when changes are detected in
|
|
|
|
package-related files, but you can force it using this flag.
|
|
|
|
|
|
|
|
-P, --force-pull-images
|
|
|
|
Forces pulling of images from DockerHub before building to populate cache. The
|
|
|
|
images are pulled by default only for the first time you run the
|
|
|
|
environment, later the locally build images are used as cache.
|
|
|
|
|
|
|
|
-E, --extras
|
|
|
|
Extras to pass to build images The default are different for CI and production images:
|
|
|
|
|
|
|
|
CI image:
|
|
|
|
devel_ci
|
|
|
|
|
|
|
|
Production image:
|
|
|
|
async,aws,azure,celery,dask,elasticsearch,gcp,kubernetes,mysql,postgres,redis,slack,
|
|
|
|
ssh,statsd,virtualenv
|
|
|
|
|
|
|
|
--additional-extras
|
|
|
|
Additional extras to pass to build images The default is no additional extras.
|
|
|
|
|
|
|
|
--additional-python-deps
|
|
|
|
Additional python dependencies to use when building the images.
|
|
|
|
|
2020-06-11 19:53:26 +03:00
|
|
|
--additional-dev-deps
|
|
|
|
Additional apt dev dependencies to use when building the images.
|
|
|
|
|
|
|
|
--additional-runtime-deps
|
|
|
|
Additional apt runtime dependencies to use when building the images.
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
-C, --force-clean-images
|
|
|
|
Force build images with cache disabled. This will remove the pulled or build images
|
|
|
|
and start building images from scratch. This might take a long time.
|
|
|
|
|
|
|
|
-L, --use-local-cache
|
|
|
|
Uses local cache to build images. No pulled images will be used, but results of local
|
|
|
|
builds in the Docker cache are used instead.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
Detailed usage for command: static-check
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze static-check [FLAGS] STATIC_CHECK
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Run selected static checks for currently changed files. You should specify static check that
|
|
|
|
you would like to run or 'all' to run all checks. One of:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-05-11 12:58:25 +03:00
|
|
|
all all-but-pylint airflow-config-yaml base-operator bat-tests build
|
|
|
|
build-providers-dependencies check-apache-license check-executables-have-shebangs
|
|
|
|
check-hooks-apply check-integrations check-merge-conflict check-xml
|
|
|
|
consistent-pylint daysago-import-check debug-statements detect-private-key doctoc
|
|
|
|
end-of-file-fixer fix-encoding-pragma flake8 forbid-tabs
|
Don't use the term "whitelist" - language matters (#9174)
It's fairly common to say whitelisting and blacklisting to describe
desirable and undesirable things in cyber security. However just because
it is common doesn't mean it's right.
However, there's an issue with the terminology. It only makes sense if
you equate white with 'good, permitted, safe' and black with 'bad,
dangerous, forbidden'. There are some obvious problems with this.
You may not see why this matters. If you're not adversely affected by
racial stereotyping yourself, then please count yourself lucky. For some
of your friends and colleagues (and potential future colleagues), this
really is a change worth making.
From now on, we will use 'allow list' and 'deny list' in place of
'whitelist' and 'blacklist' wherever possible. Which, in fact, is
clearer and less ambiguous. So as well as being more inclusive of all,
this is a net benefit to our understandability.
(Words mostly borrowed from
<https://www.ncsc.gov.uk/blog-post/terminology-its-not-black-and-white>)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
2020-06-08 12:01:46 +03:00
|
|
|
incorrect-use-of-LoggingMixin insert-license isort language-matters lint-dockerfile
|
|
|
|
mixed-line-ending mypy provide-create-sessions pydevd pylint pylint-tests
|
|
|
|
python-no-log-warn rst-backticks setup-order shellcheck stylelint
|
|
|
|
trailing-whitespace update-breeze-file update-extras update-local-yml-file
|
|
|
|
update-setup-cfg-file yamllint
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
You can pass extra arguments including options to to the pre-commit framework as
|
|
|
|
<EXTRA_ARGS> passed after --. For example:
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze static-check mypy' or
|
|
|
|
'breeze static-check mypy -- --files tests/core.py'
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
You can see all the options by adding --help EXTRA_ARG:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze static-check mypy -- --help'
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: static-check-all-files
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze static-check-all [FLAGS] STATIC_CHECK
|
2020-02-25 00:31:50 +03:00
|
|
|
|
|
|
|
Run selected static checks for all applicable files. You should specify static check that
|
|
|
|
you would like to run or 'all' to run all checks. One of:
|
|
|
|
|
2020-05-11 12:58:25 +03:00
|
|
|
all all-but-pylint airflow-config-yaml base-operator bat-tests build
|
|
|
|
build-providers-dependencies check-apache-license check-executables-have-shebangs
|
|
|
|
check-hooks-apply check-integrations check-merge-conflict check-xml
|
|
|
|
consistent-pylint daysago-import-check debug-statements detect-private-key doctoc
|
|
|
|
end-of-file-fixer fix-encoding-pragma flake8 forbid-tabs
|
Don't use the term "whitelist" - language matters (#9174)
It's fairly common to say whitelisting and blacklisting to describe
desirable and undesirable things in cyber security. However just because
it is common doesn't mean it's right.
However, there's an issue with the terminology. It only makes sense if
you equate white with 'good, permitted, safe' and black with 'bad,
dangerous, forbidden'. There are some obvious problems with this.
You may not see why this matters. If you're not adversely affected by
racial stereotyping yourself, then please count yourself lucky. For some
of your friends and colleagues (and potential future colleagues), this
really is a change worth making.
From now on, we will use 'allow list' and 'deny list' in place of
'whitelist' and 'blacklist' wherever possible. Which, in fact, is
clearer and less ambiguous. So as well as being more inclusive of all,
this is a net benefit to our understandability.
(Words mostly borrowed from
<https://www.ncsc.gov.uk/blog-post/terminology-its-not-black-and-white>)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
2020-06-08 12:01:46 +03:00
|
|
|
incorrect-use-of-LoggingMixin insert-license isort language-matters lint-dockerfile
|
|
|
|
mixed-line-ending mypy provide-create-sessions pydevd pylint pylint-tests
|
|
|
|
python-no-log-warn rst-backticks setup-order shellcheck stylelint
|
|
|
|
trailing-whitespace update-breeze-file update-extras update-local-yml-file
|
|
|
|
update-setup-cfg-file yamllint
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
You can pass extra arguments including options to the pre-commit framework as
|
|
|
|
<EXTRA_ARGS> passed after --. For example:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze static-check-all-files mypy' or
|
|
|
|
'breeze static-check-all-files mypy -- --verbose'
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
You can see all the options by adding --help EXTRA_ARG:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze static-check-all-files mypy -- --help'
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: test-target
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze test-target [FLAGS] TEST_TARGET -- <EXTRA_ARGS>
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Run the specified unit test target. There might be multiple
|
|
|
|
targets specified separated with comas. The <EXTRA_ARGS> passed after -- are treated
|
|
|
|
as additional options passed to pytest. For example:
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
'breeze test-target tests/test_core.py -- --logging-level=DEBUG'
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
Flags:
|
|
|
|
|
|
|
|
Run 'breeze flags' to see all applicable flags.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: flags
|
|
|
|
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
Explains in detail all the flags that can be used with breeze.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: help
|
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
breeze help
|
|
|
|
|
|
|
|
Shows general help message for all commands.
|
2020-04-13 09:51:33 +03:00
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
Detailed usage for command: help-all
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
|
|
|
|
breeze help-all
|
2020-02-25 00:31:50 +03:00
|
|
|
|
|
|
|
Shows detailed help for all commands and flags.
|
|
|
|
|
|
|
|
|
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
####################################################################################################
|
|
|
|
|
|
|
|
Summary of all flags supported by Breeze:
|
2020-02-25 00:31:50 +03:00
|
|
|
|
|
|
|
****************************************************************************************************
|
|
|
|
Choose Airflow variant
|
|
|
|
|
2020-03-27 17:27:53 +03:00
|
|
|
-p, --python <PYTHON_MAJOR_MINOR_VERSION>
|
2019-11-04 12:37:31 +03:00
|
|
|
Python version used for the image. This is always major/minor version.
|
2020-02-21 20:25:32 +03:00
|
|
|
One of:
|
|
|
|
|
2020-06-05 20:39:28 +03:00
|
|
|
3.6 3.7 3.8
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
****************************************************************************************************
|
|
|
|
Choose backend to run for Airflow
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
-b, --backend <BACKEND>
|
2019-11-04 12:37:31 +03:00
|
|
|
Backend to use for tests - it determines which database is used.
|
2020-02-21 20:25:32 +03:00
|
|
|
One of:
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
sqlite mysql postgres
|
2020-02-21 20:25:32 +03:00
|
|
|
|
|
|
|
Default: sqlite
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-04-13 09:51:33 +03:00
|
|
|
--postgres-version <POSTGRES_VERSION>
|
|
|
|
Postgres version used. One of:
|
|
|
|
|
|
|
|
9.6 10
|
|
|
|
|
|
|
|
--mysql-version <MYSQL_VERSION>
|
|
|
|
Mysql version used. One of:
|
|
|
|
|
|
|
|
5.7 8
|
|
|
|
|
|
|
|
****************************************************************************************************
|
|
|
|
Enable production image
|
|
|
|
|
|
|
|
-I, --production-image
|
|
|
|
Use production image for entering the environment and builds (not for tests).
|
|
|
|
|
|
|
|
****************************************************************************************************
|
|
|
|
Additional actions executed while entering breeze
|
|
|
|
|
2020-03-13 18:08:16 +03:00
|
|
|
-d, --db-reset
|
2020-04-13 09:51:33 +03:00
|
|
|
Resets the database at entry to the environment. It will drop all the tables
|
2020-03-13 18:08:16 +03:00
|
|
|
and data and recreate the DB from scratch even if 'restart' command was not used.
|
|
|
|
Combined with 'restart' command it enters the environment in the state that is
|
2020-04-13 09:51:33 +03:00
|
|
|
ready to start Airflow webserver/scheduler/worker. Without the switch, the database
|
2020-03-13 18:08:16 +03:00
|
|
|
does not have any tables and you need to run reset db manually.
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
-i, --integration <INTEGRATION>
|
|
|
|
Integration to start during tests - it determines which integrations are started
|
|
|
|
for integration tests. There can be more than one integration started, or all to
|
2020-04-13 09:51:33 +03:00
|
|
|
}
|
2020-02-25 00:31:50 +03:00
|
|
|
start all integrations. Selected integrations are not saved for future execution.
|
2020-02-21 20:25:32 +03:00
|
|
|
One of:
|
|
|
|
|
2020-04-22 15:38:56 +03:00
|
|
|
cassandra kerberos mongo openldap presto rabbitmq redis
|
2020-02-25 00:31:50 +03:00
|
|
|
|
|
|
|
****************************************************************************************************
|
2020-06-03 21:58:38 +03:00
|
|
|
Kind kubernetes and Kubernetes tests configuration(optional)
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
Configuration for the KinD Kubernetes cluster and tests:
|
2020-02-25 00:31:50 +03:00
|
|
|
|
|
|
|
-K, --kubernetes-mode <KUBERNETES_MODE>
|
|
|
|
Kubernetes mode - only used in case one of --kind-cluster-* commands is used.
|
2020-02-21 20:25:32 +03:00
|
|
|
One of:
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
image git
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
Default: image
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-11 18:25:19 +03:00
|
|
|
-V, --kubernetes-version <KUBERNETES_VERSION>
|
2020-02-25 00:31:50 +03:00
|
|
|
Kubernetes version - only used in case one of --kind-cluster-* commands is used.
|
2020-02-21 20:25:32 +03:00
|
|
|
One of:
|
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
v1.15.3
|
2020-02-21 20:25:32 +03:00
|
|
|
|
|
|
|
Default: v1.15.3
|
2020-01-11 18:25:19 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
|
|
|
Manage mounting local files
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-03-07 18:09:06 +03:00
|
|
|
-l, --skip-mounting-local-sources
|
2019-11-04 12:37:31 +03:00
|
|
|
Skips mounting local volume with sources - you get exactly what is in the
|
2020-04-13 09:51:33 +03:00
|
|
|
docker image rather than your current local sources of Airflow.
|
2020-03-15 01:57:47 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
|
|
|
Assume answers to questions
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-11-04 12:37:31 +03:00
|
|
|
-y, --assume-yes
|
|
|
|
Assume 'yes' answer to all questions.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-11-04 12:37:31 +03:00
|
|
|
-n, --assume-no
|
|
|
|
Assume 'no' answer to all questions.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
-q, --assume-quit
|
|
|
|
Assume 'quit' answer to all questions.
|
|
|
|
|
|
|
|
****************************************************************************************************
|
2020-04-13 09:51:33 +03:00
|
|
|
Choose different Airflow version to install or run
|
|
|
|
|
|
|
|
-a, --install-airflow-version <INSTALL_AIRFLOW_VERSION>
|
|
|
|
If specified, installs Airflow directly from PIP released version. This happens at
|
|
|
|
image building time in production image and at container entering time for CI image. One of:
|
|
|
|
|
|
|
|
1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 master v1-10-test
|
|
|
|
|
|
|
|
-t, --install-airflow-reference <INSTALL_AIRFLOW_REFERENCE>
|
|
|
|
If specified, installs Airflow directly from reference in GitHub. This happens at
|
|
|
|
image building time in production image and at container entering time for CI image.
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
2020-04-13 09:51:33 +03:00
|
|
|
Credentials
|
2020-02-21 20:25:32 +03:00
|
|
|
|
|
|
|
-f, --forward-credentials
|
2020-02-25 00:31:50 +03:00
|
|
|
Forwards host credentials to docker container. Use with care as it will make
|
|
|
|
your credentials available to everything you install in Docker.
|
2020-02-21 20:25:32 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
2020-04-13 09:51:33 +03:00
|
|
|
Flags for building Docker images (both CI and production)
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
-F, --force-build-images
|
2019-11-04 12:37:31 +03:00
|
|
|
Forces building of the local docker images. The images are rebuilt
|
|
|
|
automatically for the first time or when changes are detected in
|
|
|
|
package-related files, but you can force it using this flag.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
-P, --force-pull-images
|
2019-11-04 12:37:31 +03:00
|
|
|
Forces pulling of images from DockerHub before building to populate cache. The
|
|
|
|
images are pulled by default only for the first time you run the
|
|
|
|
environment, later the locally build images are used as cache.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-04-02 20:52:11 +03:00
|
|
|
-E, --extras
|
|
|
|
Extras to pass to build images The default are different for CI and production images:
|
|
|
|
|
|
|
|
CI image:
|
|
|
|
devel_ci
|
|
|
|
|
|
|
|
Production image:
|
|
|
|
async,aws,azure,celery,dask,elasticsearch,gcp,kubernetes,mysql,postgres,redis,slack,
|
|
|
|
ssh,statsd,virtualenv
|
|
|
|
|
2020-05-27 18:09:11 +03:00
|
|
|
--additional-extras
|
|
|
|
Additional extras to pass to build images The default is no additional extras.
|
|
|
|
|
|
|
|
--additional-python-deps
|
|
|
|
Additional python dependencies to use when building the images.
|
|
|
|
|
2020-06-11 19:53:26 +03:00
|
|
|
--additional-dev-deps
|
|
|
|
Additional apt dev dependencies to use when building the images.
|
|
|
|
|
|
|
|
--additional-runtime-deps
|
|
|
|
Additional apt runtime dependencies to use when building the images.
|
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
-C, --force-clean-images
|
2020-01-13 22:47:37 +03:00
|
|
|
Force build images with cache disabled. This will remove the pulled or build images
|
2020-01-11 18:25:19 +03:00
|
|
|
and start building images from scratch. This might take a long time.
|
|
|
|
|
|
|
|
-L, --use-local-cache
|
2020-02-25 00:31:50 +03:00
|
|
|
Uses local cache to build images. No pulled images will be used, but results of local
|
|
|
|
builds in the Docker cache are used instead.
|
2020-01-13 22:47:37 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
2020-06-02 11:24:47 +03:00
|
|
|
Flags for pulling/pushing Docker images (both CI and production)
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-01-13 22:47:37 +03:00
|
|
|
-D, --dockerhub-user
|
|
|
|
DockerHub user used to pull, push and build images. Default: apache.
|
|
|
|
|
|
|
|
-H, --dockerhub-repo
|
|
|
|
DockerHub repository used to pull, push, build images. Default: airflow.
|
|
|
|
|
2020-06-02 11:24:47 +03:00
|
|
|
-c, --registry-cache
|
|
|
|
If registry cache is enabled, pulls and pushes are done from the registry cache in github.
|
|
|
|
You need to be logged in to the registry in order to be able to pull/push from it and you
|
|
|
|
need to be committer to push to airflow registry.
|
|
|
|
|
|
|
|
-G, --github-organisation
|
|
|
|
GitHub organisation used to pull, push images when cache is used. Default: apache.
|
|
|
|
|
|
|
|
-g, --github-repo
|
|
|
|
GitHub repository used to pull, push images when cache is used. Default: airflow.
|
|
|
|
|
2020-05-15 20:00:15 +03:00
|
|
|
****************************************************************************************************
|
|
|
|
Flags for generation of the backport packages
|
|
|
|
|
2020-05-19 15:17:22 +03:00
|
|
|
-S, --version-suffix-for-pypi
|
|
|
|
Adds optional suffix to the version in the generated backport package. It can be used
|
|
|
|
to generate rc1/rc2 ... versions of the packages to be uploaded to PyPI.
|
|
|
|
|
|
|
|
-N, --version-suffix-for-svn
|
|
|
|
Adds optional suffix to the generated names of package. It can be used to generate
|
|
|
|
rc1/rc2 ... versions of the packages to be uploaded to SVN.
|
2020-05-15 20:00:15 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
****************************************************************************************************
|
2020-04-13 09:51:33 +03:00
|
|
|
Increase verbosity of the scripts
|
|
|
|
|
|
|
|
-v, --verbose
|
|
|
|
Show verbose information about executed commands (enabled by default for running test).
|
|
|
|
Note that you can further increase verbosity and see all the commands executed by breeze
|
|
|
|
by running 'export VERBOSE_COMMANDS="true"' before running breeze.
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2020-06-03 21:58:38 +03:00
|
|
|
****************************************************************************************************
|
|
|
|
Print detailed help message
|
|
|
|
|
|
|
|
-h, --help
|
|
|
|
Shows detailed help message for the command specified.
|
|
|
|
|
2019-11-04 12:37:31 +03:00
|
|
|
.. END BREEZE HELP MARKER
|
2019-08-27 21:39:36 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Convenience Scripts
|
|
|
|
-------------------
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Once you run ``./breeze`` you can also execute various actions via generated convenience scripts:
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Enter the environment : ./.build/cmd_run
|
|
|
|
Run command in the environment : ./.build/cmd_run "[command with args]" [bash options]
|
2019-12-05 12:40:28 +03:00
|
|
|
Run tests in the environment : ./.build/test_run [test-target] [pytest options]
|
2019-10-26 14:31:51 +03:00
|
|
|
Run Docker compose command : ./.build/dc [help/pull/...] [docker-compose options]
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Troubleshooting
|
|
|
|
===============
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
If you are having problems with the Breeze environment, try the steps below. After each step you
|
|
|
|
can check whether your problem is fixed.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
1. If you are on macOS, check if you have enough disk space for Docker.
|
2020-03-04 03:21:11 +03:00
|
|
|
2. Restart Breeze with ``./breeze restart``.
|
2020-04-02 20:52:11 +03:00
|
|
|
3. Delete the ``.build`` directory and run ``./breeze build-image --force-pull-images``.
|
|
|
|
4. Clean up Docker images via ``breeze cleanup-image`` command.
|
2019-10-26 14:31:51 +03:00
|
|
|
5. Restart your Docker Engine and try again.
|
|
|
|
6. Restart your machine and try again.
|
|
|
|
7. Re-install Docker CE and try again.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2020-02-25 00:31:50 +03:00
|
|
|
In case the problems are not solved, you can set the VERBOSE_COMMANDS variable to "true":
|
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
|
|
|
export VERBOSE_COMMANDS="true"
|
|
|
|
|
|
|
|
|
|
|
|
Then run the failed command, copy-and-paste the output from your terminal to the
|
|
|
|
`Airflow Slack <https://apache-airflow-slack.herokuapp.com/>`_ #airflow-breeze channel and
|
|
|
|
describe your problem.
|
2019-09-05 11:28:48 +03:00
|
|
|
|
2019-10-26 14:31:51 +03:00
|
|
|
Fixing File/Directory Ownership
|
2019-09-05 11:28:48 +03:00
|
|
|
-------------------------------
|
|
|
|
|
2020-03-31 18:44:14 +03:00
|
|
|
On Linux, there is a problem with propagating ownership of created files (a known Docker problem). The
|
2019-10-26 14:31:51 +03:00
|
|
|
files and directories created in the container are not owned by the host user (but by the root user in our
|
|
|
|
case). This may prevent you from switching branches, for example, if files owned by the root user are
|
|
|
|
created within your sources. In case you are on a Linux host and have some files in your sources created
|
2020-06-09 21:34:46 +03:00
|
|
|
by the root user, you can fix the ownership of those files by running this script:
|
2019-09-05 11:28:48 +03:00
|
|
|
|
|
|
|
.. code-block::
|
|
|
|
|
2020-01-21 13:42:45 +03:00
|
|
|
./scripts/ci/ci_fix_ownership.sh
|