<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Levente</title>
    <description>The latest articles on DEV Community by Levente (@levente).</description>
    <link>https://dev.to/levente</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F81262%2Fbcf799cd-9250-4508-9c52-e2f7522d8b98.png</url>
      <title>DEV Community: Levente</title>
      <link>https://dev.to/levente</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/levente"/>
    <language>en</language>
    <item>
      <title>How to trigger TeamCity on Git push?</title>
      <dc:creator>Levente</dc:creator>
      <pubDate>Fri, 23 Jul 2021 08:10:01 +0000</pubDate>
      <link>https://dev.to/levente/how-to-trigger-teamcity-on-git-push-2bdn</link>
      <guid>https://dev.to/levente/how-to-trigger-teamcity-on-git-push-2bdn</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Ycg8DZv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xwfrggjiz2zw7hwruoi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Ycg8DZv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xwfrggjiz2zw7hwruoi6.png" alt="Trigger Teamcity automatically from commit messages"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Previously in this series of Jira DevOps automation tutorials, we discussed &lt;a href="https://midori-global.com/blog/2021/05/18/how-to-trigger-a-jenkins-build-on-commit"&gt;how to trigger a Jenkins build&lt;/a&gt; and &lt;a href="https://midori-global.com/blog/2021/05/03/how-to-trigger-a-bamboo-build-on-commit"&gt;how to trigger a Bamboo build&lt;/a&gt; on successful Git commit.&lt;/p&gt;

&lt;p&gt;Now we are looking at a Jira automation for TeamCity. We will walk through how you can automatically trigger a TeamCity build on Git push by using a specific command in your Git commit message.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do you prefer a tutorial video? Watch this quick YouTube video on how to create an automation rule for triggering a TeamCity build:&lt;/em&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=SeEoYukc8Fc"&gt;https://www.youtube.com/watch?v=SeEoYukc8Fc&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Extending Automation for Jira with DevOps triggers
&lt;/h4&gt;

&lt;p&gt;The below DevOps automation solution is based on Automation for Jira (Data Center and Server) and &lt;a href="https://marketplace.atlassian.com/apps/1224574/better-devops-automation-for-jira?hosting=server&amp;amp;tab=overview&amp;amp;utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing"&gt;Better DevOps Automation for Jira&lt;/a&gt; to automate a TeamCity build.&lt;/p&gt;

&lt;p&gt;Better DevOps Automation for Jira extends Automation for Jira with DevOps triggers that you can use in any no-code, low-code automation rule in Jira.&lt;/p&gt;

&lt;p&gt;You can freely combine the &lt;a href="https://midori-global.com/products/better-devops-automation-for-jira/server/documentation/automation-triggers?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing"&gt;DevOps automation triggers&lt;/a&gt; by Better DevOps Automation with the built-in Automation for Jira actions, and implement a wide range of custom DevOps workflows.&lt;br&gt;
If you are new to Better DevOps Automation, don't skip the introductory blog on this &lt;a href="https://midori-global.com/blog/2021/02/28/devops-automation-for-jira-data-center-and-server?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing"&gt;DevOps automation solution for Jira Data Center (and Server)&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Trigger a TeamCity build on Git push
&lt;/h4&gt;

&lt;p&gt;This Jira automation rule for TeamCity will trigger on Git push if your developers used the @build command in the Git commit message.&lt;br&gt;
They can control if a TeamCity build should trigger after every successful push of code changes.&lt;/p&gt;

&lt;p&gt;Better DevOps Automation introduces so-called Genius Commits, which are commits containing custom commands in the commit message.&lt;br&gt;
This gives them a seamless way to change the @build command to something else, and control other CI/CD actions without switching context.&lt;/p&gt;

&lt;p&gt;Steps to trigger TeamCity on Git push:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a new Automation for Jira rule and choose the &lt;a href="https://midori-global.com/products/better-devops-automation-for-jira/server/documentation/automation-triggers?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing#genius-commit-created-trigger"&gt;Genius Commit created trigger&lt;/a&gt; from the DevOps category!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--euL6eXT9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj5gs4ej7ehlqgcc2u1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--euL6eXT9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bj5gs4ej7ehlqgcc2u1n.png" alt="Choosing the Automation for Jira DevOps trigger for triggering TeamCity"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the command &lt;em&gt;"Build (@build)"&lt;/em&gt; from the list of commands!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xcKkZh2r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/384suvhedrk3b2fancvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xcKkZh2r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/384suvhedrk3b2fancvc.png" alt="Selecting the build Genius Command for triggering TeamCity"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the &lt;a href="https://confluence.atlassian.com/automation/actions-993924834.html?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing#Actions-sendwebrequestSendoutgoingwebrequest"&gt;Send web request&lt;/a&gt; automation action!&lt;/p&gt;

