Standardy
Conventional Commits w organizacji rachuna-net. Wdrożenie tej konwencji umożliwia uporządkowaną historię zmian, automatyzację wersjonowania i łatwiejszą współpracę zespołową.
Standardy
Conventional Commits w organizacji rachuna-net. Wdrożenie tej konwencji umożliwia uporządkowaną historię zmian, automatyzację wersjonowania i łatwiejszą współpracę zespołową.
Wiadomość commita powinna być zgodna z poniższym schematem:
<typ>[!][(zakres)]: krótki opis zmianyPrzykłady
feat: dodano obsługę logowania
fix(auth): naprawiono błąd walidacji tokenu
refactor!: przebudowano system autoryzacji (breaking change)
chore(ci): aktualizacja pipeline’a GitLab CI| Typ | Opis |
|---|---|
feat | Nowa funkcjonalność |
fix | Poprawka błędu |
docs | Zmiany w dokumentacji |
style | Formatowanie (np. spacje, przecinki) |
refactor | Refaktoryzacja kodu (bez zmiany zachowania) |
test | Dodanie lub zmiana testów |
chore | Zadania techniczne (np. zmiany w CI/CD) |
params | [dodane w organizacji pl.rachuna-net] - Parametryzacja |
Aby oznaczyć zmianę łamiącą kompatybilność wsteczną, należy dodać wykrzyknik (!) po typie commita.
git commit -m 'refactor!: zmieniono sposób uwierzytelniania'semantic-release i automatycznego wersjonowaniaW procesie gitlab-CI został utworzony job 🔍 Analyze Conventional Commits. W wersjach wyższych niż gitlab-ce można zastosować PUSH RULES
Jak działa job?
Job analizuje wyniki z polecania, który zwraca listę commitów i na jej podstawie dokonywana jest analiza pod kątem zgodności z regexp.
CI_DEFAULT_BRANCH="main"
git --no-pager log origin/$CI_DEFAULT_BRANCH..HEAD --pretty=format:"%s"Jak naprawić błąd walidacji?
git commit --amend (dla ostatniego) lub git rebase -i (dla wielu), zmień message na zgodny ze wzorcem, a następnie git push --force-with-lease.Przykłady:
To polecenie wyświetla listę commitów z lokalnej gałęzi (HEAD) względem domyślnego brancha - main, czyli badany jest tylko przyrost.
Wdrożenie Conventional Commits to szybki krok w stronę lepszej automatyzacji, przejrzystości i jakości pracy w projektach GitLab. Rekomendujemy uwzględnienie tej konwencji w każdym nowym repozytorium oraz integrację z commitlint, semantic-release i husky.
regexp:
^(build|chore|ci|docs|feat|fix|perf|refactor|style|test|revert|merge|release|hotfix|fixup|squash|wip|BREAKING CHANGE)(\([a-zA-Z0-9_-]+\))?!?:\s.+$