Přeskočit na hlavní obsah

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:

  1. Naklonuje kořenový repozitář artefaktů.
  2. Vyhledá odpovídající submodul artefaktu.
  3. Provede checkout repozitáře přesně na daný commit.
  4. 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.txt umístěného v ${CMAKE_SOURCE_DIR}
  • Zadáním umístění souboru ArtifactsConfig.txt pomocí parametru CONFIG_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 latest pro nejnovější verzi)
  • Subversion – odpovídá verzi handleru artefaktu (nebo latest pro 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​

  1. Aktualizujte ArtifactsConfig.txt na požadované verze
  2. Spusťte:
    cmake -P ArtifactsHandler.cmake
  3. 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
  4. 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​

Příspěvky jsou vítány! Otevřete prosím pull request.