Preskočiť na hlavný obsah

Artifacts Handler

Tento repozitár poskytuje automatizačný nástroj postavený na CMake na správu build artefaktov a ich verzií naprieč viacerými repozitármi. Systém umožňuje používateľovi definovať, ktoré artefakty a verzie sú potrebné, a potom automaticky stiahne potrebné komponenty. Jediný softvér, ktorý musí mať používateľ v systéme k dispozícii, je GIT a CMake. Každý ďalší komponent potrebný na build projektu má byť dostupný prostredníctvom tohto modulu.


⚙️ Prehľad​

Artifacts Manager používa konfiguračný súbor (ArtifactsConfig.txt), ktorý uvádza požadované artefakty a ich verzie. Pri spustení Artifacts Manager vykoná tieto kroky:

  1. Naklonuje koreňový repozitár artefaktov.
  2. Vyhľadá zodpovedajúci submodul artefaktu.
  3. Vykoná checkout repozitára presne na daný commit.
  4. Nainštaluje naklonovaný artefakt. 5: Inicializuje nainštalovaný artefakt.

Tento prístup zaručuje minimálne využitie siete a rýchlu synchronizáciu medzi build prostredím a repozitármi artefaktov.

1: Klonovanie​

Koreňový repozitár artefaktov sa naklonuje (ak ešte neexistuje) bez inicializácie submodulov. Tým sa dosiahne minimálne využitie siete a zrýchli sa celý proces.

2: Vyhľadanie​

Systém prejde všetky artefakty nakonfigurované v ArtifactsConfig.txt a správny artefakt nájde prehľadávaním priečinkov v koreňovom repozitári artefaktov. Vyhľadávanie nerozlišuje veľké a malé písmená, aby sa znížilo riziko problémov s konfiguráciou.

3: Checkout​

Po nájdení submodulu artefaktu sa vykoná checkout požadovanej verzie artefaktu. Každé vydanie artefaktu sa nachádza v samostatnej vetve. Ak používateľ namiesto číselnej verzie zvolí latest, zoznam vetiev sa sťahuje raz denne a skontroluje sa najnovšia verzia. Ak sa nájde novšia verzia, systém ju použije. Používateľ môže zvoliť aj podverziu artefaktu. Tá predstavuje verziu pomocnej funkcionality artefaktu (samotného handlera artefaktu). Táto funkcionalita obsahuje všetko potrebné na inicializáciu a použitie artefaktu. Názov vetvy vydania pozostáva z:

  • verzie vydania (napr. 15.2.0)
  • cieľového operačného systému (napr. Win, Unix, DarwinARM) Checkout sa vykonáva ako plytký klon (--depth=1), aby sa minimalizovala sieťová prevádzka a zabratý priestor a zrýchlil sa proces.

4: Inštalácia​

Po checkoute sa artefakt nainštaluje. Inštalácia pozostáva z rozbalenia archívu artefaktu do lokálneho inštalačného priečinka a skopírovania potrebných súborov handlera artefaktu z repozitára artefaktu.

5: Inicializácia​

Po nainštalovaní sa artefakt pred buildom inicializuje, aby poskytol buildu potrebné informácie. Vo väčšine prípadov inicializácia aktualizuje systémovú premennú PATH o cestu k aktuálnemu artefaktu. Táto cesta sa pridáva na začiatok systémovej PATH, aby funkcionalita artefaktu mala prednosť pred už nainštalovanými nástrojmi.


📄 Konfigurácia artefaktov​

Artefakty je možné nakonfigurovať viacerými spôsobmi:

  • Pomocou súboru ArtifactsConfig.txt umiestneného v ${CMAKE_SOURCE_DIR}
  • Zadaním umiestnenia súboru ArtifactsConfig.txt cez parameter CONFIG_FILE_PATH
  • Zadaním zoznamu artefaktov cez parameter ARTIFACTS_LIST

Použitie súboru ArtifactsConfig.txt umiestneného v ${CMAKE_SOURCE_DIR}​

