Ancile is a release risk assessment tool that analyzes differences between Git tags and evaluates changes based on configurable risk categories.
Project description
Ancile
Your shield against risky releases
Ancile is a release risk assessment tool that analyzes differences between Git tags and evaluates changes based on configurable risk categories.
🛡️ Overview
Ancile helps development teams identify potential risks in releases by:
- Comparing Git tags to analyze changes between versions
- Mapping changed files to predefined risk categories
- Generating risk assessment reports for releases
✨ Features
- Git tag differential analysis
- Configurable risk categories and folder mappings
- Risk assessment scoring
- Detailed reporting
- Easy integration with CI/CD pipelines
🚀 Getting Started
Docker Usage
# Print usage
docker run ancile --help
# Assess risk between two tags
docker run -v $(pwd):/var/opt/ancile ancile --risk-config /var/opt/ancile/risk_mappings.yaml --stable 1.0.0 --change 1.1.0 --repo-path /var/opt/ancile
# Use with local repository
docker run -v /path/to/your/repo:/var/opt/ancile ancile --risk-config /var/opt/ancile/risk_mappings.yaml --stable 1.0.0 --change 1.1.0 --repo-path /var/opt/ancile
Prerequisites
- Python 3.12 or higher
- Git
Installation
pip install ancile
CLI Usage
The primary way to use Ancile is through its command-line interface:
# Ask for help
ancile --help
# Basic usage
ancile --risk-config risks.yaml --stable 1.0.0 --change 1.0.1
# With optional repository path
ancile --risk-config risks.yaml --stable 1.0.0 --change 1.0.1 --repo-path /path/to/repo
# To generate a default risk mapping configuration
ancile --generate-config --risk-config risk_mappings.yaml
CLI Options:
See also the usage with ancile --help.
--generate-config: a flag to generate a risk mappings template--risk-config: Path to risk mapping configuration file (default: risk_mappings.yaml)--stable: The stable tag currently in production--change: The new tag to assess for release--repo-path: Path to the git repository (default: current directory)--debug: very verbose output--verbose: prints out more information--version: prints the current version of Ancile
The primary way to use Ancile is through its command-line interface:
# Basic usage
ancile --risk_mappings=risks.yaml --stable=1.0.0 --change=1.0.1
# With optional repository path
ancile --risk_mappings=risks.yaml --stable=1.0.0 --change=1.0.1 --repo-path=/path/to/repo
Development
- Clone the repository
- Create a virtual environment:
python -m venv venv - Activate the virtual environment:
- Windows:
venv\Scripts\activate - Unix/MacOS:
source venv/bin/activate
- Windows:
- Install development dependencies:
pip install -r requirements.txt - Install the package in editable mode:
pip install -e .
Testing
Run tests with pytest:
pytest tests/
⚙️ Configuration
Create an ancile.yaml in your project root:
mappings:
- folder: /docs
risk: LOW
- folder: /tests
risk: LOW
- folder: /src/core
risk: HIGH
- folder: /src/api
risk: HIGH
Exit Codes
The tool returns different exit codes depending on the risk assessment:
0: LOW risk1: MEDIUM risk2: HIGH risk
This allows for easy integration with CI/CD pipelines to automate deployment decisions.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📝 License
This project is licensed under the GNU General Public License v3.0 only - see the LICENSE file for details.
Copyright (C) 2025 Leading Works SàRL
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
🔍 Etymology
The name "Ancile" comes from Greek mythology, referring to the shield of Zeus and Athena. Just as the divine ancile protected the gods, this tool helps protect your releases by identifying potential risks.
✨ Acknowledgments
- Inspired by the need for better release risk assessment
Made with ❤️ by Leading Works SàRL
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 ancile-1.0.0.tar.gz.
File metadata
- Download URL: ancile-1.0.0.tar.gz
- Upload date:
- Size: 36.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03fa2abec0200d7e0c9e69e12f7e882cf5a2595f6c8fc7a310ea4e76b123b3d5
|
|
| MD5 |
0d25bfeda77f2cb0bea090b401be4b49
|
|
| BLAKE2b-256 |
ec056dfe7c14c1957bc466a9ff0791655135e7eb5dad6e4dde164369846078e3
|
File details
Details for the file ancile-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ancile-1.0.0-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbe484b49c15a4dedf61e2682f1718cfb34221303f0b5536fdbb0f58b1ad63b3
|
|
| MD5 |
90275ba37068ddd68c67b6354e18246c
|
|
| BLAKE2b-256 |
a69f79466a98bc70ce3de307ff18a4b576fff5b0c086f251d310089f63ed4e4f
|