Preskoči na sadržaj

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 orchestrators
  • ci/<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)

deploy/
└── schemas-mirror/   # nginx + mkdocs-material image za schemas.infopuls.app

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 — inventar CI_* varijabli sa file:line
  • docs/examples/ — šabloni services.json + Makefile
  • docs/history/ — ADR + migration logs
  • docs/migrations/ — consumer migracije (services.json v1 → v31)
  • docs/plans/ — design docs za velike promjene
  • docs/FOLLOW_UPS.md — šta NE ide ovdje (sada na Jira CI board)

Vidi i