Skip to main content

Modular Pipeline Library

Project description

Modular Pypeline Library

python build-and-test-module coverage publish-documentation version package downloads Checked with mypy linting: pylint

What is MPyL?

MPyL stands for Modular Pipeline Library (in Python).

This library is loosely based on the principles described in https://www.jenkins.io/blog/2019/01/08/mpl-modular-pipeline-library/ but completely independent of Jenkins or any other CI/CD platform.

🔖 Documentation

Detailed, complete, searchable documentation can be found at https://vandebron.github.io/mpyl

📚 Principles

MPyL is built with the following principles in mind.

  • Not a platform It is not tied to any CI/CD platform. MPyL is a library, not a framework. It is not a runner, not a scheduler, and it doesn't have a GUI. It can be plugged into any CI/CD platform. Examples of CI/CD flows in Jenkins or Dagster are included.
  • Minimal footprint: It is self-contained and has very few external dependencies (e.g. Git, Docker or HELM). It can be run anywhere, also on your local machine.
  • Accessible and maintainable
    • Written in Python, probably the most widely adopted scripting language.
    • Strongly typed: MyPy type hints and schemas for all YAML files. Clearly defined interfaces for inputs and outputs of steps.
    • Focus on short feedback loop. Unit testable and everything can be run locally.
  • Self documented by docstrings in the code, descriptions in the schemas and explanations in the CLI.
  • Python as YAML templating engine Attempts to mix markup and logic tend to have a worst of both worlds outcome. MPyL uses YAML strictly for configuration. Where YAML needs to produced dynamically, like for CRDs via HELM charts, it is generated by Python code. Te produced YAML is validated against the corresponding schemas.
  • Extensible Support for the most common use cases (e.g. Docker, Helm, Kubernetes, AWS, etc.) is built-in. But it is easy to extend with your own mpyl.steps.

💻 Technologies

Requirements

The following technologies are expected to be present on the local OS:

Bundled

MPyL is extensible and has a minimal footprint. Having said that, batteries for the following technologies are included.

CI/CD
Build
  • Docker mpyl.steps.build.dockerbuild
  • Scala (SBT) mpyl.steps.build.sbt
  • Jenkins mpyl.cli.commands.build.jenkins and mpyl.utilities.jenkins.runner.JenkinsRunner
Testing
  • Junit mpyl.steps.models.ArtifactType.JUNIT_TESTS
Deployment
  • K8S mpyl.steps.deploy.kubernetes
  • Helm mpyl.steps.deploy.k8s.helm
Reporting
  • Jira mpyl.reporting.targets.jira
  • Github mpyl.reporting.targets.github
  • Slack mpyl.reporting.targets.slack

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

mpyl-1.0.0.linux-x86_64.tar.gz (94.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mpyl-1.0.0-py3.9.egg (118.9 kB view details)

Uploaded Egg

mpyl-1.0.0-py3-none-any.whl (126.1 kB view details)

Uploaded Python 3

File details

Details for the file mpyl-1.0.0.linux-x86_64.tar.gz.

File metadata

  • Download URL: mpyl-1.0.0.linux-x86_64.tar.gz
  • Upload date:
  • Size: 94.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.16

File hashes

Hashes for mpyl-1.0.0.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 67f3b56b73c3d1d2b65d396f818f9413071477cd2d3b9b8fadf619f317a75af7
MD5 689d2853f9d2535cfa14443e303c305a
BLAKE2b-256 6bbe13ef04933daf7336e8b804313eb53653b01621212bf70a4412355b896f98

See more details on using hashes here.

File details

Details for the file mpyl-1.0.0-py3.9.egg.

File metadata

  • Download URL: mpyl-1.0.0-py3.9.egg
  • Upload date:
  • Size: 118.9 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.16

File hashes

Hashes for mpyl-1.0.0-py3.9.egg
Algorithm Hash digest
SHA256 6ee66e8f0d5fdaac80ac64ce3ac6a433d41836f1c8c3c6b72f0a600cc90ee1cb
MD5 44ffce0b85bdfa988705908f81a0e16a
BLAKE2b-256 064b0d042819d9030ca6be221a69633b3571078813c4a23a8808ae3e1c55955f

See more details on using hashes here.

File details

Details for the file mpyl-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: mpyl-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 126.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.16

File hashes

Hashes for mpyl-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3998ddba596fd983febc23368809c78dbc140198eafad7fb78b395d08cd47766
MD5 58fad7091078dabd2b5bc417a5388352
BLAKE2b-256 f3cc7237a4e20059864e5de3cc5fdedeaca1abc8161d45f0d3b58fe7243e6649

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page