A Flask application to handle postman webhooks for deploying and taking down repositories.
Project description
Airflow Deploy Softwrd
This is a Flask application that handles GitHub webhook POST requests for deploying and taking down repositories using Docker Compose. It is designed for managing Airflow deployments of softwrd in-house hosted repositories.
Features
- Deploy specified branches of a repository on push events (via
/payload). - Bring down specified branches of a repository (via
/putdown). - Retrieve secrets from AWS Secrets Manager for environment and Airflow variables.
- Automatically configure environment variables from secrets.
- Supports both HTTPS and SSH cloning (configurable).
- Runs deployment and takedown logic in background threads for responsiveness.
Prerequisites
- Python 3.9 or higher
- Docker and Docker Compose
- AWS credentials setup if using Secrets Manager
Installation
You can install the package from PyPI:
pip install airflow_deploy_softwrd
Configuration
AWS Credentials Setup
Set up your AWS credentials using the following command:
$Env:AWS_ACCESS_KEY_ID = "your-access-key-id"
$Env:AWS_SECRET_ACCESS_KEY = "your-secret-access-key"
you must have to set up your AWS credentials in your environment variables before running the application.
Usage
To run the server, use the following command:
airflow_deploy_softwrd /path/to/your/working/directory /path/to/config.json
Command Line Arguments
/path/to/your/working/directory: The base directory where repositories will be cloned and operated./path/to/config.json: Path to the configuration file containing allowed branches.
Configuration File
Create a JSON configuration file, e.g., config.json, with the following contents to specify allowed branches and SSH support:
Set "SSH": true if you want to clone repositories using SSH instead of HTTPS.
{
"allowed_branches": ["develop", "main", "Airflow-Changelog"],
"SSH": false
}
Required AWS Secrets
Set up the following secrets in AWS Secrets Manager:
airflow_deployment_env: Secret containing environment variables for deploying Airflow (as a JSON object).airflow_variables_env: Secret containing Airflow variable configurations (as a JSON object).
POSTMAN Webhooks
Set up your webhook sender (e.g., GitHub or POSTMAN) to point to the following endpoints of your running Flask application:
-
Deploy a branch:
http://localhost:6969/payload
-
Bring down a branch:
http://localhost:6969/putdown
Example Webhook Payloads
Deploy a Branch
The webhook payloads for both endpoints should include the following fields:
Branch Name Format:
- You can provide the branch name as either just the branch name (e.g.,
main) or prefixed withrefs/heads/(e.g.,refs/heads/main). - Other formats such as
refs/<branch_name>orheads/<branch_name>are not supported and will break the application.
{
"ref": "refs/heads/main",
"repository": {
"clone_url": "https://github.com/yourusername/yourrepo.git",
"name": "yourrepo"
},
"head_commit": {
"message": "Your commit message"
}
}
Bring Down a Branch
The webhook for bringing down a branch should contain similar information:
{
"ref": "refs/heads/main",
"repository": {
"clone_url": "https://github.com/yourusername/yourrepo.git",
"name": "yourrepo"
},
"head_commit": {
"message": "Your commit message"
}
}
Additional Notes
- The application must be started with two arguments: the base path for repositories and the path to the config file.
- Only branches listed in
allowed_branchesin your config file will be processed. - If
SSHis set to true in the config, repositories will be cloned using SSH URLs. - All deployment and takedown operations are run in background threads for non-blocking webhook responses.
Contact
Maintainer: Md Robiuddin
Project Link: Repository URL
Project details
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 airflow_deploy_softwrd-0.0.9.tar.gz.
File metadata
- Download URL: airflow_deploy_softwrd-0.0.9.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84444c21988f4f845c054f93df062fea7037744d46eae9cbc995415b0deb6452
|
|
| MD5 |
ab43e6230710228b0d4d339e901c7aaa
|
|
| BLAKE2b-256 |
38ef953d61711363be33a984b05d246294d3cf751321bb5659eab29a8c90c4dd
|
File details
Details for the file airflow_deploy_softwrd-0.0.9-py3-none-any.whl.
File metadata
- Download URL: airflow_deploy_softwrd-0.0.9-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c72122144d172573e922138d87d107ceff519a78a51080e5c788376ea67a4326
|
|
| MD5 |
6c0527d82f01bd7f565602b245e8cc7b
|
|
| BLAKE2b-256 |
009b5b7fbd9111833e733b32444e4220dcb91f4624f427d1183bb00974c29671
|