&lt;p&gt;Supply your Webhook URL for TeamCity:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;YOUR_TEAMCITY_SERVER_BASE_URL&amp;gt;/app/rest/latest/buildQueue&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Replace the placeholders with your actual TeamCity base URL. If you are using a modern version of TeamCity which supports CSRF protection, check &lt;a href="https://midori-global.com/products/better-devops-automation-for-jira/server/documentation/continuous-integration/teamcity?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing#with-command-configuration"&gt;the documentation for further instructions&lt;/a&gt;. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a header with the name &lt;em&gt;"Authorization"&lt;/em&gt; and with the value of &lt;em&gt;"Bearer "&lt;/em&gt;. Replace the placeholder with the actual TeamCity Access Token. (Watch the tutorial video above if unsure how to create an access token!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a header with the name &lt;em&gt;"Content-Type"&lt;/em&gt; and with the value &lt;em&gt;"application/xml"&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave the HTTP method selector on &lt;em&gt;POST&lt;/em&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Webhook body, choose &lt;em&gt;Custom data&lt;/em&gt; and enter the following: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;build&amp;gt; &amp;lt;buildType id="BUILD_CONFIGURATION_ID"/&amp;gt; &amp;lt;/build&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Replace the actual value of your TeamCity build configuration ID, located at your build settings in TeamCity. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4h1TV3y2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31m021sxb4384zcxky5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4h1TV3y2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31m021sxb4384zcxky5f.png" alt="Setting up the Automation for Jira action to trigger TeamCity on Git push"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save and turn on your automation rule!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can control more than one build configuration in TeamCity with commands!&lt;br&gt;
Read further on &lt;a href="https://midori-global.com/products/better-devops-automation-for-jira/server/documentation/continuous-integration/teamcity?utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing#with-command-and-build-config-id"&gt;how to define the TeamCity build configuration&lt;/a&gt; in the commit message.&lt;/p&gt;

&lt;p&gt;You can control more than one build configuration in TeamCity with commands! Read further on how to define the TeamCity build configuration in the commit message.&lt;/p&gt;

&lt;p&gt;Give this TeamCity Jira DevOps integration a try for free now!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.atlassian.com/apps/1224574/better-devops-automation-for-jira?hosting=server&amp;amp;tab=overview&amp;amp;utm_source=devto&amp;amp;utm_medium=jdoa-series-teamcity&amp;amp;utm_campaign=content-marketing&amp;amp;utm_content=cta"&gt;Trigger TeamCity builds on Git push!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>teamcity</category>
      <category>devops</category>
      <category>automation</category>
      <category>jira</category>
    </item>
    <item>
      <title>Bitbucket Smart Commits vs. Genius Commits - What's the difference?</title>
      <dc:creator>Levente</dc:creator>
      <pubDate>Fri, 16 Apr 2021 11:16:03 +0000</pubDate>
      <link>https://dev.to/levente/bitbucket-smart-commits-vs-genius-commits-what-s-the-difference-2f7j</link>
      <guid>https://dev.to/levente/bitbucket-smart-commits-vs-genius-commits-what-s-the-difference-2f7j</guid>
      <description>&lt;p&gt;If you already heard about Smart Commits in Bitbucket, know that you just stumbled upon something even better (and smarter!): Genius Commits by &lt;a href="https://marketplace.atlassian.com/apps/1224574/better-devops-automation-for-jira?hosting=server&amp;amp;tab=overview&amp;amp;utm_source=devto&amp;amp;utm_medium=smart-commit-vs-genius-commit-article&amp;amp;utm_campaign=content-marketing"&gt;Better DevOps Automation for Jira Data Center (+ Server).&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  What are Bitbucket Smart Commits?
&lt;/h4&gt;

&lt;p&gt;A Bitbucket Smart Commit allows developers to use three pre-defined commands in their Git commit messages which will trigger certain issue operations. You can transition issues, log time on issues, and comment on issues.&lt;/p&gt;

&lt;p&gt;The smart commit commands that you can use are, therefore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"#transition"&lt;/li&gt;
&lt;li&gt;"#comment"&lt;/li&gt;
&lt;li&gt;"#time"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, with Bitbucket Smart Commit, you could commit your code changes with a commit message like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"SIA-878 #time 6h 30m #comment Bugfix passed for review #Under Review"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;which would also log time against the Jira issue SIA-878, post a comment on it, and also transition into a different status. It's a pretty neat thing to do with a single commit, without context switching and other disturbances.&lt;/p&gt;

&lt;p&gt;If you feel that more and customizable commands would be more powerful, read on because that's exactly what's coming and even more.&lt;/p&gt;

&lt;h4&gt;
  
  
  What are Genius Commits?
&lt;/h4&gt;

&lt;p&gt;The Better DevOps Automaton for Jira app introduces &lt;a href="https://www.midori-global.com/products/better-devops-automation-for-jira/server/documentation/genius-commits?utm_source=devto&amp;amp;utm_medium=smart-commit-vs-genius-commit-article&amp;amp;utm_campaign=content-marketing"&gt;Genius Commits&lt;/a&gt;. Genius Commits carry special commands in the commit message that can trigger any automation action, like running a CI/CD build, tests, Slack notification, Jira issue operations, etc.&lt;/p&gt;

&lt;p&gt;Genius Commits are unlocking next-level productivity for developers by providing more commands to use out of the box and the option to add new commands.&lt;/p&gt;

&lt;p&gt;If your team hasn't adopted Git or Bitbucket, you can still use Better DevOps Automation for Jira for automating your DevOps actions. You can use other Git clients or Version Control Systems like Mercurial, Perforce, or Azure DevOps.&lt;/p&gt;

&lt;p&gt;Instead of having just three hard-wired commands to use you can choose from a list of 11 default commands when you install Better DevOps Automation for Jira:&lt;/p&gt;

&lt;p&gt;@analyze: Starts a code analysis (code scan).&lt;br&gt;
@assign: Assigns issue to a user.&lt;br&gt;
@Build: Triggers a build in the CI/CD system.&lt;br&gt;
@call: Sends an HTTP request to a (REST) API.&lt;br&gt;
@Comment: Comments on an issue.&lt;br&gt;
@Run: Runs a script/program.&lt;br&gt;
@issuetype: Sets the issue type.&lt;br&gt;
@priority: Sets the issue priority.&lt;br&gt;
@status: Sets the issue status (and resolution optionally).&lt;br&gt;
@TimE: Logs work to an issue.&lt;br&gt;
@transition: Transitions an issue (and sets the resolution optionally)&lt;/p&gt;

&lt;p&gt;To add new commands, you can use the intuitive configuration panel and create your own custom command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JC3Cs4x3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uf4zryksl94dzvsnltkd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JC3Cs4x3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uf4zryksl94dzvsnltkd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How do Genius Commits work?
&lt;/h4&gt;

&lt;p&gt;The genius commands used in Genius Commits kick off automation actions that you set up in Automation for Jira. The logic behind the actions is implemented as no-code or low-code automation rules. It means that putting together a DevOps automation logic is just as simple as any other Automation for Jira rule.&lt;/p&gt;

&lt;p&gt;Automation actions can do anything an automation rule can do, such as working with issues, logging work, sending notifications, starting CI builds, deploying code, running scripts, and many more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.atlassian.com/apps/1224574/better-devops-automation-for-jira?hosting=server&amp;amp;tab=overview&amp;amp;utm_source=devto&amp;amp;utm_medium=smart-commit-vs-genius-commit-article&amp;amp;utm_campaign=content-marketing"&gt;Check out Better DevOps Automation and the Genius Commits!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>automation</category>
      <category>bitbucket</category>
      <category>git</category>
    </item>
    <item>
      <title>What is software's role in safe manufacturing processes?</title>
      <dc:creator>Levente</dc:creator>
      <pubDate>Fri, 29 Jun 2018 11:35:04 +0000</pubDate>
      <link>https://dev.to/levente/what-is-softwares-role-in-safe-manufacturing-processes-5bji</link>
      <guid>https://dev.to/levente/what-is-softwares-role-in-safe-manufacturing-processes-5bji</guid>
      <description>&lt;p&gt;&lt;a href="https://www.eaglepicher.com/" rel="noopener noreferrer"&gt;EaglePicher Technologies&lt;/a&gt; is a leading manufacturer of battery systems for diverse industries like defense, aviation, space or medical.&lt;br&gt;
As they operate in highly regulated industries, keeping a clear and traceable software code change history is just as important as complying with hardware specifications and safety requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kalen Brown&lt;/strong&gt;, Associate Electrical and Computer Engineer, shared how they are using &lt;a href="https://marketplace.atlassian.com/plugins/com.midori.jira.plugin.jira-commit-policy-plugin/server/overview?utm_source=dev-community-blog&amp;amp;utm_medium=eaglepicher-jcp-success-story&amp;amp;utm_campaign=content-marketing" rel="noopener noreferrer"&gt;Commit Policy Plugin&lt;/a&gt; in managing source code changes in their Subversion repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tell us a bit about your role at EaglePicher!
&lt;/h3&gt;

&lt;p&gt;I started here out of college in the beginning of 2015 and essentially dove into the project I am in now.&lt;/p&gt;

&lt;p&gt;We are now working on a Lithium-Ion Iron Phosphate (LFP) commercial aircraft battery that uses a safer and more robust chemistry.&lt;br&gt;
The cells in this battery may be much safer than ordinary Lithium-Ion batteries, due to the Iron Phosphate mixture, but we still want to be as safe as possible so we have hardware and software working together to keep the battery happy.&lt;/p&gt;

&lt;h3&gt;
  
  
  What triggered your need for a strictly controlled repository?
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://www.ecfr.gov/cgi-bin/text-idx?SID=c0d41fd915ac99598eeed4a302a6c183&amp;amp;mc=true&amp;amp;node=pt14.1.25&amp;amp;rgn=div5#se14.1.25_11309" rel="noopener noreferrer"&gt;Code of Federal Regulations&lt;/a&gt; (CFRs), the collection of rules created by federal agencies, says the equipment, systems, and installations whose functioning is required by the airplane must be designed to ensure that they perform their intended functions under any foreseeable operating condition.&lt;br&gt;
The Federal Aviation Administration (FAA), the U.S. national authority that regulates all aspects of civil aviation, gives one example of an acceptable means of compliance to demonstrate that requirement as &lt;a href="https://en.wikipedia.org/wiki/DO-178C#Traceability" rel="noopener noreferrer"&gt;RTCA DO-178C Software Considerations in Airborne Systems and Equipment Certification&lt;/a&gt;, which is the framework authorities (such as FAA, EASA and Transport Canada) use to regulate commercial, software-based aerospace systems.&lt;br&gt;
It clearly specifies requirements to define the intended functions around the software aspects of airborne systems and equipment, and the tests to prove them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgvfdd0qkf3xo7sk2sruv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgvfdd0qkf3xo7sk2sruv.jpg" alt="Boeing 787 Dreamliner aircraft uses Li-Ion batteries"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Boeing had serious problems with batteries bursting up in flames on 787 Dreamliners&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s also important to note that these guidelines are not there just to make us create more documentation.&lt;br&gt;
For example, some of the rigor that we need to go through is because of the &lt;a href="https://en.wikipedia.org/wiki/Boeing_787_Dreamliner_battery_problems" rel="noopener noreferrer"&gt;battery fires on Boeing 787 Dreamliners&lt;/a&gt; in 2013.&lt;/p&gt;

&lt;p&gt;So we need to be able to &lt;em&gt;prove&lt;/em&gt; how exactly each requirement is fulfilled and by what part of the source code.&lt;/p&gt;

&lt;p&gt;This calls for tools that make it easy to manage our work items towards each requirement and control what is committed to our Subversion repositories in a proactive way.&lt;br&gt;
These requirements drove us to use Jira, Subversion, and subsequently Commit Policy Plugin for change control assistance.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Commit Policy Plugin help developers stay compliant?
&lt;/h3&gt;

&lt;p&gt;Commit Policy Plugin helps ensure process compliance where essentially the reason why you are changing something in Subversion must be documented in Jira.&lt;/p&gt;

&lt;p&gt;It does this by verifying all commits sent to the Subversion repository against &lt;a href="http://www.midori-global.com/products/jira-commit-policy-plugin/documentation?utm_source=dev-community-blog&amp;amp;utm_medium=eaglepicher-jcp-success-story&amp;amp;utm_campaign=content-marketing#anatomy-of-commit-policies" rel="noopener noreferrer"&gt;pre-defined rules&lt;/a&gt;, and reminds the developer if something is not right.&lt;br&gt;
It’s impossible to send in a non-compliant commit, so at code review we can just focus on what the software does and leave it to Commit Policy Plugin to check if the right conditions and references are in place.&lt;/p&gt;

&lt;p&gt;This way, easy traceability is maintained where someone can look at the Subversion revision history containing the commit messages and find the documentation (Jira issue key the policy made us type in).&lt;/p&gt;

&lt;p&gt;We also introduced the (more passive) Subversion ALM app, so looking at a Jira issue a reviewer can find where the change occurred in the code, as the Subversion commit message appears in an Subversion tab in the Jira issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits of using commit policies in your Subversion repositories?
&lt;/h2&gt;

&lt;p&gt;While we could write a regex anytime to detect if something that resembles a Jira ticket pattern is entered into the commit message, the commit policy’s &lt;a href="http://www.midori-global.com/products/jira-commit-policy-plugin/documentation?utm_source=dev-community-blog&amp;amp;utm_medium=eaglepicher-jcp-success-story&amp;amp;utm_campaign=content-marketing#issue-in-jql-result-condition" rel="noopener noreferrer"&gt;JQL condition&lt;/a&gt; ensures that the ticket mentioned actually exists.&lt;/p&gt;

&lt;p&gt;To give an example: you can put DEMO-72 into a commit message and it looks like a Jira issue key.&lt;br&gt;
However, the commit policy can tell that, while it matches the required pattern, DEMO-72 does not exist because we are only up to DEMO-5.&lt;br&gt;
Or, it exists, but it’s assigned to someone else in a different Jira project.&lt;br&gt;
It saves you from creating incorrect or broken links.&lt;/p&gt;

&lt;p&gt;It also saves you sometimes from simply typing the issue key in wrong.&lt;br&gt;
Say, DEMO-893 was intended but I typed DEMO-839, the commit policy rejects my commit, saying that the issue mentioned is not in a status that I should be committing on.&lt;br&gt;
So, in addition to keeping our developers on track with compliant code changes, it kind of acts as a spell checker, too.&lt;/p&gt;

&lt;p&gt;As with most standards, the goal of DO-178C is to formalize a process where what is being done is easily reviewable and follows a common sense due diligence.&lt;br&gt;
However, this results in 99% of the work generating documentation (well beyond what is discussed here) and 1% editing source code, so we apply the same rules to documents as we do to source code.&lt;br&gt;
Thankfully the tools like Subversion help automate some of the documentation required to keep track of things, and Commit Policy Plugin reminds us to document what we are doing or that we need to have other people look at it before we dive into changing things.&lt;/p&gt;

&lt;h3&gt;
  
  
  What would be your message to someone hesitating introducing commit policies to their repositories?
&lt;/h3&gt;

&lt;p&gt;When there is a process to be followed, then this is &lt;em&gt;the&lt;/em&gt; tool to get.&lt;/p&gt;

&lt;p&gt;It saves having a dedicated person babysit every transfer or document why the process was not followed.&lt;br&gt;
If people follow the process at hand, then they should &lt;em&gt;never&lt;/em&gt; even encounter the commit policy and it will be seamless.&lt;/p&gt;

&lt;p&gt;You can scope it down to specific folders like the "tags" folder, or apply a rule to the whole repository that commit messages just can't be blank and not even use any Jira features like JQL.&lt;/p&gt;

&lt;p&gt;The most difficult aspect is conveying to others what process you want them to follow, so with the &lt;a href="https://marketplace.atlassian.com/plugins/com.midori.jira.plugin.jira-commit-policy-plugin/server/overview?utm_source=dev-community-blog&amp;amp;utm_medium=eaglepicher-jcp-success-story&amp;amp;utm_campaign=content-marketing" rel="noopener noreferrer"&gt;commit policy in place&lt;/a&gt; it can be a trial by fire where your hard work does not get burned.&lt;/p&gt;

</description>
      <category>subversion</category>
      <category>git</category>
      <category>interview</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
