본 튜토리얼은 Apache Airflow 프로젝트에 기여하고자 하는 입문자들을 대상으로 하며 간략한 환경 설정 방법을 안내합니다.
1. Prerequisite
모든 오픈소스는 고유의 생태계가 존재합니다. 본격적으로 기여하기 전에 공식 문서를 통해 커뮤니티를 이해하는 것을 권장합니다. 아래 경로의 문서를 정독해 보세요. 기여 순서나 개발 환경 세팅, 코드 컨벤션 등 필요한 내용이 기술되어 있습니다.
Docs: airflow/contributing-docs at main · apache/airflow · GitHub
2. 개발 환경 설정
- Python 설치 및 가상환경 구성
Upgrading to Airflow 3 — Airflow 3.0.2 Documentation
: Make sure that your Python version is in the supported list. Airflow 3.0.0 supports the following Python versions: Python 3.9, 3.10, 3.11 and 3.12.
기여하고자 하는 버전을 확인하세요. v3 부터 최소 Python 3.9 이상 버전을 요구합니다. 적절한 버전으로 가상환경을 생성하여 프로젝트 의존성을 격리해 주세요.
$ brew install python@3.11
$ mkdir ~/workspace/airflow-dev
$ cd ~/workspace/airflow-dev
$ python3.11 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
# fork한 airflow 저장소로 이동
$ cd ~/workspace/airflow # git clone한 디렉토리
# breeze 설치 (pipx, uv, 또는 pip 중 택1)
$ pip install -e ./dev/breeze
- 왜
Breeze
를 쓰는가?
Airflow는 breeze 와 pre-commit 을 통해 통일된 개발 환경을 유지하고 있습니다.
pre-commit - 코드 스타일/린트/포맷 등 자동 검사
breeze - 컨테이너를 통한 개발 환경 관리
Breeze는 Docker 기반 환경 관리 도구입니다. 다음과 같이 설치할 수 있습니다. Airflow를 컨테이너 환경에서 손쉽게 실행할 수 있도록 돕습니다.
# 개발 환경 실행
$ breeze start-airflow
이 명령어는 내부적으로 Airflow 데이터베이스 초기화, 관리자 계정(admin/admin) 생성, 웹서버 및 스케줄러 실행을 자동으로 처리합니다.
- 주의사항
Breeze는 도커 기반이므로, OSX 의 경우 Docker Desktop이 설치 및 실행 중이어야 합니다. 도커 상태 확인은 다음 명령어로 가능합니다.
docker --version
docker ps
3. 기여
신규 기능 추가나 수정 작업을 진행한 경우 pre-commit 을 통과하는 것도 필요하지만 pytest 로 구현된 unittest 를 적절히 업데이트하는 것도 중요합니다.
Breeze shell 에서 아래와 같이 단일 테스트를 디버깅하거나 전체 테스트 커버리지를 확인할 수 있습니다.
# example
$ pytest airflow-core/tests/unit/api_fastapi/core_api/routes/public/...
마지막으로 작업한 PR 이 Merge 되기 위해서는 몇 가지 조건을 만족해야 합니다. 복잡한 기능일 수록 리뷰 과정에서 커미터 및 유관자들과 논의가 길어질 수 있습니다.
apache-airflow.slack.com 공식 Slack Workspace 에서 커미터 및 컨트리뷰터들의 논의 히스토리가 확인 가능하니 필요 시 참고해 보세요.
(* 오류 정정 및 업데이트 제안은 언제나 감사합니다)