<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ci/Cd on marktaguiad.dev</title>
    <link>https://marktaguiad.dev/tags/ci/cd/</link>
    <description>Recent content in Ci/Cd on marktaguiad.dev</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>marktaguiad@marktaguiad.dev (Mark Taguiad)</managingEditor>
    <webMaster>marktaguiad@marktaguiad.dev (Mark Taguiad)</webMaster>
    <copyright>marktaguiad.dev</copyright>
    <lastBuildDate>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://marktaguiad.dev/tags/ci/cd/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Breaking Away from Traditional CI/CD: Introducing GitOps with ArgoCD</title>
      <link>https://marktaguiad.dev/post/ci-argocd/</link>
      <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/ci-argocd/</guid>
      <description>&lt;p&gt;&lt;div class=&#34;alert alert-info&#34;&gt;&#xA;  &lt;div class=&#34;alert-title&#34;&gt;Info&lt;/div&gt;&#xA;  &lt;div class=&#34;alert-content&#34;&gt;&#xA;    Read on related blog first; &lt;a href=&#34;https://marktaguiad.dev/post/building-cicd&#34;&gt;Building CI/CD Pipeline - A Not-So-Comprehensive Guide&lt;/a&gt;.&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;img&#xA;  class=&#34;theme-image&#34;&#xA;  src=&#34;https://marktaguiad.dev/images/devops/cicd/ci-argocd.png&#34;&#xA;  data-light=&#34;/images/devops/cicd/ci-argocd.png&#34;&#xA;  data-dark=&#34;/images/devops/cicd/ci-argocd-dark.png&#34;&#xA;  alt=&#34;Architecture Diagram&#34;&#xA;&gt;&#xA;&#xA;Traditional CI/CD pipelines tightly couple build, test, and deployment into a single workflow. Once a change passes tests, the pipeline pushes directly to the target environment. While simple, this model limits visibility, auditability, and control over deployments.&lt;/p&gt;&#xA;&lt;p&gt;This approach shifts deployment responsibility away from the CI pipeline into a dedicated GitOps repository, where the desired state of the system lives. Deployment is no longer “pushed” — it is pulled and reconciled by ArgoCD.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Istio: A/B Testing and Canary Deployment</title>
      <link>https://marktaguiad.dev/post/k8s-istio-quatro/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/k8s-istio-quatro/</guid>
      <description>&lt;img&#xA;  class=&#34;theme-image&#34;&#xA;  src=&#34;https://marktaguiad.dev/images/devops/k8s-notes/istio/ab-testing/k8s-ab-testing-001.png&#34;&#xA;  data-light=&#34;/images/devops/k8s-notes/istio/ab-testing/k8s-ab-testing-001.png&#34;&#xA;  data-dark=&#34;/images/devops/k8s-notes/istio/ab-testing/k8s-ab-testing-dark-001.png&#34;&#xA;  alt=&#34;Architecture Diagram&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;A/B testing and Canary Deployment allows you to route traffic between different versions of your application to compare performance, behavior, or user experience.&lt;/p&gt;&#xA;&lt;p&gt;With Istio, you can control traffic without changing application code—just by configuring the service mesh.&lt;/p&gt;&#xA;&lt;p&gt;Replicate this using this &lt;a href=&#34;https://github.com/mcbtaguiad/istio-demo&#34;&gt;repo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;kubectl apply -k kube/ab-testing/demo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ab-testing-vs-canary-deployment&#34;&gt;A/B Testing vs Canary Deployment&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ab-testing&#34;&gt;A/B Testing&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#labels&#34;&gt;Labels&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#service&#34;&gt;Service&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#destination-rule&#34;&gt;Destination Rule&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#virtual-service&#34;&gt;Virtual Service&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#rollout-strategy&#34;&gt;Rollout Strategy&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#roll-back-strategy&#34;&gt;Roll-back Strategy&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#canary-deployment&#34;&gt;Canary Deployment&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#rollout-strategy-1&#34;&gt;Rollout Strategy&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#observe-metrics&#34;&gt;Observe Metrics&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;h3 id=&#34;ab-testing-vs-canary-deployment&#34;&gt;A/B Testing vs Canary Deployment&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Aspect&lt;/th&gt;&#xA;          &lt;th&gt;Canary Deployment&lt;/th&gt;&#xA;          &lt;th&gt;A/B Testing&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Purpose&lt;/td&gt;&#xA;          &lt;td&gt;Safe rollout&lt;/td&gt;&#xA;          &lt;td&gt;Experimentation&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Traffic split&lt;/td&gt;&#xA;          &lt;td&gt;Gradual (10% → 100%)&lt;/td&gt;&#xA;          &lt;td&gt;Fixed (often 50/50)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Decision basis&lt;/td&gt;&#xA;          &lt;td&gt;Errors, latency&lt;/td&gt;&#xA;          &lt;td&gt;User behavior, metrics&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;End goal&lt;/td&gt;&#xA;          &lt;td&gt;Replace old version&lt;/td&gt;&#xA;          &lt;td&gt;Pick best variant&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Versions&lt;/td&gt;&#xA;          &lt;td&gt;Usually same feature&lt;/td&gt;&#xA;          &lt;td&gt;Different UX/features&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;ab-testing&#34;&gt;A/B Testing&lt;/h3&gt;&#xA;&lt;h4 id=&#34;labels&#34;&gt;Labels&lt;/h4&gt;&#xA;&lt;p&gt;Label your deployments properly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building CI/CD Pipeline - A Not-So-Comprehensive Guide</title>
      <link>https://marktaguiad.dev/post/building-cicd/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><author>marktaguiad@marktaguiad.dev (Mark Taguiad)</author>
      <guid>https://marktaguiad.dev/post/building-cicd/</guid>
      <description>&lt;p&gt;&lt;div class=&#34;alert alert-info&#34;&gt;&#xA;  &lt;div class=&#34;alert-title&#34;&gt;Info&lt;/div&gt;&#xA;  &lt;div class=&#34;alert-content&#34;&gt;&#xA;    This is just a personal notes, so some information here might need clarification and researching.&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;img&#xA;  class=&#34;theme-image&#34;&#xA;  src=&#34;https://marktaguiad.dev/images/devops/cicd/building-cicd-001.png&#34;&#xA;  data-light=&#34;/images/devops/cicd/building-cicd-001.png&#34;&#xA;  data-dark=&#34;/images/devops/cicd/building-cicd-dark-001.png&#34;&#xA;  alt=&#34;Architecture Diagram&#34;&#xA;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;A CI/CD pipeline is an automated workflow that moves code from commit to production. It standardizes build, test, and deployment stages to improve release speed, reliability, and consistency.&lt;/p&gt;&#xA;&lt;p&gt;CI/CD integrates development and operations through automation, reducing manual errors and enabling frequent, incremental delivery.&lt;/p&gt;&#xA;&lt;h1 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h1&gt;&#xA;&lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ol&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#cicd-overview&#34;&gt;CI/CD Overview&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#continuous-integration-ci&#34;&gt;Continuous Integration (CI)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#continuous-delivery&#34;&gt;Continuous Delivery&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#continuous-deployment&#34;&gt;Continuous Deployment&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#pipeline-architecture&#34;&gt;Pipeline Architecture&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#core-components&#34;&gt;Core Components&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#source-code-management&#34;&gt;Source Code Management&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#build-system&#34;&gt;Build System&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#automated-testing&#34;&gt;Automated Testing&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#artifact-management&#34;&gt;Artifact Management&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#deployment-automation&#34;&gt;Deployment Automation&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#observability&#34;&gt;Observability&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#cicd-tools-by-pipeline-stage&#34;&gt;CI/CD Tools by Pipeline Stage&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#source--ci-build-and-integration&#34;&gt;Source &amp;amp; CI (Build and Integration)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#build--packaging-artifacts-and-containers&#34;&gt;Build &amp;amp; Packaging (Artifacts and Containers)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#deployment--orchestration&#34;&gt;Deployment &amp;amp; Orchestration&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#infrastructure-provisioning-iac&#34;&gt;Infrastructure Provisioning (IaC)&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#testing--security-tools&#34;&gt;Testing &amp;amp; Security Tools&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#monitoring--logging&#34;&gt;Monitoring &amp;amp; Logging&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#source-strategy--version-control&#34;&gt;Source Strategy / Version Control&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#trunk-based-development&#34;&gt;Trunk-Based Development&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#gitflow&#34;&gt;GitFlow&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#github-flow&#34;&gt;GitHub Flow&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#release-branching&#34;&gt;Release Branching&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#repository-hosting-platforms&#34;&gt;Repository Hosting Platforms&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#github&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#gitlab&#34;&gt;GitLab&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#bitbucket&#34;&gt;Bitbucket&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#code-review-and-merge-automation&#34;&gt;Code Review and Merge Automation&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#pull-requests&#34;&gt;Pull Requests&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#ci-validation&#34;&gt;CI Validation&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#ci-configuration&#34;&gt;CI Configuration&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#automated-build-flow&#34;&gt;Automated Build Flow&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#core-steps&#34;&gt;Core Steps&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#security--dependency-checks&#34;&gt;Security &amp;amp; Dependency Checks&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#artifact-generation&#34;&gt;Artifact Generation&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#docker-images&#34;&gt;Docker Images&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#example-ci&#34;&gt;Example CI&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#continuous-deployment-cd&#34;&gt;Continuous Deployment (CD)&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#deployment-flow&#34;&gt;Deployment Flow&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#automated-deployment&#34;&gt;Automated Deployment&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#ab-deployment-strategy&#34;&gt;A/B Deployment Strategy&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#image-injection&#34;&gt;Image Injection&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#apply-deployment&#34;&gt;Apply Deployment&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#validation-smoke-testing&#34;&gt;Validation (Smoke Testing)&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#cleanup&#34;&gt;Cleanup&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#production-deployment&#34;&gt;Production Deployment&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#release-strategies&#34;&gt;Release Strategies&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#rollback-strategy&#34;&gt;Rollback Strategy&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#safety-controls&#34;&gt;Safety Controls&lt;/a&gt;&lt;/li&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#example-cd&#34;&gt;Example CD&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#observabilty-and-monitoring&#34;&gt;Observabilty and Monitoring&lt;/a&gt;&#xA;      &lt;ol&gt;&#xA;        &lt;li&gt;&lt;a href=&#34;#key-points&#34;&gt;Key Points&lt;/a&gt;&lt;/li&gt;&#xA;      &lt;/ol&gt;&#xA;    &lt;/li&gt;&#xA;  &lt;/ol&gt;&#xA;&lt;/nav&gt;&#xA;&lt;h3 id=&#34;cicd-overview&#34;&gt;CI/CD Overview&lt;/h3&gt;&#xA;&lt;h4 id=&#34;continuous-integration-ci&#34;&gt;Continuous Integration (CI)&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Frequent code merges into a shared repository&lt;/li&gt;&#xA;&lt;li&gt;Automated builds and test execution&lt;/li&gt;&#xA;&lt;li&gt;Early detection of integration issues&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;continuous-delivery&#34;&gt;Continuous Delivery&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ensures code is always in a deployable state&lt;/li&gt;&#xA;&lt;li&gt;Deployment requires manual approval&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;continuous-deployment&#34;&gt;Continuous Deployment&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fully automated release to production&lt;/li&gt;&#xA;&lt;li&gt;Triggered after successful test validation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;pipeline-architecture&#34;&gt;Pipeline Architecture&lt;/h3&gt;&#xA;&lt;p&gt;A typical CI/CD pipeline consists of sequential automated stages:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
