{"id":3439,"date":"2021-08-13T05:41:10","date_gmt":"2021-08-13T09:41:10","guid":{"rendered":"https:\/\/blogs.sw.siemens.com\/polarion\/?p=3439"},"modified":"2026-03-26T05:41:56","modified_gmt":"2026-03-26T09:41:56","slug":"part-2-polarions-rd-goes-devops","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/polarion\/part-2-polarions-rd-goes-devops\/","title":{"rendered":"Part 2: Polarion\u2019s R&#038;D Goes DevOps"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Part 2: Polarion&#8217;s R&amp;D Goes DevOps<\/h1>\n\n\n\n<p>by <em>Nick Entin &#8211; Software Engineering Director, Polarion ALM, Siemens PLM<\/em><\/p>\n\n\n\n<p>In part two of the series, where we continue on how we &#8220;drink our champagne&#8221; within Polarion R&amp;D and how we utilize Polarion&#8217;s capabilities to build Polarion for you!<\/p>\n\n\n\n<p>Let&#8217;s kick it off with how we do planning here at Siemens Polarion within Polarion.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Planning&nbsp;<\/strong><\/h3>\n\n\n\n<p>While planning strategically, Capabilities are prioritized and assigned to their corresponding departments. There&nbsp;they are estimated and provided with the relevant Capacities to ensure their completion.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12-1024x543.png\" alt=\"Graphical user interface, application, table\n\nDescription automatically generated\" class=\"wp-image-3472\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12-1024x543.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12-600x318.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12-768x407.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12-900x477.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-12.png 1377w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><sub>&nbsp;(some&nbsp;pieces of the picture are blurred for business and GDPR reasons)&nbsp;<\/sub><\/p>\n\n\n\n<p>On&nbsp;the&nbsp;product\/project level,&nbsp;a&nbsp;plan&nbsp;may be distributed&nbsp;amongst&nbsp;Scrum teams to ensure&nbsp;that the work is distributed appropriately,&nbsp;and any required synchronization is identified.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"403\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-1024x403.png\" alt=\"Table\n\nDescription automatically generated\" class=\"wp-image-3457\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-1024x403.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-600x236.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-768x302.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-900x354.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8.png 1134w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When&nbsp;the&nbsp;planning&nbsp;reaches the&nbsp;Scrum&nbsp;team&nbsp;level,&nbsp;Capabilities&nbsp;are broken down&nbsp;into&nbsp;Features&nbsp;then&nbsp;again into&nbsp;User Stories&nbsp;(Defects,&nbsp;Patches,&nbsp;or&nbsp;other&nbsp;relevant&nbsp;PBIs).&nbsp;&nbsp;On&nbsp;each level,&nbsp;related&nbsp;activities need to be planned,&nbsp;and&nbsp;their&nbsp;progress evaluated over time.&nbsp;For example,&nbsp;a&nbsp;Capability must be&nbsp;aligned&nbsp;with&nbsp;the&nbsp;capacity of the assigned team(s), Features,&nbsp;and&nbsp;planned&nbsp;so that they can&nbsp;be delivered to a customer by&nbsp;the&nbsp;target&nbsp;date.&nbsp;Teams should easily be able to&nbsp;assess&nbsp;a&nbsp;User Story\u2019s level of complexity based on the number of Story Points assigned to it.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Relevant activities for&nbsp;an&nbsp;upcoming PI&nbsp;for a Scrum Team:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"650\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-1024x650.png\" alt=\"Graphical user interface, table\n\nDescription automatically generated\" class=\"wp-image-3459\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-1024x650.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-600x381.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-768x487.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-900x571.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4.png 1376w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>The&nbsp;corresponding execution progress&nbsp;can&nbsp;be&nbsp;monitored via a&nbsp;Burn Down Chart:&nbsp;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"688\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13-1024x688.png\" alt=\"Chart\n\nDescription automatically generated\" class=\"wp-image-3474\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13-1024x688.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13-600x403.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13-768x516.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13-900x605.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-13.png 1375w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&nbsp;&nbsp;<\/p>\n\n\n\n<p>The graph above&nbsp;reflects&nbsp;our&nbsp;level of agility. Even&nbsp;after starting a&nbsp;PI,&nbsp;&nbsp;after&nbsp;all planning and estimations, the&nbsp;estimates continue to change. (And the change is&nbsp;usually&nbsp;a rise.)&nbsp;&nbsp;The&nbsp;gap&nbsp;between&nbsp;the&nbsp;remaining estimate and&nbsp;the&nbsp;ideal progress is expected&nbsp;because&nbsp;we&nbsp;only&nbsp;burn points after&nbsp;the&nbsp;planned PBIs are completely done. (This&nbsp;usually takes&nbsp;a little&nbsp;time&nbsp;before&nbsp;it\u2019s&nbsp;reflected in the&nbsp;Burn&nbsp;Down&nbsp;Chart.)&nbsp;<\/p>\n\n\n\n<p><strong>Possible&nbsp;Burn&nbsp;Down&nbsp;Chart<\/strong><strong><sup>4<\/sup><\/strong><strong>:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"423\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1.jpeg\" alt=\"Image title\" class=\"wp-image-3446\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1.jpeg 620w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1-600x409.jpeg 600w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/figure>\n\n\n\n<p><strong>And&nbsp;for&nbsp;a concrete Sprint:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"650\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10-1024x650.png\" alt=\"Graphical user interface, application, website\n\nDescription automatically generated\" class=\"wp-image-3461\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10-1024x650.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10-600x381.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10-768x488.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10-900x572.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-10.png 1376w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Software&nbsp;Development Lifecycle (SDLC)&nbsp;<\/strong><\/h3>\n\n\n\n<p>I&nbsp;will&nbsp;not touch&nbsp;on&nbsp;all aspects of&nbsp;the&nbsp;SDLC. I&nbsp;am&nbsp;simply trying to&nbsp;give an&nbsp;overall&nbsp;picture&nbsp;of&nbsp;the tool chain we use and how we&nbsp;guide&nbsp;our process through it.&nbsp;<\/p>\n\n\n\n<p>Most&nbsp;of&nbsp;Polarion\u2019s&nbsp;code is written&nbsp;in Java&nbsp;so&nbsp;we use&nbsp;the following&nbsp;Integrated Development Environments (IDE)&nbsp;to&nbsp;code&nbsp;for&nbsp;it: Eclipse,&nbsp;IntelliJ&nbsp;and others.&nbsp;<\/p>\n\n\n\n<p>These IDEs are well integrated with the&nbsp;Revision Control Systems&nbsp;(RCS)&nbsp;we use&nbsp;GitLab&nbsp;and allow&nbsp;for&nbsp;a lot of&nbsp;additional functions like static code analysis or&nbsp;the&nbsp;execution of automated tests directly&nbsp;on&nbsp;newly written code.&nbsp;&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Source code branching and committing<\/strong>&nbsp;<\/h4>\n\n\n\n<p>One of our most important best practices&nbsp;is to only make&nbsp;changes&nbsp;to the&nbsp;code base&nbsp;when there\u2019s a compelling&nbsp;reason&nbsp;to do so. These changes are always done via&nbsp;a&nbsp;Project Backlog Increment (PBI).&nbsp;When&nbsp;a&nbsp;User Story&nbsp;or Defect&nbsp;transitions&nbsp;to \u201cIn&nbsp;Progress\u201d&nbsp;a&nbsp;GitLab branch is automatically created as part of the workflow.&nbsp;&nbsp;<br>&nbsp;<br><strong>General PBI lifecycle:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"1024\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3-826x1024.png\" alt=\"Diagram\n\nDescription automatically generated\" class=\"wp-image-3454\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3-826x1024.png 826w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3-484x600.png 484w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3-768x952.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3-900x1116.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-3.png 1172w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/figure>\n\n\n\n<p>Polarion allows&nbsp;for the&nbsp;automation of&nbsp;these&nbsp;procedures by defining Workflow functions for&nbsp;the&nbsp;corresponding Work Item types:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"579\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-1024x579.png\" alt=\"Graphical user interface, application\n\nDescription automatically generated\" class=\"wp-image-3477\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-1024x579.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-600x339.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-768x434.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-900x509.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7.png 1218w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>To improve collaboration, we also automatically create Slack notifications so that all Team members are informed of an item&#8217;s progress&nbsp;and&nbsp;can discuss issues and obstacles more organically in real-time.&nbsp;<\/p>\n\n\n\n<p>Slack interface:\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"409\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1024x409.png\" alt=\"\" class=\"wp-image-3491\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1024x409.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-600x239.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-768x306.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-900x359.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image.png 1381w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When a&nbsp;developer is ready&nbsp;to commit&nbsp;changes&nbsp;to a GitLab&nbsp;branch, they include the PBI&#8217;s Work Item ID&nbsp;in&nbsp;the Git&nbsp;commit message. (All changes are linked to the item that prompted them.)&nbsp;<\/p>\n\n\n\n<p>The system of IDs works a little differently in Polarion&nbsp;compared to other&nbsp;similar&nbsp;tools. The&nbsp;prefix identifies&nbsp;the&nbsp;project where the Work Item is stored.&nbsp;(\u201cDPP\u201d is our production Project). The second part then assigns a numeric identifier&nbsp;that\u2019s&nbsp;unique&nbsp;to&nbsp;the project.&nbsp;<\/p>\n\n\n\n<p><strong>An example of commits tied&nbsp;to a specific Work Item:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"916\" height=\"335\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1.png\" alt=\"Graphical user interface, text, application, email\n\nDescription automatically generated\" class=\"wp-image-3451\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1.png 916w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1-600x219.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1-768x281.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-1-900x329.png 900w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/figure>\n\n\n\n<p>Clicking on the Linked Revision will open&nbsp;the&nbsp;GitLab UI&nbsp;and display the changes made.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"761\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11-1024x761.png\" alt=\"\" class=\"wp-image-3463\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11-1024x761.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11-600x446.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11-768x571.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11-900x669.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-11.png 1390w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>This,&nbsp;together with the&nbsp;review of&nbsp;changes in GitLab,&nbsp;facilitates&nbsp;the&nbsp;Code Review&nbsp;process:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"904\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-1024x904.png\" alt=\"Graphical user interface, text, application\n\nDescription automatically generated\" class=\"wp-image-3460\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-1024x904.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-600x529.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-768x678.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-900x794.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5.png 1378w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Commenting on&nbsp;a&nbsp;change starts a discussion.&nbsp;All discussions must be resolved before a PBI\u2019s status can be changed to&nbsp;\u201cReady&nbsp;for&nbsp;Merge\u201d.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>The template&nbsp;for the&nbsp;\u201cReady for Merge Checklist\u201d:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"433\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-1024x433.png\" alt=\"Graphical user interface, text\n\nDescription automatically generated\" class=\"wp-image-3456\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-1024x433.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-600x253.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-768x324.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7-900x380.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-7.png 1380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>For example, the populated table may look as follows:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"322\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9-1024x322.png\" alt=\"Graphical user interface, text, application, email\n\nDescription automatically generated\" class=\"wp-image-3458\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9-1024x322.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9-600x189.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9-768x241.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9-900x283.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-9.png 1377w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Whenever&nbsp;an&nbsp;item is marked as \u201cReady to Merge\u201d,&nbsp;the&nbsp;responsible engineer can trigger&nbsp;a&nbsp;Merge pipeline. The&nbsp;steps&nbsp;are as follows:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Integrate&nbsp;the change to the master branch.&nbsp;<\/li><li>Compile sources and prepare binaries.&nbsp;<\/li><li>Run unit-tests, API,&nbsp;FOSS&nbsp;and other checks.&nbsp;<\/li><li>Deploy the binaries to&nbsp;a&nbsp;test environment.&nbsp;<\/li><li>Run UI-test suits on the environment.&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Run load,&nbsp;stress&nbsp;and performance&nbsp;Tests on a reference environment.&nbsp;<\/li><li>Collect&nbsp;the&nbsp;results of all&nbsp;Test&nbsp;Runs and report back to Polarion.&nbsp;<\/li><li>Prepare a shippable package.&nbsp;<\/li><\/ul>\n\n\n\n<p>You&nbsp;can see the pipeline execution status in GitLab:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"373\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-1024x373.png\" alt=\"Graphical user interface, text, application, email\n\nDescription automatically generated\" class=\"wp-image-3450\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-1024x373.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-600x218.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-768x279.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4-900x327.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-4.png 1237w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The merge request is expected to be successful.&nbsp;Before&nbsp;it gets added to the Master,&nbsp;the team must&nbsp;run the same&nbsp;compilation, unit,&nbsp;and UI tests&nbsp;on both&nbsp;their local branches&nbsp;and Team servers.&nbsp;&nbsp;<\/p>\n\n\n\n<p>One aspect that requires special attention is&nbsp;performance tests. They are&nbsp;executed on a reference environment&nbsp;that&nbsp;often&nbsp;differs from the&nbsp;development&nbsp;environment.&nbsp;As a result,&nbsp;performance tests&nbsp;that&nbsp;succeed on&nbsp;the&nbsp;local branch&nbsp;may&nbsp;fail on&nbsp;the&nbsp;Master.&nbsp;<\/p>\n\n\n\n<p><strong>What we do when this happens:<\/strong>&nbsp;<br>Before&nbsp;a&nbsp;PBI&nbsp;can&nbsp;be closed,&nbsp;we&nbsp;confirm that there&nbsp;are&nbsp;no regressions and make sure that&nbsp;the&nbsp;pipeline&#8217;s&nbsp;performance&nbsp;tests&nbsp;pass.&nbsp;If&nbsp;any suspects&nbsp;are&nbsp;identified,&nbsp;we lock the Master&nbsp;branch&nbsp;and&nbsp;no new commits are allowed until&nbsp;the&nbsp;situation is clarified.&nbsp;(Identify if it\u2019s&nbsp;a&nbsp;temporary&nbsp;outage,&nbsp;a&nbsp;side effect of something&nbsp;on the test&nbsp;server,&nbsp;or&nbsp;a&nbsp;genuine&nbsp;regression).&nbsp;The team&nbsp;that created the suspicious merge request makes it their top priority to address the problem, even if it means rolling back the commit. Only then is the Master branch unlocked and further commits allowed.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Pipeline&nbsp;types&nbsp;that&nbsp;facilitate the&nbsp;different product-life-cycle phases:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Master&nbsp;<\/strong>=&nbsp;Runs&nbsp;on&nbsp;every push to&nbsp;the&nbsp;Master.&nbsp;Runs&nbsp;all tests, all distributions, all installers and all dockers.&nbsp;<\/li><li><strong>Release&nbsp;<\/strong>=&nbsp;Runs&nbsp;when any tag is created.&nbsp;Runs&nbsp;all tests, all distributions, all installers,&nbsp;all dockers and packages&nbsp;the&nbsp;release.&nbsp;<\/li><li><strong>Post-release<\/strong>&nbsp;=&nbsp;Runs&nbsp;on&nbsp;every push to&nbsp;the&nbsp;Release branch. Runs&nbsp;unit and platform tests, all distributions, all installers and all dockers.&nbsp;<\/li><li><strong>PI Merge Request<\/strong>&nbsp;=&nbsp;Runs&nbsp;on&nbsp;every push to&nbsp;a&nbsp;PI branch with&nbsp;an&nbsp;open merge request, runs consolidated stage which is the same as consolidated custom pipeline, but each job is executed only if there are relevant changes&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Custom&nbsp;<\/strong>\u2013&nbsp;Teams can create&nbsp;pipelines&nbsp;on-demand with custom parameters.&nbsp;<\/li><\/ul>\n\n\n\n<p>After&nbsp;a&nbsp;successful merge to&nbsp;the&nbsp;Master,&nbsp;but&nbsp;before the PBI is set to \u201c<strong>Done<\/strong>\u201d,&nbsp;the following checklist must be filled out in the User Story:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"313\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2-1024x313.png\" alt=\"Graphical user interface, text, application\n\nDescription automatically generated\" class=\"wp-image-3452\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2-1024x313.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2-600x184.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2-768x235.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2-900x275.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-2.png 1376w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Here\u2019s an example of a completed checklist:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"290\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-1024x290.png\" alt=\"Graphical user interface, text, application, email\n\nDescription automatically generated\" class=\"wp-image-3453\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-1024x290.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-600x170.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-768x218.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5-900x255.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-5.png 1380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. Continuous deployment&nbsp;(CD)&nbsp;<\/strong><\/h4>\n\n\n\n<p>Whenever a commit happens on a branch,&nbsp;the&nbsp;CD&nbsp;is configured&nbsp;to grab the results and deploy&nbsp;them&nbsp;to a server for debugging, testing, reference implementation,&nbsp;or&nbsp;what\u2019s most common&nbsp;in our case,&nbsp;to&nbsp;deploy&nbsp;the&nbsp;Master branch&nbsp;results to&nbsp;an&nbsp;internal&nbsp;production&nbsp;environment. This helps us&nbsp;complete&nbsp;the&nbsp;first level of testing in&nbsp;a&nbsp;practical environment before customers&nbsp;see&nbsp;it. We\u2019ve been doing this&nbsp;\u201cdogfooding\u201d<sup>5<\/sup>&nbsp;at Polarion&nbsp;from the start.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"784\" height=\"453\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8.png\" alt=\"Diagram\n\nDescription automatically generated\" class=\"wp-image-3486\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8.png 784w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-600x347.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-8-768x444.png 768w\" sizes=\"auto, (max-width: 784px) 100vw, 784px\" \/><\/figure>\n\n\n\n<p>While&nbsp;a continuous deployment of the Master branch is always desired (its pipeline&nbsp;ends with 100% positive results), local branches may depend on the status of&nbsp;the&nbsp;development&nbsp;cycle. For example,&nbsp;a&nbsp;team may wish to have a solution running and testable after each commit,&nbsp;so they&nbsp;configure one of the local pipelines to compile and immediately deploy to&nbsp;a&nbsp;team server. They may&nbsp;instead opt for&nbsp;a daily deployment model where the sever pulls&nbsp;the&nbsp;last available results overnight&nbsp;and deploys&nbsp;it for use&nbsp;the&nbsp;following&nbsp;day.&nbsp;<\/p>\n\n\n\n<p>They can always&nbsp;start&nbsp;a&nbsp;pipeline manually&nbsp;or&nbsp;request&nbsp;a&nbsp;new deployment&nbsp;via a command-line script.&nbsp;(Even to&nbsp;a&nbsp;different server or&nbsp;a&nbsp;container.)&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>3. Traceability&nbsp;and impact analyze&nbsp;<\/strong><\/h4>\n\n\n\n<p>Polarion offers an easy way to check&nbsp;the&nbsp;impact and traceability information&nbsp;on&nbsp;how, for example,&nbsp;a&nbsp;Capability is really implemented and\/or tested:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"803\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6-1024x803.png\" alt=\"Graphical user interface\n\nDescription automatically generated with medium confidence\" class=\"wp-image-3462\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6-1024x803.png 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6-600x471.png 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6-768x602.png 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6-900x706.png 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/image-6.png 1252w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Still want to hear more?<\/strong><\/h3>\n\n\n\n<p>That wraps it up for this blog series about <a href=\"https:\/\/blogs.sw.siemens.com\/polarion\/polarions-rd-goes-devops\/\">Polarion R&amp;D goes DevOps.<\/a> If you have questions on anything else, we\u2019d love to hear from you. Simply contact us and we\u2019ll be in touch. Do you need help and advice on how to apply something similar in your own environment \u2013 approach Siemens Services, they will be happy to help.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/nick-entin.jpg\" alt=\"Nick Entin Siemens Polarion\" class=\"wp-image-3481\" width=\"116\" height=\"116\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/nick-entin.jpg 510w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/08\/nick-entin-150x150.jpg 150w\" sizes=\"auto, (max-width: 116px) 100vw, 116px\" \/><\/figure>\n\n\n\n<p><em>Nick Entin<br>Software Engineering Director, Polarion ALM, Siemens PLM<\/em><\/p>\n\n\n\n<p>Do you have ideas or are willing to share your experience \u2013 go to&nbsp;Polarion\u2019s&nbsp;Community site:&nbsp;<a href=\"http:\/\/www.polarion.com\/community\" target=\"_blank\" rel=\"noreferrer noopener\">www.polarion.com\/community<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Part 2: Polarion&#8217;s R&amp;D Goes DevOps by Nick Entin &#8211; Software Engineering Director, Polarion ALM, Siemens PLM In part two&#8230;<\/p>\n","protected":false},"author":33020,"featured_media":3357,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[20,158],"industry":[],"product":[],"coauthors":[476],"class_list":["post-3439","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-application-lifecycle-management-alm","tag-devops"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2021\/07\/polarion-goes-devops.png","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/3439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/users\/33020"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/comments?post=3439"}],"version-history":[{"count":4,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/3439\/revisions"}],"predecessor-version":[{"id":3492,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/3439\/revisions\/3492"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media\/3357"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media?parent=3439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/categories?post=3439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/tags?post=3439"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/industry?post=3439"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/product?post=3439"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/coauthors?post=3439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}