{"id":27314,"date":"2019-07-02T07:34:58","date_gmt":"2019-07-02T11:34:58","guid":{"rendered":"https:\/\/centricconsulting.com\/?p=27314"},"modified":"2021-12-15T00:16:31","modified_gmt":"2021-12-15T05:16:31","slug":"devops-pipelines-its-not-only-about-continuous-integration-and-delivery-part-1","status":"publish","type":"post","link":"https:\/\/centricconsulting.com\/blog\/devops-pipelines-its-not-only-about-continuous-integration-and-delivery-part-1\/","title":{"rendered":"DevOps Pipelines Part 1: It&#8217;s Not Only About Continuous Integration and Delivery"},"content":{"rendered":"<h2 style=\"text-align: center;\">Core capabilities for running a successful DevOps implementation include Release Planning and Continuous Integration allow you the ability of continuous development of software.<\/h2>\n<hr \/>\n<h2>Setting the Stage<\/h2>\n<p class=\"intro-text\">You attended the latest webinar or conference where the talk was all about DevOps. \u201cJust use DevOps\u201d or \u201cDevOps it, man\u201d were common phrases tossed around. You already use Agile in your organization, so you are familiar with terms like product backlog, sprint backlog, stories, and enablers.<\/p>\n<p>You understand Capabilities, Epics, Features, and Stories. You think to yourself, \u201cHmm, maybe I\u2019ll get this DevOps thing to work in my organization.\u201d<\/p>\n<p>You certainly can. However, before you do that, let me clarify something first. \u201cDevOps\u201d is not a thing or title. You can\u2019t go to the supermarket and buy two pounds of DevOps. Nor can you employ a DevOps Engineer and expect him to implement DevOps in your organization in a matter of months. <strong><a href=\"https:\/\/centricconsulting.com\/technology-solutions\/devops\/\">DevOps<\/a> is a mindset that takes time.<\/strong><\/p>\n<p>It\u2019s about <strong>CALMS<\/strong>:<\/p>\n<ul>\n<li><strong>Changing<\/strong> how you develop custom software<\/li>\n<li><strong>Automating<\/strong> processes<\/li>\n<li>Adopting a <strong>Lean<\/strong> mindset<\/li>\n<li><strong>Measuring<\/strong> your progress and<strong> Sharing<\/strong> your findings<\/li>\n<\/ul>\n<h2>Getting Started<\/h2>\n<p>So, where do you start? DevOps is a critical component of your value stream and has five key capabilities on which we want to focus:<\/p>\n<ul>\n<li>Release Planning (RP)<\/li>\n<li>Continuous Integration (CI)<\/li>\n<li>Continuous Testing (CT)<\/li>\n<li>Continuous Delivery (CD)<\/li>\n<li>Continuous Monitoring and Observability (CM)<\/li>\n<\/ul>\n<p>Now, the first thing an engineer does when given these capabilities is putting tools next to each of the capabilities. Avoid doing that! Think about how you want to break down those capabilities. Those breakdowns are your Epics.<\/p>\n<p><a href=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-27353 size-full\" src=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1.jpg\" alt=\"FullPic1\" width=\"1164\" height=\"91\" srcset=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1.jpg 1164w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-300x23.jpg 300w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-768x60.jpg 768w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-1024x80.jpg 1024w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-600x47.jpg 600w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-992x78.jpg 992w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-850x66.jpg 850w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic1-750x59.jpg 750w\" sizes=\"(max-width: 1164px) 100vw, 1164px\" \/><\/a><\/p>\n<h2>Release Planning<\/h2>\n<p>At this point, the <a href=\"https:\/\/centricconsulting.com\/blog\/five-principles-for-successful-pmo_chicago\/\">Project Management Office\u00a0(PMO)<\/a> group within your company might suggest using a tool suite because \u201cthey use it today\u201d or \u201cwe got a sweet deal.\u201d This method isn\u2019t the best. Make your decision based on your goals and the features and options the tool provides to help you meet your objective.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Atlassian<\/a> provides two fantastic tools \u2013 <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">JIRA<\/a> and <a href=\"https:\/\/www.atlassian.com\/software\/confluence\" target=\"_blank\" rel=\"noopener noreferrer\">Confluence<\/a> \u2013 that cater to agile development quite nicely. Not only should you include stories about tool setup, but you need to add stories around your process as well. This step allows your stories to flow from sprint to sprint, and you can handle your respective backlogs (product and sprint) appropriately.<\/p>\n<p><a href=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-27352 size-full\" src=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2.jpg\" alt=\"FullPic2\" width=\"822\" height=\"472\" srcset=\"https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2.jpg 822w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2-300x172.jpg 300w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2-768x441.jpg 768w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2-600x345.jpg 600w, https:\/\/centricconsulting.com\/wp-content\/uploads\/2019\/07\/FullPic2-750x431.jpg 750w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/p>\n<h2>Continuous Integration<\/h2>\n<p>Starting with CI centers around where your code resides. You want to version your code in a manner that allows for easy access for developers, restricted access for others, and an easy reviewing process. Git is a top-rated tool with these abilities. Since Microsoft acquired <a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, even they use Git internally.<\/p>\n<p>However, the tool is not the point here. Having an Epic allows you to think about what you want to do in this space. Your \u201cstory\u201d is \u201cinvestigate different tools\u201d or \u201cTECH SPIKE: Compare Git and TFS.\u201d <strong>Putting time on your sprint allows you to think through options and arrive at the best solution for your organization.<\/strong> You may have stories for saving build artifacts included here as well.<\/p>\n<p>The \u201cBuild\u201d Epic provides you the story-telling ability to complete the build portion of your pipeline. For Java applications, there are a couple of options such as Gradle or Maven to build your code. A word of caution: some of the folks in your internal organization might dictate what you should or shouldn\u2019t use or even what you can or can\u2019t use. To work with agility, stay out of that trap.<\/p>\n<p><strong>The tools you choose affect the ease of use for your team, the ability to implement quickly, and the flexibility of that tool to meet your short- and long-term needs.<\/strong> Put a tech spike in your product backlog to thoroughly investigate options before you make a choice.<\/p>\n<p>You can also add stories in this spot for managing passwords (don\u2019t store plain text passwords in files!) during your build process, or you can even configuration management of properties and environment configuration values.<\/p>\n<h2>CI Engines<\/h2>\n<p>You know about the \u201cCI Engine,\u201d but did you notice I don\u2019t mention CI Engines in the diagram above? It\u2019s not because I don\u2019t find CI Engines valuable. This area is now the most confusing part about DevOps. Tool vendors start having a field day with CIOs and IT Managers, saying, \u201cBuy our tool for $250K a year, and we\u2019ll support all of your needs for CI and CD.\u201d Don\u2019t fall for it!<\/p>\n<p><strong>Create a separate Epic for CI Engine and do your homework.<\/strong> From an open source perspective, one of the most popular CI Engines is <a href=\"https:\/\/jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a>.<\/p>\n<p>I spoke to Kohsuke Kawaguchi at a conference last year. Kohsuke wrote Hudson, which is now Jenkins. He is the CTO of <a href=\"https:\/\/www.cloudbees.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CloudBees<\/a> and focuses on Jenkins Product Development. Even he agrees there is no such thing as a \u201cone size fits all\u201d CI Engine. Do the work and find a CI Engine that fits your needs. I have used Jenkins for years, and, in my experience, it fits most organizations\u2019 needs.<\/p>\n<h2>Defining Stories<\/h2>\n<p>Define similar stories for \u201chow you want to address unit testing,\u201d \u201chow can I analyze my code for issues,\u201d or \u201care there any security concerns with my code.\u201d The last one is critical if you develop an API or website people use regularly. You don\u2019t want customers exposed to security concerns through your website. Not a good look.<\/p>\n<p>Once you execute on all those stories, checking the code into Git triggers an automation to build your code. If the build completes successfully, it triggers unit tests. If the unit tests all pass, Git analyzes the code base for code quality and security issues. Again, if you trust the automation to do its job, this process is hands-off. <strong>Remember, test data must be in place in the test or staging environment for a successful run.<\/strong><\/p>\n<h2>Finally<\/h2>\n<p>We began part one of this series looking at Release Planning and Continuous Integration. These capabilities now allow you the ability of continuous development of software.<\/p>\n<p>Next time, we\u2019ll talk about Continuous Delivery and Continuous Testing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Core capabilities for a successful DevOps implementation includes Release Planning and Continuous Integration for the continuous development of software.<\/p>\n","protected":false},"author":63,"featured_media":27316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_oasis_is_in_workflow":0,"_oasis_original":0,"_oasis_task_priority":"","_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","footnotes":""},"categories":[1],"tags":[18526],"coauthors":[15012],"class_list":["post-27314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-devops","resource-categories-blogs","orbitmedia_post_topic-devops","orbitmedia_post_topic-modern-software-delivery"],"acf":[],"publishpress_future_action":{"enabled":false,"date":"2025-03-27 02:56:31","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"category"},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts\/27314"}],"collection":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/comments?post=27314"}],"version-history":[{"count":0,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/posts\/27314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/media\/27316"}],"wp:attachment":[{"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/media?parent=27314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/categories?post=27314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/tags?post=27314"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/centricconsulting.com\/wp-json\/wp\/v2\/coauthors?post=27314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}