Jenkins is good old CI where you can set up everything from simple cron job to complicated delivery pipeline. At the company where I’m working at the moment we ourselfes built an pretty-damn good Continuous Delivery pipeline which includes:
As I ordered above, tests takes from 30s (unit tests) to around 30 minutes (UAT). When taking in consideration all delivery pipeline action (code deployment, various procedures to be executed and so on) it becomes 45 minutes for a single release. So the math is 8hrs / 45min = up to 10 releases /day. That’s the physical limit. Well we are A-class team (A-for-Agile) so we need more release power.
Docker in Production
Yes! We are running docker in production. Your beloved CodeStory is running in fully Dockerised environment!
Branch name. Same as Local as Origin
Often working on fast-moving projects I find myself creating branches from branches and more. I found one really nice trick to shave couple of seconds and keyboard click. By default when you create new GIT branch locally and try to push that freshly baked branch to your origin, in my entire career I did not have to rename branches, so using the same branch name mades perfect sense. If you are in line with me, there is that magic line below:
git config --global push.default current
git config --global pull.default current
Conditional Step in Your Continuous Delivery Pipeline
Continuous Delivery (CI) often requires something to happen under certain condition. You can have different pipelines, jobs or tasks dedicated to differentiate it, but as far as best practices states – reuse. In my experience of building Delivery Pipelines, it starts with single pipeline for a product, but is often configured to have multiple paths depending on options chosen at the first step.
True at all corners of software development
It’s complicated to make complicated things simple and it’s simple to make complicated things complicated.
This saying can be applied to anything – architecture, design, pattern application and all other complicated things around our complicated world.
It’s been some time since I started thinking about sharing my experience with people about what I know best – tech, programming. I’d like to invite all to participate, discuss and constructively criticise my ideas and challenge me.
My name is Martynas (or just Martin) and I will stay here for some time.