I haven't had experience working with a full CI/CD pipeline yet so I thought I would build a "Hello, World!" one. I realise CI/CD is a complex subject and it will take me time to learn and build but I want to give it my best shot to keep it simple ... ish.
There are probably many technology combinations that could be used but I want to use the following criteria to narrow it down:
- Tooling shall be free for individual use - preferably Open Source or have a Community Edition available.
- Tooling shall run on my Ubuntu 18.04 machine.
- Tooling shall be able to run on Windows and Mac.
Now I am a very confident Bash scripter and I think I could use Bash as the glue for my rinky-dink (?!!) pipeline but I don't want to because I want to have fun and learn all the things!
So I after some google-foo I cobbled together the following line up:
- Git and GitHub for source/configuration control.
- GitHub for issue tracking.
- Jenkins to run build and tests.
- Docker containers to run each of the 2 hello-world-ish micro-services.
- Kubernetes to orchestrate container deployment to give continuous user access to the micro-services.
- I may have to use Virtual Box to simulate a multi-node architecture.
I realise that Azure Devops has a free tier which looks great. I know that GitHub is working on a CI/CD pipeline with free (I think) self-hosted runners. But I feel like more of a challenge. However, I reserve the right to change my mind if things get out of control!
So that's the rough plan. Feel free to tell me what I am missing, where I am over-tooling, or what you would do differently in the comments.