I'm new to the community, and I looked around a bit but didn't find a good point to start from. I have a specific problem I want to solve, but while trying to think of a solution I realized I need a better devops background, and I couldn't find a resource to help me with that.
So, I'll lay out my specific question, and after that I'll summarize what are the main areas of knowledge I'm hoping to get a better understanding on...
I have a CI pipeline that works something like this:
- Developer: push code to source control (bitbucket server)
- Jenkins: poll SCM and run pipeline
- Jenkins pipeline: build artifacts from code, set environment, and test (pytest)
- Upon success and demand - manually pack the artifacts into a release
Now, most of the things here are done without any dedicated tools.
- python wheels are created but not stored anywhere (though I do have a dockerized
pypiserver - I just don't have an automated flow that uploads and updates the wheels there)
- I want to have more artifacts, e.g.
debs, binaries, libraries, etc. (I now have them stored inside local storage) and I want them better stored, better sorted and maintained, and more accessible (thought of Jfrog artifactory here)
- I want the entire environment creation to be handled by proper tools (called from the Jenkins pipeline?), and not scripts I've written (thought of
toxfor creating the python environment, but it's not enough, as I also need to be able to create docker environments, and I also need to control
dpkgas I have
debs I create and install. Maybe
ansiblecan do the trick. [I do use
ansiblefrom time to time to configure all hosts on my network, but that's basically for silly things like changing a few config files here and there])
My general question is - is there a guidebook for how to create a proper CICD system, that would be able to at least point me in the right direction? Some of the problems I encounter I fix manually, and I'm sure there are a lot of best practices and best tools for the job I'm missing out of ignorance...