Tento konfiguračný súbor sa má nachádzať v koreňovom adresári CMake (${CMAKE_SOURCE_DIR}). Konfiguračný súbor používa syntax ArtifactName;Version;Subversion, kde:

  • ArtifactName – názov modulu artefaktu (nerozlišuje veľké a malé písmená)
  • Version – zodpovedá vydaniu artefaktu (alebo latest pre najnovšiu verziu)
  • Subversion – zodpovedá verzii handlera artefaktu (alebo latest pre najnovší commit)
gcc-arm-none-eabi;14.3.1;latest
ninja;latest;latest
doxygen;latest;latest

Cestu k umiestneniu artefaktov je možné nakonfigurovať prvým riadkom v ArtifactsConfig.txt. Ak riadok začína „ROOT_REPO_PATH=“, systém použije túto cestu ako umiestnenie artefaktov.

ROOT_REPO_PATH=D:/Artifacts
gcc-arm-none-eabi;14.3.1;latest
ninja;latest;latest
doxygen;latest;latest

Zadanie umiestnenia ArtifactsConfig.txt cez parameter CONFIG_FILE_PATH​

Ak sa konfiguračný súbor nachádza inde ako v ${CMAKE_SOURCE_DIR}, používateľ môže cestu k nemu zadať cez parameter CONFIG_FILE_PATH.

cmake -DCONFIG_FILE_PATH=/path/to/config/ -B ...

Zadanie zoznamu artefaktov cez parameter ARTIFACTS_LIST​

Ak používateľ nechce použiť konfiguračný súbor ArtifactsConfig.txt, konfiguráciu artefaktov je možné zadať cez parameter ARTIFACTS_LIST.

cmake -DARTIFACTS_LIST=gcc-arm-none-eabi;14.3.1,ninja;latest;latest,doxygen;latest;latest

Podpora operačných systémov​

  • Vo Windows manager automaticky vyberá vetvy končiace na -Win.
  • V Linuxe vyberá vetvy končiace na -Unix.
  • V MacOS vyberá vetvy končiace na -DarwinARM
  • Ak sa vetva alebo commit nenájde, skript daný artefakt preskočí s upozornením.

S požiadavkou na podporu ďalšieho OS kontaktujte administrátora.


🧠 Poznámky k implementácii​

  • Systém používa na volanie príkazov Git execute_process() z CMake.
  • Repozitáre sa spracúvajú plytkým fetchom (--depth=1), aby sa minimalizovala ich veľkosť.
  • Názvy artefaktov sa porovnávajú bez rozlišovania veľkých a malých písmen, čo umožňuje flexibilné formátovanie konfigurácie.
  • Skript podporuje inkrementálnu prevádzku — už naklonované repozitáre sa znovu využijú.

📁 Štruktúra adresárov​

ArtifactsManager/
├── README.md # Readme file.
├── ArtifactsHandler.cmake # The main management script
└── Cache/
├── RootRepo/ # Root repository with submodules
└── Artifacts/ # Artifacts installation folder

🚀 Použitie​

Spustite skript CMake priamo:

cmake -P ArtifactsHandler.cmake

Voliteľne ho môžete integrovať do existujúceho buildu CMake alebo CI pipeline, aby sa pred buildom automaticky stiahli správne verzie artefaktov.

Používateľ môže nastaviť cestu k požadovanému umiestneniu artefaktov argumentom „ROOT_REPO_PATH“.

cmake -P -DROOT_REPO_PATH="D:/Artifacts" ArtifactsHandler.cmake

🧩 Príklad pracovného postupu​

  1. Upravte ArtifactsConfig.txt na požadované verzie
  2. Spustite:
    cmake -P ArtifactsHandler.cmake
  3. Skript:
    • Naklonuje koreňový repozitár artefaktov (ak ešte nie je naklonovaný)
    • Nájde a stiahne správnu vetvu a commit pre každý artefakt
  4. Vaše prostredie je teraz pripravené so všetkými požadovanými verziami artefaktov.

🛠️ Požiadavky​

  • CMake ≥ 3.21
  • Git ≥ 2.20
  • Sieťový prístup k repozitárom artefaktov (napr. Azure DevOps)

Licencia​

Tento repozitár združuje komponenty z balíkov STMicroelectronics. Jednotlivé komponenty si ponechávajú svoje licencie. Podrobnosti nájdete v príslušných priečinkoch.


Autori​

Príspevky sú vítané! Otvorte prosím pull request.