Przejdź do treści

Zespół developerski

Strona w przygotowaniu.

Krok 1 — Deklaracja (discipline.yaml)

Każde repozytorium aplikacji commituje discipline.yaml do korzenia:

app: nazwa-aplikacji
discipline: 1.0.0       # pinowana wersja dyscypliny
attest:
  code-review-enforced: true   # ręczne potwierdzenie procesów których CI nie może sprawdzić

discipline.yaml to deklaracja intencji zespołu. Wersja dyscypliny jest pinowana — aplikacja świadomie wybiera, którą wersją norm jest związana.

Krok 2 — Pomiar w CI (conformance.yml)

Repozytorium aplikacji includuje szablon CI z hub-a dyscypliny:

include:
  - project: 'dev.rachuna/zasady-dyscypliny'
    file: '/ci/conformance.yml'
    ref: 'v1.0.0'

Na każdym MR i pushu pipeline:

  1. Pobiera normy dla pinowanej wersji dyscypliny.
  2. Uruchamia bin/checks.sh każdej normy — sprawdza API GitLab, pliki, atestacje.
  3. Produkuje conformance.json jako artefakt CI (nie commit do repo):
{
  "app": "nazwa-aplikacji",
  "discipline": "1.0.0",
  "checked": "2026-06-19",
  "results": {
    "proces/strategia-galezienia#default-branch-main": "pass",
    "proces/conventional-commits#commit-format": "fail"
  }
}

Krok 3 — Bramki środowiskowe

Wynik pomiaru steruje wdrożeniami. Każde środowisko wymaga, by wszystkie checki o odpowiednim tierze były pass lub przykryte ważnym waiverem:

Środowisko Wymagane tiery Uwaga
test test
preprod test + preprod środowisko chronione
prod test + preprod + prod brak otwartych waiversów

Brama blokuje deploy, gdy choć jeden wymagany check ma status fail bez ważnego waivera.

Wyjątki — waivery

Każda niezgodność musi być naprawiona albo objęta jawnym, terminowym waiverem w discipline.yaml:

exceptions:
  - check: proces/conventional-commits#commit-format
    reason: "brak commitlint w CI  planowane w Q3 2026"
    owner: maciej
    max-env: preprod      # waiver ważny do preprod; prod nadal blokuje
    expires: 2026-09-30
    ticket: PROJ-123

Zasady:

  • Waiver bez expires jest niedozwolony.
  • max-env: preprod przepuszcza preprod, ale blokuje prod.
  • Wygasły waiver = traktowany jak brak waivera = fail.
  • Brak cichych luk — każdy dług jest jawny i terminowy.

Konwencje

  • Numeracja norm: STD-<DOMENA>-NNN (domeny: PROC, SEC, INFRA, QUAL)
  • Semver dyscypliny: patch = transparentny · minor = nowy wymóg · major = łamiące
  • Język zgodności: BCP 14 — MUSI / POWINIEN / MOŻE — patrz glossary.md
  • Każda norma: standards/<domena>/STD-<DOMENA>-NNN/README.md + bin/checks.sh
  • Deklaracja = commitowana (discipline.yaml), pomiar = artefakt CI (conformance.json) — nie mieszaj

Wydania dyscypliny

Wersje są tagowane i generowane przez semantic-release na podstawie commitów (STD-PROC-003). Sprawdź zakładkę Releases w GitLab lub CHANGELOG.md. Pinuj dokładną wersję w discipline.yaml każdej aplikacji.