{"id":2898,"date":"2022-01-31T13:09:38","date_gmt":"2022-01-31T20:09:38","guid":{"rendered":"https:\/\/weeksclan.com\/?p=2898"},"modified":"2023-09-28T02:57:06","modified_gmt":"2023-09-28T08:57:06","slug":"an-introduction-to-continuous-integration-delivery","status":"publish","type":"post","link":"https:\/\/weeksclan.com\/?p=2898","title":{"rendered":"An Introduction to Continuous Integration, Delivery, and Deployment"},"content":{"rendered":"<p>Once a project has established a CI pipeline with automatic test coverage, it is a best practice to constantly develop and improve the test coverage. Each new feature coming down the CI pipeline should have an accompanying set of tests to  assert that the new code is behaving as expected. CI functionality comes with a list of supportive technologies that may be learning curve investments for the team to undertake. These technologies are version control systems, hosting infrastructure, and orchestration technologies. An added benefit of this focus on testing is that business and development teams have extra incentive to clearly define objectives at the start of the lifecycle.<\/p>\n<p><img decoding=\"async\" class='aligncenter' style='display: block;margin-left:auto;margin-right:auto;' src=\"https:\/\/www.globalcloudteam.com\/wp-content\/uploads\/2023\/07\/dreamstime_s_220239709-min-300x169.webp\" width=\"308px\" alt=\"continuous integration solutions\"\/><\/p>\n<p>As illustrated in Figure 4, SAFe\u2019s CALMR approach to DevOps (center) enables continuous integration and several practice domains (inner rings). Each of the four activities (in green) is a collaborative effort that draws upon DevOps expertise from multiple disciplines to maximize delivery speed and quality. Developers can rapidly push changes and experiment with new feature ideas to help improve the user experience.<\/p>\n<h2>Agile &#038; DevOps<\/h2>\n<p>Thorough planning is essential so that the engineers can write the test cases to validate that the code meets these goals. Jenkins is an automated CI server written in Java and used for automating CI\/CD steps and reporting. The goal of the continuous delivery pipeline stage is to deploy new code with minimal <a href=\"https:\/\/www.globalcloudteam.com\/top-7-continuous-integration-tools\/\">continuous integration solutions<\/a> effort, but still allow a level of human oversight. Acceptance tests are one of the last types of tests that are performed on software prior to delivery. Acceptance testing is used to determine whether a piece of software satisfies all of the requirements from the business or user\u2019s perspective.<\/p>\n<p>The deployment phase is responsible for automatically launching and distributing the software artifact to end-users. At deployment time, the artifact has successfully passed the integration and delivery phases. This will happen through scripts or tools that automatically move the artifact to public servers or to another mechanism of distribution, like an app store. Without a robust CI pipeline, a disconnect between the engineering team and the rest of the organization can form.<\/p>\n<h2>Example CI\/CD workflow<\/h2>\n<p>Extending the rapid testing to run time tests in an automated testing environment leads naturally towards continuous delivery. The delivery phase is responsible for packaging an artifact together to be delivered to end-users. This build phase is kept \u2018green,\u2019 which means that the artifact should be ready to deploy to users at any given time. This subset of tools can be used to perform code quality checks and syntax reviews before the code is committed and to perform unit testing after the codebase is compiled and the application is built. CI addresses this inefficiency in traditional development pipelines using automation to increase the frequency of merging and integration from weeks to days or even hours.<\/p>\n<p><img decoding=\"async\" class='aligncenter' style='display: block;margin-left:auto;margin-right:auto;' src=\"https:\/\/www.globalcloudteam.com\/wp-content\/uploads\/2022\/12\/digital-transformation-technologies-benefits-18-300x200.webp\" width=\"304px\" alt=\"continuous integration solutions\"\/><\/p>\n<p>This means your team is responsible for configuring and managing the CI system on your own infrastructure. For example, if you have customer data privacy concerns to meet compliance standards, on-premises may be a requirement. Additionally, on-premises instances may offer deeper customization and configuration options.<\/p>\n<h2>What is continuous deployment?<\/h2>\n<p>In 2010, Timothy Fitz published an article detailing how IMVU&#8217;s engineering team had built and been using the first practical CI system. While his post was originally met with scepticism, it quickly caught on and found widespread adoption[12] as part of the Lean software development methodology, also based on IMVU. At Atlassian, we strive to keep developers innovating and our code bases healthy.<\/p>\n<p><img decoding=\"async\" class='aligncenter' style='display: block;margin-left:auto;margin-right:auto;' src=\"https:\/\/www.globalcloudteam.com\/wp-content\/uploads\/2023\/07\/ai-image-1-1-min.webp\" width=\"302px\" alt=\"continuous integration solutions\"\/><\/p>\n<p>To ensure that the primary code line (&#8220;main&#8221; in Git parlance) remains healthy, run the same level of continuous integration on all development and stable version branches as well. When the build passes on a branch, the team has the confidence to merge that code upstream. Despite these objections, helping software development teams implement<br \/>\ncontinuous integration should be the number one priority for any organization<br \/>\nwanting to start the journey to continuous delivery. A good way to<br \/>\nsolve this problem is to practice<br \/>\ntest-driven development<br \/>\n(TDD), in which developers write automated tests that initially fail, before<br \/>\nthey implement the code that makes the tests pass.<\/p>\n<h2>Use CI as part of continuous delivery or continuous deployment<\/h2>\n<p>Introducing CI to the aforementioned scenario allows software developers to work independently on features in parallel. When they are ready to merge these features into the end product, they can do so independently and rapidly. CI is a valuable and well-established practice in modern, high performance software engineering organizations. The transition from traditional manual steps into CI processes requires a profound change in how software teams function together for many traditional software organizations.<\/p>\n<div style='text-align:center'><iframe width='566' height='316' src='https:\/\/www.youtube.com\/embed\/_zCyLT33moA' frameborder='0' alt='continuous integration solutions' allowfullscreen><\/iframe><\/div>\n<p>A deployment pipeline is an automated system that runs increasingly rigorous test suites against a build as a series of sequential stages. This picks up where continuous integration leaves off, so a reliable continuous integration setup is a prerequisite to implementing continuous delivery. Continuous integration focuses on integrating work from individual developers into a main repository multiple times a day to catch integration bugs early and accelerate collaborative development. Continuous delivery is concerned with reducing friction in the deployment or release process, automating the steps required to deploy a build so that code can be released safely at any time.<\/p>\n<h2>Loyalty Management Solutions<\/h2>\n<p>CI build tools automatically package up files and components into release artifacts and run tests for quality, performance, and other requirements. After clearing required checks, CD tools send builds off to the operations team for further testing and staging. CI begins in shared repositories, where teams collaborate on code using version control systems (VCS) like Git.<\/p>\n<ul>\n<li>By introducing pull request workflows tied to CI, developers gain passive knowledge share.<\/li>\n<li>This<br \/>\nprocess results in software development and delivery that is<br \/>\nfaster and more stable<br \/>\n(PDF) when the changes are small and self-contained, and the branches they live<br \/>\non are short-lived.<\/li>\n<li>We use its parallelization and caching capabilities to speed up our container builds, and leverage its container analysis API to bless our images.<\/li>\n<li>Teams may also want to consider managed CI\/CD tools, which are available from a variety of vendors.<\/li>\n<li>Then, the organization decides when to release new functionality or features independent from deployment.<\/li>\n<\/ul>\n<p>There\u2019s also a lot of upfront investment, though, since automated tests will need to be written to accommodate a variety of testing and release stages in the CI\/CD pipeline. Delivering software and services at the speed the market demands requires teams to iterate and experiment rapidly, and to deploy new versions frequently, driven by feedback and data. The most  successful cloud development teams adopt modern&nbsp;DevOps&nbsp;culture and practices, embrace&nbsp;cloud-native&nbsp;architectures, and assemble&nbsp;toolchains&nbsp;from best-in-class tools to unleash their productivity.<\/p>\n<h2>Building your CI\/CD toolkit<\/h2>\n<p>Energy and resources companies overcome the complexities of conventional and unconventional operations in upstream logistics and supply chains with iLogistics. ILogistics provides complete control over supply chains and the transportation of personnel and materials by air, land, and sea. Intelligent and highly automated, iFlight provides dynamic situational awareness and streamlined processes for optimized operations, crew, and disruption management. From airline passenger services, air cargo management, loyalty management, to flight and crew operations, leading airlines worldwide turn to IBS Software to power their success. Our modular and mission-critical airline solutions cut across airline needs, end-to-end, so our customers can enjoy full platform integration or specific components. The QA team can then communicate any deficiencies back to the development team, improving the turnaround time rather than discovering these issues after the coding phase is completed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Once a project has established a CI pipeline with automatic test coverage, it is a best practice to constantly develop and improve the test coverage. Each new feature coming down the CI pipeline should have an accompanying set of tests to assert that the new code is behaving as expected. CI functionality comes with a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"_links":{"self":[{"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/posts\/2898"}],"collection":[{"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weeksclan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2898"}],"version-history":[{"count":1,"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/posts\/2898\/revisions"}],"predecessor-version":[{"id":2899,"href":"https:\/\/weeksclan.com\/index.php?rest_route=\/wp\/v2\/posts\/2898\/revisions\/2899"}],"wp:attachment":[{"href":"https:\/\/weeksclan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weeksclan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weeksclan.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}