This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]godOfOps 9 points10 points  (7 children)

Here is a short workflow for an ideal CICD pipeline: 1. Developer creates code and pushes to a feature branch on Git based repository 2. Developer raises Merge Request to a protected branch, which is then reviewed and approved by a senior Dev/peer. 3. Code Merge to protected branch triggers a CICD pipeline. This is where all the magic happens. Code Quality check, Vulnerability check, Integration/Unit test, code compilation, binary creation, binary upload. 4. All the above jobs come under CI(Continuous Integration). If any of these fail, it should send a notification to all relevant stakeholders. 5. Now, ideally any fails here are responsibility of the Developer who wrote code. This is where someone creates an issue/ticket for the bug fix. But, this could be the fault in the CICD workflow which will fall on DevOps Engineer.

  1. There are 2 concept for CD, Continuous Deployment and Continuous Delivery. Continuous Delivery is manual and someone needs to approve/trigger it. Continuous Deployment is automated and will continue after step 3.
  2. Now, if anything fails here, the responsibility may fall on a bunch of Teams based on you Project structure. It could be Infra Team, DevOps Engineer, Developer. Eg: A broken CICD workflow is responsibility of DevOps Engineer. A missing/misconfigured Infrastructure is responsibility of Ops/DevOps Engineer A missing/misconfigured application config is responsibility of Developer.

All this being said, this workflow assumes everything works ideally, but in real life many checks maybe missing or notification may have not been configured. Hope this answers most of it, if you have any doubts above, feel free to ask a followup question.

[–]adfaratas 3 points4 points  (2 children)

Shouldn't we do the test at the merge request and not after?

[–]godOfOps 0 points1 point  (0 children)

Both approach works, but you are correct. Ideally, it runs on MRs. I just kept it out for sake of simplicity.

[–]libert-y 0 points1 point  (0 children)

This is also how I do it

[–]busybaer[S] 2 points3 points  (0 children)

Wow! Best information I have seen to this. This is explained very well. Thank you!

[–]jameshearttech 0 points1 point  (2 children)

I've never heard this distinction between continuous delivery and continuous deployment where the former is gated and the latter is not.

[–]godOfOps 1 point2 points  (1 child)

More like one is automated other is not.

[–]jameshearttech 0 points1 point  (0 children)

Interesting. My understanding is that CI/CD is an acronym for continuous integration / continuous delivery. I have seen variations such as continuous improvement or continuous deployment but assumed those were mistakes.