Pypeline is a Python application designed to streamline and automate the software development lifecycle, particularly the pipeline execution processes across various environments such as GitHub and Jenkins. The primary motivation for developing Pypeline stemmed from the need to unify and simplify the creation of build, test, and deployment pipelines that are traditionally defined separately across these platforms using GitHub workflows (YAML) and Jenkins pipelines (Jenkinsfile).
Key Features
-
Unified Pipeline Definition: Users can define their entire pipeline in a single YAML file, eliminating the need to switch between different syntaxes and configurations for different CI/CD tools.
-
Extensibility: Pypeline supports execution steps defined not only through local scripts but also from installed Python packages.
-
Execution Context: Each step in the pipeline receives an execution context that can be updated during step execution. This allows for the sharing of information and state between steps.
-
Dependency Handling: Dependency management ensures that only the necessary steps are executed, reducing runtime and resource usage by avoiding unnecessary operations.
-
Ease of Use: With Pypeline, setting up and running pipelines becomes more straightforward, enabling developers to focus more on coding and less on configuring pipeline specifics.
Install this via pip (or your favourite package manager):
pip install pypeline-runner
The project uses Poetry for dependencies management and packaging.
Run the bootstrap.ps1
script to install Python and create the virtual environment.
.\bootstrap.ps1
This will also generate a poetry.lock
file, you should track this file in version control.
To execute the test suite, call pytest inside Poetry's virtual environment via poetry run
:
.venv/Scripts/poetry run pytest
Check out the Poetry documentation for more information on the available commands.
For those using VS Code there are tasks defined for the most common commands:
- bootstrap
- install dependencies
- run tests
- run all checks configured for pre-commit
- generate documentation
See the .vscode/tasks.json
for more details.
This repository uses commitlint for checking if the commit message meets the conventional commit format.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This package was created with Copier and the cuinixam/pypackage-template project template.