Obecnie standardem stało się już używanie jakiegoś systemu kontroli wersji oraz środowiska CI w projektach informatycznych. Choć narzędzia te są coraz lepsze, to cały czas jeszcze jest sporo miejsca na poprawę. W obecnym projekcie używam następującej kombinacji narzędzi: JIRA + SVN + Jenkins.
W ramach projektu mamy podział na następujące kategorie zadań:
[list]
- story zdefiniowane przez product ownera / zespół,
- zgłoszony błąd,
- inne.
[/list]
Na pierwsze dwa zadania są oczywiście stworzone odpowiednie wpisy w odpowiednich narzędziach. W tym projekcie zarówno do zarządzania błędami, jak również wymaganiami używamy JIRY. Nie zmienia to jednak faktu, że chcemy mieć możliwość rozróżniania tych elementów w SVN. Aby to zapewnić postanowiliśmy wprowadzić następujące oznaczenia w SVN przy commit-cie:
[list]
- [STORY-XXX],
- [BUG-XXX],
- [OTHER].
[/list]
XXX- numer z JIRY.
Teraz wystarczy tylko zapewniać, aby programiści nie zapominali o tym przy wrzucaniu rzeczy do SVN. Co nie zawsze jest takie łatwe, ale od czego są narzędzia.
Zaczynamy od przygotowania prostego skryptu, który będzie weryfikował wprowadzony opis:
$commitMessageFile = Get-Content $args[2]; if (($commitMessageFile -eq $null) -or $commitMessageFile.length -eq 0) { Write-Error "Commit message cannot be empty"; exit 9; } $commitMessage = ($commitMessageFile)[0]; if (($commitMessage.length -eq 0) -or $commitMessage -eq $NULL) { Write-Error "First line of commit message cannot be empty"; exit 9; } $regexPattern = "^\[(((STORY|BUG|)-[0-9]*)|OTHER)\]\W.*" if (!($commitMessageFile -match $regexPattern)) { Write-Error "Commit message does not have correct format."; exit 9; }
Zapisujemy ten skrypt w jakimś miejscu na dysku i poprawiamy konfigurację SVNa. W tym celu otwieramy konfigurację SVNa i wchodzimy do Hook Scripts:
Następie dodajemy nowy Hook, który będzie uruchamiał nasz skrypt przed Commitem:
I to wszystko. W momencie, gdy ktoś spróbuje wrzucić jakiś kod do SVNa i nie zastosuje odpowiedniego formatu zobaczy następujący komunikat:
Ponieważ skrypt do weryfikacji opisu używa wyrażeń regularnych to tak na prawdę możliwości konfiguracji i dostosowania tego rozwiązania do własnych potrzeb są olbrzymie.
Zostaw komentarz