<?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 | Haobin Tan</title><link>https://haobin-tan.netlify.app/tags/ci/cd/</link><atom:link href="https://haobin-tan.netlify.app/tags/ci/cd/index.xml" rel="self" type="application/rss+xml"/><description>CI/CD</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 11 May 2022 00:00:00 +0000</lastBuildDate><image><url>https://haobin-tan.netlify.app/media/icon_hu7d15bc7db65c8eaf7a4f66f5447d0b42_15095_512x512_fill_lanczos_center_3.png</url><title>CI/CD</title><link>https://haobin-tan.netlify.app/tags/ci/cd/</link></image><item><title>CI/CD</title><link>https://haobin-tan.netlify.app/docs/cs/software-engineering/best_practice/ci_cd/</link><pubDate>Wed, 11 May 2022 00:00:00 +0000</pubDate><guid>https://haobin-tan.netlify.app/docs/cs/software-engineering/best_practice/ci_cd/</guid><description>&lt;figure>&lt;img src="https://raw.githubusercontent.com/EckoTan0804/upic-repo/master/uPic/cicd.svg.imgo.svg"
alt="CI/CD (Source: Synopsys)">&lt;figcaption>
&lt;p>CI/CD (Source: &lt;a href="https://www.synopsys.com/glossary/what-is-cicd.html">Synopsys&lt;/a>)&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;h2 id="what-is-cicd">What is CI/CD?&lt;/h2>
&lt;ul>
&lt;li>A method to frequently deliver &lt;a href="https://www.redhat.com/en/topics/cloud-native-apps">apps&lt;/a> to customers by introducing &lt;a href="https://www.redhat.com/en/topics/automation">automation&lt;/a> into the stages of &lt;a href="https://www.redhat.com/en/topics/cloud-native-apps/why-choose-red-hat-cloud-native">app development&lt;/a>.
&lt;ul>
&lt;li>&lt;strong>CI&lt;/strong> = &lt;strong>C&lt;/strong>ontinuous &lt;strong>I&lt;/strong>ntegration&lt;/li>
&lt;li>&lt;strong>CD&lt;/strong> = &lt;strong>C&lt;/strong>ontinuous &lt;strong>D&lt;/strong>elivery and &lt;strong>D&lt;/strong>eployment&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Introduces ongoing automation and continuous monitoring throughout the &lt;a href="https://www.redhat.com/en/topics/devops/what-is-application-lifecycle-management-alm">lifecycle of apps&lt;/a>, from integration and testing phases to delivery and &lt;a href="https://www.redhat.com/en/topics/automation/what-is-deployment-automation">deployment&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h3 id="continuous-integration-ci">Continuous Integration (CI)&lt;/h3>
&lt;ul>
&lt;li>An automation process for &lt;strong>developers&lt;/strong>
&lt;ul>
&lt;li>New code changes to an app are regularly built, tested, and merged to a shared repository.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>This process is automated to ensure that teams can build, test, and package their applications in a reliable and repeatable way.&lt;/li>
&lt;li>Helps streamline code changes, thereby increasing time for developers to make changes and contribute to improved software.&lt;/li>
&lt;li>A solution to the problem of having too many branches of an app in development at once that might conflict with each other.&lt;/li>
&lt;/ul>
&lt;h3 id="cotinuous-delivery-andor-deployment-cd">Cotinuous Delivery and/or Deployment (CD)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://www.synopsys.com/glossary/what-is-continuous-delivery.html">Continuous delivery&lt;/a>&lt;/strong>
&lt;ul>
&lt;li>The automated delivery of completed code to environments like testing and development.
&lt;ul>
&lt;li>&lt;em>I.e.&lt;/em>, a developer’s changes to an application are automatically bug tested and uploaded to a repository&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Provides an automated and consistent way for code to be delivered to these environments.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://www.synopsys.com/glossary/what-is-continuous-development.html">&lt;strong>Continuous deployment&lt;/strong>&lt;/a>
&lt;ul>
&lt;li>Next step of continuous delivery&lt;/li>
&lt;li>Every change that passes the automated tests is automatically placed in production, resulting in many production deployments.&lt;/li>
&lt;li>Addresses the problem of overloading operations teams with manual processes that slow down app delivery&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">They are related concepts that sometimes get used interchangeably. Both are about automating further stages of the pipeline, but they’re sometimes used separately to illustrate just how much automation is happening.&lt;/span>
&lt;/div>
&lt;h3 id="difference-between-ci-and-cd">Difference between CI and CD&lt;/h3>
&lt;p>CI is a set of practices performed &lt;em>as developers are writing&lt;/em> code, and CD is a set of practices performed &lt;em>after&lt;/em> the code is completed.&lt;/p>
&lt;h2 id="how-cicd-pipeline-works">How CI/CD pipeline works?&lt;/h2>
&lt;p>The CI/CD pipeline works like an infinity loop:&lt;/p>
&lt;figure>&lt;img src="https://raw.githubusercontent.com/EckoTan0804/upic-repo/master/uPic/cicd.svg.imgo.svg"
alt="CI/CD (Source: Synopsys)" width="80%">&lt;figcaption>
&lt;p>CI/CD (Source: &lt;a href="https://www.synopsys.com/glossary/what-is-cicd.html">Synopsys&lt;/a>)&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;ol>
&lt;li>Developers write the &lt;strong>code&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Build&lt;/strong> or compile the code&lt;/li>
&lt;li>&lt;strong>Test&lt;/strong> the code for bugs&lt;/li>
&lt;li>&lt;strong>Release&lt;/strong> the code if all tests are passed&lt;/li>
&lt;li>&lt;strong>Deploy&lt;/strong> the change in production&lt;/li>
&lt;li>End users or customers &lt;strong>operate&lt;/strong> the new change&lt;/li>
&lt;li>Project owner or project manager monitors and gets feedback&lt;/li>
&lt;li>&lt;strong>Plan&lt;/strong> the next step based on the feedback&lt;/li>
&lt;li>Back to step 1: Write code based on the plan&lt;/li>
&lt;/ol>
&lt;h2 id="why-is-cicd-important">Why is CI/CD Important?&lt;/h2>
&lt;ul>
&lt;li>Allows organizations to ship software quickly and efficiently.&lt;/li>
&lt;li>Facilitates an effective process for getting products to market faster than ever before, continuously delivering code into production, and ensuring an ongoing flow of new features and bug fixes via the most efficient delivery method.&lt;/li>
&lt;/ul>
&lt;h2 id="benefit-of-cicd">Benefit of CI/CD&lt;/h2>
&lt;ul>
&lt;li>Automated testing enables continuous delivery, which ensures software &lt;strong>quality&lt;/strong> and &lt;strong>security&lt;/strong> and increases the &lt;strong>profitability&lt;/strong> of code in production.&lt;/li>
&lt;li>CI/CD pipelines enable a much &lt;strong>shorter time to market&lt;/strong> for new product features, creating happier customers and lowering strain on development.&lt;/li>
&lt;li>The &lt;strong>great increase in overall speed of delivery&lt;/strong> enabled by CI/CD pipelines improves an organization’s competitive edge.&lt;/li>
&lt;li>Automation &lt;strong>frees team members&lt;/strong> to focus on what they do best, yielding the best end products.&lt;/li>
&lt;li>Organizations with a successful CI/CD pipeline can attract great talent. By moving away from traditional &lt;a href="https://en.wikipedia.org/wiki/Waterfall_model">waterfall methods&lt;/a>, engineers and developers are no longer bogged down with repetitive activities that are often highly dependent on the completion of other tasks.&lt;/li>
&lt;/ul>
&lt;p>##Reference&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://www.redhat.com/en/topics/devops/what-is-ci-cd">What is CI/CD?&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.synopsys.com/glossary/what-is-cicd.html">CICD&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Video tutorials&lt;/p>
&lt;ul>
&lt;li>
&lt;p>DevOps CI/CD Explained in 100 Seconds&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/scEDHsr3APg?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>
&lt;p>CI/CD Explained | How DevOps Use Pipelines for Automation&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/M4CXOocovZ4?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>​&lt;/p></description></item></channel></rss>