-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Proponowane zasady
Wersje
Wersje nadajemy zgodnie z semver 2.0.
Tagi
Kod odpowiadający danej wersji tagowany jest w repozytorium gita.
- Wersje tagujemy zawsze z opcją
--annotate
, dzięki czemu tag ma datę, autora i opis. - Nazwa taga składa się z wersji oraz prefiksu
v
, np.v0.7.3
. - Opis taga powinien zaczynać się od nazwy aplikacji i nadawanej wersji. Po nim powinny zostać podana treść release notes dla tagowanej wersji.
- Jeżeli projekt posiada osobne repozytorium deploymentowe (zawierające tylko skrypty konfigurujące serwery, klastry, kontenery, itp.), powinno być ono tagowane tymi samymi tagami co repozytorium główne.
- Jeżeli w jednym z repozytoriów nie ma nowych zmian w momencie tagowania dopuszczalne jest zarówno nadanie ostatniemu commitowi drugiego taga jak i po prostu pominięcie w tym repozytorium tej wersji. Np. jeżeli w momencie tagowania repozytorium
concent
tagiemv0.7.3
w repozytoriumconcent-deployment
ostatni commit ma już tagav0.7.2
można zarówno otagować ten commit jakov0.7.3
albo nie tagować go w ogóle.
- Jeżeli w jednym z repozytoriów nie ma nowych zmian w momencie tagowania dopuszczalne jest zarówno nadanie ostatniemu commitowi drugiego taga jak i po prostu pominięcie w tym repozytorium tej wersji. Np. jeżeli w momencie tagowania repozytorium
Github releases
Na Githubie nadane przez nas tagi pojawiają się na liście release'ów jako zwykłe tagi.
- Aby odróżnić je od reszty tagów warto je wyedytować i zapisać przyciskiem "Publish release".
- Dodatkowo, jeżeli nie jest to produkcyjny release, zaznaczamy checkbox "This is a pre-release".
- Jeżeli repozytorium po zbudowaniu daje nam jakiś pakiet, który będzie przekazywany użytkownikom, należy ten pakiet zauploadować jako część Githubowego release'u.
Milestones
Github help > About Milestones.
Ponieważ używamy innych narzędzi do planowania iteracji, milestone'y służą nam jedynie do zapisania, które pull requesty i issues weszły do którego release'u. Ułatwia to przygotowanie release notes.
- Nazwą zamkniętego milestone'a jest wersja (bez prefiksu
v
). - W danej chwili wystarczy jeden otwarty milestone o nazwie
next
. W momencie otagowania nowej wersji zamykamy go i zmieniamy jego nazwę na tę wersję. - Milestone jest nadawany pull requestowi i odpowiadającemu mu issue dopiero w momencie zmerge'owania pull requesta. Nadaje go ten, kto merge'uje.
- Pull requesty, które zostały zamknięte bez zmerge'owania nie dostają milestone'a. Zamiast tego dostają etykietę
invalid
. - Issues, które zostały zamknięte i niezrealizowane (np. zmieniła się koncepcja, bug jednak nie występuje, pull request został zamknięty bez zmerge'owania, itp.) również nie trafiają do żadnego milestone'a i dostają etykietę
invalid
. - Jeżeli issue skojarzony jest z więcej niż jednym pull requestem, trafia do tego mile'stone'a, który zawiera ostatni pull request.
- Jeżeli pull request został zmerge'owany ale później wycofany jeszcze w tej samej wersji za pomocą
git revert
, trafia do milestone'a, ale dostaje jednocześnie etykietęinvalid
.
- Pull requesty, które zostały zamknięte bez zmerge'owania nie dostają milestone'a. Zamiast tego dostają etykietę
Relase notes
Release notes jest informacją o tym, co zmieniło się w repozytorium od ostatniej wersji i jak bezpiecznie wykonać migrację między tymi wersjami.
Jest to informacja dla użytkownika repozytorium - tzn. kogoś kto:
- Nie jest dogłębnie zaznajomiony z developmentem i wewnątrzną strukturą projektu.
- Będzie budował i/lub deployował kod zawarty w repozytorium.
Przygotowywanie release notes
- Release notes przechowujemy w pliku o nazwie
RELEASE-NOTES
znadującym się w repozytorium lub na wiki projektu. To pierwsze ułatwia aktualizowanie go przy okazji pull requestów, to drugie zmniejsza ryzyko konfliktów. - W pliku znajduje się lista wszystkich wersji projektu, najnowsza wersja na górze.
- Dla każdej wersji wymieniona jest wysokopoziomowa lista zmian. Bardzo często jeden pull request odpowiada jednej zmianie, ale nie jest to regułą. Należy pamiętać, że osoba, dla której przeznaczona jest lista nie zna drobnych szczegółów implementacyjnych. Opisy zmian powinny odwoływać się do logicznej struktury systemu przedstawionej w dokumentacji wykonawczej.
- Dla każdej wersji powinna być podana również lista ręcznych zmian niezbędnych poczas migracji do nowej wersji:
- Nowe ustawienia, które nie mają wartości domyślnych.
- Ustawienia, których wartości trzeba zaktualizować.
- Ręczne zmiany w bazie danych.
- Jednorazowe skrypty, które powinny zostać odpalone przed włączeniem nowej wersji systemu.
- Niekompatybilne wstecz zmiany w parametrach podawanych z linii komend.
- Wpisy dodawane są do pliku w każdym pull requeście, który wprowadza zmiany widoczne dla użytkownika repozytorium.