Folder tour¶
TL;DR
ci/ = CI logika (Python). deploy/ = infra za servise koje
ci-artifacts host-uje. tests/ = testovi. bin/ = lokalni
architecture drift gate. Sve ostalo je konfiguracija + dokumentacija.
Root layout¶
ci-artifacts/
├── CLAUDE.md # load-bearing pravila (root, čitaj prvi)
├── ci/ # sav CI kod (Python, stdlib only)
├── ci-download-scripts.sh # permanent shell izuzetak (bootstrap)
├── deploy/ # servisi KOJE ci-artifacts deploy-uje
├── tests/ # pytest + bats
├── bin/ # lokalni dev alati (arch drift gate)
├── docs/ # korisnička dokumentacija + bible
├── examples/ # primjeri services.json + yml
├── services.json # statički registar servisa (komitovan)
├── bitbucket-pipelines.yml # CI za SAM ci-artifacts repo
├── Makefile + Makefile.local.mk # generisani + custom Make targeti
├── pyproject.toml # Python project config (ruff, pylint, pytest)
└── mcp-servers-ci-scripts-migration.md # v2 migration notes
ci/ tree (load-bearing)¶
ci/
├── aws/ # ECS deploy (boto3)
├── backoffice/ # version-store HTTP backend
├── band/... # linting, test, install vendor wrappers
├── claude/ # Claude Code agent CI helpers
├── composer/ # PHP dep audit
├── docker/ # build, scan, compose validate
├── ex/... # jira, langfuse, lock, sentry, slack, registry, ...
├── _errors.py # VendorAuthError contract (jedini izvor istine)
├── deployment_env.py # logical_env_from_label (BB label → env)
├── pipeline_meta.py # BitbucketMeta frozen dataclass
├── pipeline_state.py # ci-state.json jedini reader/writer
├── run.py # v3 verb dispatcher
├── service_manifest.py # services.json jedini loader
├── runner_detect.py # RunnerType + is_macos()/is_linux()
├── tool_installer.py # pinned binary install helpers
└── verbs/ # bump / seed / build / merge-state / scan / deploy / notify / tag
Svaki vendor direktorij ima:
ci/<vendor>/api/api.py— svi HTTP pozivi (typed methods)ci/<vendor>/api/config.py— env-only config (lazy__getattr__)ci/<vendor>/<action>.py— executable orchestratorsci/<vendor>/CLAUDE.md— folder-specific pravila
Pet izuzetaka od api/config.py pravila: aws/ (config.py na
vrhu), sentry/ (nema config.py, env direktno), gitleaks/,
squawk/, git_cliff/ (binarni installer-i, ne vendor REST).
deploy/ (ovo deploy-uje ci-artifacts sam)¶
Servisi definirani u services.json CI/CD pipeline-ovima. Jedini
servis trenutno: schemas-mirror. Svi consumer servisi žive u
consumer repozima, NE u ci-artifacts.
bin/ (lokalni dev alati)¶
bin/
├── design # CLI: architecture baseline generator
├── _fingerprint.py # vendored fingerprint (engineer-design-diagram skill)
└── check_arch_reminder.py # Stop-hook gate (arch drift detector)
Koristi se samo lokalno. Generiše .arch/<sub>/graph.json baseline.
Stop-hook pita da se regeneriše kad su podaci ustajali.
tests/ (CI za CI)¶
tests/
├── *.py # pytest testovi (services_migrate, make generator, ...)
└── test_ci_download_scripts.bats # bats test za shell bootstrap
docs/¶
docs/bible/— ova biblije (MkDocs site)docs/ci-env-vars.md— inventarCI_*varijabli safile:linedocs/examples/— šabloni services.json + Makefiledocs/history/— ADR + migration logsdocs/migrations/— consumer migracije (services.json v1 → v31)docs/plans/— design docs za velike promjenedocs/FOLLOW_UPS.md— šta NE ide ovdje (sada na Jira CI board)
Vidi i¶
00-welcome.md— uvod02-how-to-read-this-bible.md— kako koristiti ovu bibliu02-systems/11-vendor-api-contract.md— canonical vendor shape