DEV Community

INUH LEE
INUH LEE

Posted on • Edited on

DevOps Interview Practice #6

I'm a Korean DevOps engineer preparing for international opportunities. Since English isn’t my first language, I’ve been practicing both my language skills and technical knowledge at the same time.

As part of my daily English practice, I asked ChatGPT (acting as my senior DevOps engineer) to give me one interview-style question each day. I try to answer in English based on what I know, and then improve my explanation through feedback and correction.

Here’s today’s question and my answer:


Question

Have you ever set up CI/CD pipelines using GitHub Actions or another tool like Jenkins or ArgoCD? If so, can you briefly describe what kind of pipeline you built?


My First Answer (Raw)

I build a pipelinen that adopt jenkins for CI, argoCD for CD ar my current job.

at CI stage, when there are changes to the source code, jenkins build application image and push it to ecr. then apply it's image tag to the values.yaml file in the mirroring branch. and it has name prefixed argocd/ for original branch name. this branch is used for argocd sync.

there are some reasons that is use this kind of branch strategy.

since argocd is a gitops tool, it syncs kubernetes resources based on git. so a new commit which reflects new image tag is created, argocd carry out deployment based on it.

if image tag is written in original branch, there could be some difficulties for cooperation. all coworkers should pull every time even if there are no

meaningful changes to the source code.

so i chose to make a dedicated branch for argocd sync. when there are changes to the source code, jenkins commits image tag generated by original commit to the dedicated branch. i make the commit message to contain original branch name and original commit message, so that which commit argocd is syncing are visible.


Refined Answer (with feedback)

I built a CI/CD pipeline at my current job, using Jenkins for CI and ArgoCD for CD.

In the CI stage, when changes are made to the source code, Jenkins builds the application image and pushes it to ECR. Then, it applies the new image tag to a values.yaml file in a dedicated mirroring branch. This branch is prefixed with argocd/ followed by the original branch name, and is used exclusively for ArgoCD synchronization.

I chose this strategy because ArgoCD is a GitOps tool—it syncs Kubernetes resources based on the Git repository. So, whenever a new commit containing the updated image tag is created, ArgoCD triggers a deployment based on that commit.

If we were to update the image tag directly in the original development branch, it could disrupt collaboration, as developers would have to pull new commits even when there were no meaningful code changes.

To avoid that, a dedicated sync branch is automatically created by the CI pipeline. Jenkins commits the new image tag to this branch, including the original branch name and commit message in the commit. This makes it easy to trace which source commit ArgoCD is deploying.

Top comments (0)