Consumer Make — consumer.mk + Makefile.generated.mk¶
TL;DR
Consumer repo uključuje ci/make/consumer.mk (-include, ne-fatal).
On dodaje make gen (regeneracija Makefile.generated.mk) +
prošireni help parser. Makefile.generated.mk je čist output
ci/json/services_to_makefile.py — nikad se ne edit ručno.
Tri fajla u consumer-u¶
consumer repo/
├── Makefile # korisnikov, sa -include consumer.mk
├── Makefile.local.mk # opcioni custom targeti
├── ci/make/consumer.mk # download-ovan u pipeline (NE commit)
└── Makefile.generated.mk # regenerisan, gitignored
Šta consumer.mk dodaje¶
make gen— regenerišeMakefile.generated.mkizservices.json.- Prošireni
help— podržava oba konvencije: - inline
target: ## desc(ručno pisani targeti) - above-target
## desc+.PHONY: target+target:(generisani) Override-uje consumer-ovhelp(last-definition-wins). -include Makefile.generated.mk— donosi generisane targete.- Auto-regen prereq —
Makefile.generated.mk: services.json $(GEN_SCRIPT)+makere-exec mehanizam. Operator NE treba ručnomake gen; kada seservices.jsonpromijeni,make <generated-target>automatski regeneriše.
ENV derivation (Bitbucket deployment → ENV)¶
- Bitbucket deployment step sa
deployment: api-production→ ENV=production automatski. - Flat build step sa
SENTRY_RELEASE_ENV=staging→ ENV=staging automatski. - Local operator →
ENV=staging make mobile-deploy.
Tri genera globalnih targeta (priority)¶
- Helper utilities (
ci-ruff,ci-bandit-scan, ...) — definirani uci/make/consumer.mk. Statični. - State reads (
state-image-tag,state-release-mode, ...) — generisani. Čitajuci-state.jsonpolje po imenu. - Per-service + global verb targets (
bible-bump,mobile-staging, ...) — generisani izservices.json.
Custom wrapper-i (gdje su OK)¶
Consumer repo MOŽE imati vlastite ci-* wrapper targete u svom
Makefile / Makefile.local.mk. Ali samo za:
- Bitbucket fan-out (parallel-step coordination).
- Output-variable export.
- Artifact filename shims.
- Consumer-specific test harnesses.
NE za redoslijed build/deploy/notify — to je već generisano.
Anti-patterns¶
- ❌ Ručno editovanje
Makefile.generated.mk— pregazeno na sljedećemmake gen. - ❌ Dodavanje globalnih targeta u
consumer.mk— taj fajl je intentionally minimal (gen+help). - ❌ Korištenje
make bible-bumpbezENV=u deployment step-u — ENV se već izvodi; ručni override samo ako namjerno. - ❌ Korištenje underscore u imenu targeta (
bible_bump) — konvencija je hyphen.
Vidi i¶
01-onboarding/06-make-canonical.md— zašto su generisani targeti kanonskici/make/CLAUDE.md— Make contract (puna tabela)ci/json/services_to_makefile.py— generator