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:
- Naklonuje koreňový repozitár artefaktov.
- Vyhľadá zodpovedajúci submodul artefaktu.
- Vykoná checkout repozitára presne na daný commit.
- 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.txtumiestneného v${CMAKE_SOURCE_DIR} - Zadaním umiestnenia súboru
ArtifactsConfig.txtcez parameterCONFIG_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
latestpre najnovšiu verziu) - Subversion – zodpovedá verzii handlera artefaktu (alebo
latestpre 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
- Upravte
ArtifactsConfig.txtna požadované verzie - Spustite:
cmake -P ArtifactsHandler.cmake
- 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
- 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
- Mr.Nobody — embedbits.com
Príspevky sú vítané! Otvorte prosím pull request.