Apache Airflow plugin for managing multi-repository DAG deployments
Project description
Airflow Multirepo Deploy plugin
Airflow plugin for deploying DAGs from multiple Git repository from Airflow webserver.
The plugin scans every folder in Airflow DAGs folder (without subfolders), and check if it's a git repository. It's intended to be used in a scenario where DAGs are stored in a single shared volume. The volume must be mounted in the webserver too.
It's been designed for scenarios where Airflow is deployed in a Kubernetes cluster, and multiple teams deploy their DAGs from separate repos.
Features
- Deploy DAGs from multiple Git repos
- See deployed commit for each environment
- Easily switch between branches
Installation
pip install apache-airflow-multirepo-deploy
Usage
Airflow helm chart
To use this plugin with the official Airflow helm chart, you need to configure:
dags.persistenceto create a shared persistent volumewebserver.extraVolumesandwebserver.extraVolumeMountsto mount the volume in the webserver
Configuration
Have a look at this configuration snippet and adjust it to your needs. The only required part is the GitHub App configuration if you want to use GitHub App authentication. If you don't configure it, the plugin will fall back to using SSH keys for authentication, which is also supported out of the box.
[multirepo_deploy]
# URL prefix for the deployment routes
url_prefix = deployment
# Path to the React app dist folder
react_app_dir = /path/to/plugin/ui/dist
# Optional post-deployment hook (Python callable)
# post_hook = mymodule.my_function
# Optional: restrict which branches can be deployed (comma-separated)
# allowed_branches = origin/main,origin/develop,origin/staging
# GitHub App Configuration (required for GitHub App authentication)
# To use GitHub App authentication, you need all three of these:
# 1. Your GitHub App ID (found in app settings)
gh_app_id = 123456
# 2. Base64-encoded private key for your GitHub App (PEM format)
# Generate this from your GitHub App settings
gh_app_private_key = LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQo... (truncated for security)
# 3. Installation ID for your organization
# Find this in the URL when you view the app installation:
# https://github.com/organizations/YOUR_ORG/settings/installations/INSTALLATION_ID
gh_app_installation_id = 12345678
# Note: If these are not configured, only SSH key method will be available
Authentication
While you should configure the Git authentication specific to your environment,
the plugin supports multiple SSH keys (like GitHub deployment keys) out of the box.
For a given repo , simply store the SSH key in a file <repo_folder_name>.key
in the parent folder of the repo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apache_airflow_multirepo_deploy-2.0.0rc4.tar.gz.
File metadata
- Download URL: apache_airflow_multirepo_deploy-2.0.0rc4.tar.gz
- Upload date:
- Size: 640.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fedfc3367723c907f55d97db972e1948920ef5665ae6ab2ef58c3c529eb6c994
|
|
| MD5 |
ce9fc154f7f75047012ec03e2a9ed730
|
|
| BLAKE2b-256 |
379775d06b6339996023c6a539f14039bbd9e83698701f5fe6b29c7bccebb425
|
Provenance
The following attestation bundles were made for apache_airflow_multirepo_deploy-2.0.0rc4.tar.gz:
Publisher:
release.yml on ms32035/airflow-multirepo-deploy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
apache_airflow_multirepo_deploy-2.0.0rc4.tar.gz -
Subject digest:
fedfc3367723c907f55d97db972e1948920ef5665ae6ab2ef58c3c529eb6c994 - Sigstore transparency entry: 1079348325
- Sigstore integration time:
-
Permalink:
ms32035/airflow-multirepo-deploy@bdc020005b280d4d7b9942f85e0640b1630aa6d9 -
Branch / Tag:
refs/tags/2.0.0rc4 - Owner: https://github.com/ms32035
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bdc020005b280d4d7b9942f85e0640b1630aa6d9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file apache_airflow_multirepo_deploy-2.0.0rc4-py3-none-any.whl.
File metadata
- Download URL: apache_airflow_multirepo_deploy-2.0.0rc4-py3-none-any.whl
- Upload date:
- Size: 218.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
555904718a7ac848c0f465a5b90103ee01bd5c805ac29f07130e8bb11624df4b
|
|
| MD5 |
b971c9cf431acc154bebaa3f22783766
|
|
| BLAKE2b-256 |
6ef9429ad2306eabcd12b8c00557d4efa534c861594268ddf5a1b19162d1f852
|
Provenance
The following attestation bundles were made for apache_airflow_multirepo_deploy-2.0.0rc4-py3-none-any.whl:
Publisher:
release.yml on ms32035/airflow-multirepo-deploy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
apache_airflow_multirepo_deploy-2.0.0rc4-py3-none-any.whl -
Subject digest:
555904718a7ac848c0f465a5b90103ee01bd5c805ac29f07130e8bb11624df4b - Sigstore transparency entry: 1079348328
- Sigstore integration time:
-
Permalink:
ms32035/airflow-multirepo-deploy@bdc020005b280d4d7b9942f85e0640b1630aa6d9 -
Branch / Tag:
refs/tags/2.0.0rc4 - Owner: https://github.com/ms32035
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bdc020005b280d4d7b9942f85e0640b1630aa6d9 -
Trigger Event:
push
-
Statement type: