Artifacts Handler
Tento repozitář poskytuje automatizační nástroj založený na CMake pro správu build artefaktů a jejich verzí napříč více repozitáři. Systém umožňuje uživateli definovat, které artefakty a jaké verze jsou potřeba, a potřebné komponenty poté automaticky stáhne. Jediný software, který uživatel v systému potřebuje, je GIT a CMake. Všechny ostatní komponenty nezbytné pro build projektu budou dostupné prostřednictvím tohoto modulu.
⚙️ Přehled
Artifacts Manager používá konfigurační soubor (ArtifactsConfig.txt), který uvádí požadované artefakty a jejich verze.
Po spuštění Artifacts Manageru se provedou následující kroky:
- Naklonuje kořenový repozitář artefaktů.
- Vyhledá odpovídající submodul artefaktu.
- Provede checkout repozitáře přesně na daný commit.
- Nainstaluje naklonovaný artefakt. 5: Inicializuje nainstalovaný artefakt.
Tento přístup zajišťuje minimální využití sítě a rychlou synchronizaci mezi build prostředím a repozitáři artefaktů.
1: Klonování
Kořenový repozitář artefaktů se naklonuje (pokud ještě neexistuje) bez inicializace submodulů. Tím se dosáhne minimálního využití sítě a zrychlí se celý proces.
2: Vyhledání
Systém projde všechny artefakty nakonfigurované v ArtifactsConfig.txt a správný artefakt najde prohledáním složek v kořenovém repozitáři artefaktů.
Vyhledávání nerozlišuje velikost písmen, aby se omezily možné problémy s konfigurací.
3: Checkout
Po nalezení submodulu artefaktu se provede checkout požadované verze artefaktu. Každé vydání artefaktu je umístěno v samostatné větvi.
Pokud uživatel místo číselné verze zvolí latest, seznam větví se stahuje jednou denně a kontroluje se nejnovější verze. Pokud je nalezena novější verze, systém ji použije.
Uživatel může zvolit i podverzi artefaktu. Ta představuje verzi doplňkové funkcionality artefaktu (samotného handleru artefaktu). Tato funkcionalita obsahuje vše potřebné pro inicializaci a použití artefaktu.
Název větve vydání se skládá z:
- verze vydání (např.
15.2.0) - cílového operačního systému (např.
Win,Unix,DarwinARM) Checkout se provádí jako mělký klon (--depth=1), aby se minimalizoval síťový provoz a využití paměti a urychlil se celý proces.
4: Instalace
Artefakt se po checkoutu nainstaluje. Proces instalace spočívá v rozbalení archivu artefaktu do lokální instalační složky a zkopírování potřebných souborů poskytujících handler artefaktu z repozitáře artefaktu.
5: Inicializace
Jakmile je artefakt nainstalován, musí být před buildem inicializován, aby poskytl buildu potřebné informace. Ve většině případů inicializace aktualizuje systémovou proměnnou PATH o cestu k aktuálnímu artefaktu. Tato cesta se přidává na začátek systémové PATH, aby funkcionalita artefaktu měla přednost před již nainstalovanými nástroji.
📄 Konfigurace artefaktů
Artefakty lze konfigurovat několika způsoby:
- Pomocí souboru
ArtifactsConfig.txtumístěného v${CMAKE_SOURCE_DIR} - Zadáním umístění souboru
ArtifactsConfig.txtpomocí parametruCONFIG_FILE_PATH - Zadáním seznamu artefaktů pomocí parametru
ARTIFACTS_LIST
Použití souboru ArtifactsConfig.txt umístěného v ${CMAKE_SOURCE_DIR}
Tento konfigurační soubor se musí nacházet v kořenovém adresáři CMake (${CMAKE_SOURCE_DIR}).
Konfigurační soubor musí používat syntaxi ArtifactName;Version;Subversion, kde:
- ArtifactName – název modulu artefaktu (nerozlišuje velikost písmen)
- Version – odpovídá vydání artefaktu (nebo
latestpro nejnovější verzi) - Subversion – odpovídá verzi handleru artefaktu (nebo
latestpro nejnovější commit)
gcc-arm-none-eabi;14.3.1;latest
ninja;latest;latest
doxygen;latest;latest
Cestu k umístění artefaktů lze nakonfigurovat prvním řádkem v ArtifactsConfig.txt. Pokud řádek začíná "ROOT_REPO_PATH=", systém použije tuto cestu jako umístění artefaktů.
ROOT_REPO_PATH=D:/Artifacts
gcc-arm-none-eabi;14.3.1;latest
ninja;latest;latest
doxygen;latest;latest
Zadání umístění ArtifactsConfig.txt pomocí parametru CONFIG_FILE_PATH
Pokud je konfigurační soubor umístěn jinde než v ${CMAKE_SOURCE_DIR}, může uživatel cestu k tomuto souboru zadat pomocí parametru CONFIG_FILE_PATH.
cmake -DCONFIG_FILE_PATH=/path/to/config/ -B ...
Zadání seznamu artefaktů pomocí parametru ARTIFACTS_LIST
Pokud uživatel nechce používat konfigurační soubor ArtifactsConfig.txt, lze konfiguraci artefaktů zadat pomocí parametru ARTIFACTS_LIST.
cmake -DARTIFACTS_LIST=gcc-arm-none-eabi;14.3.1,ninja;latest;latest,doxygen;latest;latest
Podpora OS
- Ve Windows manager automaticky vybírá větve končící na
-Win. - V Linuxu vybírá větve končící na
-Unix. - V **MacOS **vybírá větve končící na
-DarwinARM - Pokud se větev nebo commit nepodaří najít, skript tento artefakt přeskočí s varováním.
Pokud potřebujete podporu dalšího OS, kontaktujte prosím administrátora.
🧠 Poznámky k implementaci
- Systém používá
execute_process()z CMake k vyvolání příkazů Gitu. - S repozitáři se pracuje pomocí mělkých fetchů (
--depth=1), aby se minimalizovala jejich velikost. - Názvy artefaktů se porovnávají bez ohledu na velikost písmen, což umožňuje flexibilní formátování konfigurace.
- Skript podporuje inkrementální provoz — již naklonované repozitáře se znovu využívají.
📁 Struktura adresářů
ArtifactsManager/
├── README.md # Readme file.
├── ArtifactsHandler.cmake # The main management script
└── Cache/
├── RootRepo/ # Root repository with submodules
└── Artifacts/ # Artifacts installation folder
🚀 Použití
Spusťte skript CMake přímo:
cmake -P ArtifactsHandler.cmake
Volitelně jej můžete integrovat do stávajícího buildu CMake nebo CI pipeline, aby se před buildem automaticky stahovaly správné verze artefaktů.
Uživatel může nastavit cestu k požadovanému umístění artefaktů pomocí argumentu "ROOT_REPO_PATH".
cmake -P -DROOT_REPO_PATH="D:/Artifacts" ArtifactsHandler.cmake
🧩 Příklad pracovního postupu
- Aktualizujte
ArtifactsConfig.txtna požadované verze - Spusťte:
cmake -P ArtifactsHandler.cmake
- Skript:
- Naklonuje kořenový repozitář artefaktů (pokud ještě není naklonován)
- Najde a stáhne správnou větev a commit pro každý artefakt
- Vaše prostředí je nyní připraveno se všemi požadovanými verzemi artefaktů.
🛠️ Požadavky
- CMake ≥ 3.21
- Git ≥ 2.20
- Síťový přístup k repozitářům artefaktů (např. Azure DevOps)
Licence
Tento repozitář shrnuje komponenty z balíčků STMicroelectronics. Jednotlivé komponenty si ponechávají své vlastní licence. Podrobnosti najdete v jednotlivých složkách.
Autoři
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány! Otevřete prosím pull request.