Samstag, 21. März 2020

Automatisierte Releasenotes - Transparenz in die Tiefe

Wer kennt sie nicht die ewigen Fragen: "Was sind die Highlights im aktuellen Release?" oder "Welche Bugfixes/Improvements konnten in das Release einfließen?"


Agiles arbeiten und der damit vermeintlichen Transparenz gegenüber Product-Owner, Stakeholder oder allgemein dem Management trotzt eine Phase des Requirements-Engineering, ja gar einer kompletten Iteration.

Es werden Anforderungen der Product-Owner und Stakeholder ermittelt, aufgenommen und aufbereitet (Requirements-Engineering). Es werden Priorisierungen des Backlogs, Sprintbacklogs und des Sprintlogs selbst durchgeführt. Am Ende steht die Frage in fast jedem Review-Meeting: "Welche dieser hier gezeigten Tickets werden in das kommende Release einfließen?". Dem Releasemanager drehen sich förmlich im Ansatz der zu erwartenden Frage die Fußnägel auf. Allerdings formuliert sich die Antwort auf die zu erwartende Frage schon, obwohl die eigentliche Frage noch überhaupt nicht gestellt worden ist: "Wozu führen und managen wir Komponenten und Versionen in unserer Planungs- und Releasephase?" 

Da sich diese Frage immer wieder stellt, haben wir uns als Software-Entwickler der yourIT dieser ewigen und immer wiederkehrenden Aufgabe gestellt. Als Ergebnis haben wir ein Maven-Plugin geschrieben, welches beim Bauen des Artefaktes die Releasenotes aus unserem Jira-Board abgreift, als HTML-Report aufbereitet und ins gebaute Artefakt mit einbaut. 

Im einfachsten Fall kann dieser Report im Review-Meeting herangezogen werden, da alle Tickets und Anforderungen, die gelöst wurden, darin aufgelistet sind. Im komplexeren Anwendungsfall werden die generierten Releasenotes automatisiert im Buildprozess eingepackt und sind für den Kunden jederzeit einsehbar.

Wie kompliziert ist das und was benötigen da jetzt genau?

Alles, was in der Maven-Konfiguration benötigt wird, ist ein von der yourIT geschriebenes Maven-Plugin:


<build>
  ...
    <plugin>
      <groupId>de.yit.yourit.maven.jira-releasenotes</groupId>
      <artifactId>jirareleasnotes-maven-plugin</artifactId>
      <version>1.0.0</version>
      <executions>
  <execution>
    <goals>
      <goal>jira-releasenotes</goal>
    </goals>
    <phase>compile</phase>
 </execution>
      </executions>
      <configuration>
  <jpql>component = "yourIT Webseite" and ..."</jpql>
  <jiraURL>http://0.0.0.0:8080</jiraURL>
  <username>jenkins</username>
  <password>*****</password>
  <target>${project.build.outputDirectory}/static/notes.html</target>
       </configuration>
    </plugin>
  ...
</build>

Im Buildprozess sieht es sehr unspektakulät aus:

[INFO] --- jirareleasnotes-maven-plugin:1.0.0:jira-releasenotes 
(default) @ website-app ---

Aber das Ergebnis ist dennoch Aussagekräftig:

ReleaseNotes - Report


Verantwortlich für diesen Beitrag: yourIT GmbH, Balingen, Zollernalbkreis