In continuous integration (CI), versioning plays an important role. This project was created to make versioning of Conan artifacts tangible. It does so by letting the user create a virtual infrastructure of
- Git repositories (e.g. GitHub)
- Buildmaschine (e.g. Jenkins)
- Artifact store (e.g. Artifactory)
- Conan
Within this environment, the user can safely and effortlessly test what happens if project/packge artifacts are set to certain versions.
This project is implemented in Python 3 and licensed under MIT.
Conan package versioning follows semver.org. While semver specifies all aspects of versioning it also provides lots of flexibility how excatly to put it into praxis. That makes it not fully obvious how to effectively apply versions to your Conan packages:
- Should I use pre-release tags and how
- Should I use build numbers and how
- Should I include the git SHA in the package name and how
- How do the above influence package selection on consumer side (i.e.
conan install
)? - ...
Finding the right answers is not an easy task and it's helpful (if not required) to conduct some experiments. But conducting such experiments is another not so trivial task because it involves quite some infrastructure: Git repos (e.g. GitHub/GitLab/Bitbucket), a buildmachine (e.g. Jenkins), an artifact store (e.g. Artifactory), ...
That's where this CICD Simulator
comes in: It allows you to create a virtual "environment" with git repos, branches a buildmachine and an artifactory. Everything fully virtual in the RAM. It allows harmless, super fast experiments with different versioning approaches for your libraries' and projects' artifacts.
Choose one of these:
By far the easiest way to run the simulator is by clicking the Binder batch. This starts Binder which may take up to ~5 mins.
Quick start guide to run this project on your Desktop system. In the current directory, execute:
docker build -f docker/Dockerfile -t cicd-sim .
docker run --rm \
-p 8888:8888 \
-v "$(pwd)/notebooks:/home/jovyan"\
cicd-sim
Check the output click the link and start playing!
Install required libraries, install this cdcd_sim
module and finally run Jupyter on the example notebook
pip3 install -r requirements.txt
python3 setup.py install
jupyter notebook notebooks
- Artifact versioning strategy is currently hardcoded in the 'Jenkins' implementation. Make this behavior easily adjustable by the user of the simulator
- Support multiple
requires
: Right now, each project can only reference zero or one requires
This project has been set up using PyScaffold 3.2.3. For details and usage information on PyScaffold see https://pyscaffold.org/.