APIS Core
APIS je orchestrační vrstva, která převádí projektové vztahy na spustitelnou automatizaci.
Na úrovni core je APIS zodpovědný za načítání projektového kontextu, resolvování modulů, stavbu grafu závislostí a rozhodování o tom, co se má stát dál ve workflow navázaném na repozitáře.
Co dělá core
Aktuální kódová základna už dnes ukazuje hlavní runtime odpovědnosti APIS:
- načíst APIS konfiguraci z projektové složky, např.
.apis - načíst APIS environment proměnné ze systému a z
.envsouboru - připojit se k aktuálnímu Git repozitáři a ke GitLabu, když jsou dostupné přihlašovací údaje
- detekovat verze a branch flags
- načíst built-in i projektové moduly
- převést joby a itemy do flow grafu
- generovat plán vykonání pro lokální běh i CI/CD pipeline
Jinými slovy, core je ta část, která rozumí projektu jako systému, ne jen jako složce se skripty.
Vstupní body
Hlavním vstupním bodem je příkazová utilita apis.
Současné CLI podporuje parametry pro:
- úroveň logování
- umístění environment souboru
- přepis branche
- konfigurační adresář
- push-enabled režim pro externí změny
K dispozici jsou i akce jako:
- vypsání verze APIS
- zobrazení načtených modulů
- kontrola verzovacího tagu
- inkrementace verze
- vygenerování plánu
Pokud není zadána konkrétní akce, APIS dnes přechází do terminálového UI.
Projektový kontext
APIS skládá svůj runtime stav ze tří zdrojů:
- aktuální repozitář
- APIS environment proměnné
- APIS konfigurační adresář
Díky tomu lze stejnou projektovou logiku používat:
- lokálně na vývojářském stroji
- uvnitř CI/CD
- uvnitř workflow automatizace založené na Git pipeline
Právě tento sdílený kontext umožňuje APIS udržovat závislé repozitáře v souladu bez nutnosti přepisovat automatizaci pro každé prostředí zvlášť.
Git a povědomí o verzích
Core už dnes obsahuje Git-aware chování přes ApisGit.
Když je k dispozici přístup do repozitáře a autentizace, APIS umí:
- zjistit aktuální remote
- detekovat aktuální repozitář a branch
- číst tagy
- namapovat aktuální commit
- pushnout nebo přepsat tagy, pokud je zapnutý push mode
Práce s verzemi je také přímo součástí core runtime.
APIS načítá verze z:
- Git tagu
- environment proměnných, např.
APIS_DATA_VERSION - branch naming rules
Branch model už nyní podporuje flagy:
mainbetaalphadev
Kromě toho umí z názvu branche číst i další metadata, jako jsou marks nebo major locks. To dává APIS strukturovaný způsob, jak sladit automatizaci s release větvemi.
Načítání modulů
Core nehardcoduje projektové chování přímo v sobě.
Místo toho načítá:
- built-in moduly, které jsou součástí APIS
- projektové moduly z konfigurovaného adresáře
modules
Po načtení APIS převede tyto moduly na:
- uzly artefaktů
- uzly jobu
- vazby mezi vstupy a výstupy
Právě tento krok umožňuje generování flow.
Generování flow
Jakmile jsou moduly načtené, APIS je převádí do grafu závislostí složeného z jobů a itemů.
Tento graf se používá pro určení:
- jaké artefakty v projektu existují
- které joby je poskytují
- které joby je spotřebovávají
- jaké pořadí vykonání je validní
Aktuální kódová základna už obsahuje generování flow grafu, serializaci grafu i export pro vizualizaci do HTML nebo Mermaid výstupu.
To je technický základ celé myšlenky APIS: když se změní jeden repozitář, navazující projektová data se mají aktualizovat po známé cestě závislosti, ne přes manuální komunikaci.
Prostředí a výkon
Core také definuje rozhraní pro environments a executors.
To je důležité, protože APIS musí odděleně odpovědět na dvě různé otázky:
- co je v aktuálním projektovém prostředí k dispozici
- jak se má práce skutečně vykonat
Oddělením těchto vrstev zůstává APIS modulární i ve chvíli, kdy se projekty liší infrastrukturou nebo runtime strategií.
Aktuální úroveň vyspělosti
Repozitář už dnes obsahuje smysluplnou core architekturu:
- CLI vstupní bod
- modulový systém
- Git integraci
- verzovací logiku
- flow model
- základy triggerů
- terminálové UI komponenty
Některé user-facing metody jsou zatím placeholdery, ale konstrukční backbone je už dnes dost silný na to, aby bylo APIS možné popsat jako reálný orchestration framework, ne jen jako koncept.