The Gitlab CI Python Library
Project description
gcip - Write your Gitlab CI pipelines in Python
The Gitlab CI Python Library (gcip) is a Library to create dynamic pipelines for Gitlab CI.
User Documentation | API Reference | PyPI | Docker Hub
With the gcip and the ease and power of Python you can write Gitlab CI pipelines of any complexity in well manageable Python code.
A simple starting pipeline could look like following:
from gcip import Pipeline, Job
pipeline = Pipeline()
job = Job(stage="build", script="docker build .")
pipeline.add_children(job)
pipeline.write_yaml()
For a more complex and real world example, just check out .gitlab-ci.py. This is the Python Gitlab CI pipeline of this project written with its own library. And second check out the generated yaml file of the Python code.
The gcip is using the Gitlab feature of dynamic child pipelines. First the .gitlab-ci.py
generates the common Gitlab CI yaml file which is then started as child pipeline.
Creating your pipelines in Python code allows you all the features of that language, like:
- re-use code (DRY - Dont Repeat Yourself)
- use variables, control flow (if-then-else, loops, ...), complex data structures, input/output, error handling, ...
- programming paradigms like object-oriented or functional programming
- use 3rd party libraries in your pipelines, like boto3
- test driven development of Pipelines with pytest
- package management and distribution of your pipeline code
- ... anything you can imagine to do with Python code
Documentation
Please read the User Documentation to get a quick introduction into most features of the gcip.
You can consult the API Reference to get an overview of all classes and methods and a deeper view into their parameters.
Author
gcip was created by Thomas Steinbach in 2020.
Thanks to initial contributions from Daniel von Eßen
Licence
The content of this repository is licensed under the Apache 2.0 license.
Copyright DB Systel GmbH
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.