Prehľad artefaktov
Tento repozitár slúži ako centrálny hub artefaktov pre build nástroje, generátory dokumentácie a ďalšie externé závislosti používané vo viacerých embedded projektoch.
Každý artefakt (napr. GCC, Doxygen, Cppcheck) je spravovaný ako samostatný Git submodul, čo umožňuje sledovanie verzií a modulárne aktualizácie a zároveň udržiava hlavné repozitáre štíhle.
🧱 Účel
Cieľom tohto repozitára je:
- Udržiavať jediný prístupový bod k zdieľaným build závislostiam
- Umožniť verzovanú správu artefaktov naprieč projektmi
- Podporovať automatické sťahovanie a rozbaľovanie cez CMake alebo Azure pipeline
- Znížiť závislosť od externých sťahovaní počas CI/CD buildov
Dostupné artefakty
| Artefakt | Repozitár | Popis |
|---|---|---|
gcc | Artifact-gcc | Toolchain kompilátora GCC |
gcc-arm-none-eabi | Artifact-gcc-arm-none-eabi | Bare-metal toolchain GCC pre ARM |
ninja | Artifact-ninja | Build systém Ninja |
doxygen | Artifact-ninja | Nástroj na generovanie dokumentácie Doxygen |
Štruktúra repozitára
Každý podadresár predstavuje samostatný repozitár artefaktu.
Artifacts/
├─ gcc/ # GCC toolchain (as submodule)
├─ doxygen/ # Doxygen generator (as submodule)
├─ cppcheck/ # Static analysis tool (as submodule)
└─ ...
Štruktúra artefaktu
Každý repozitár artefaktu dodržiava jednotnú konvenciu troch vetiev:
Artifact-<name>/
├── main # Default branch, documentation and general information
├── Core # CMake integration layer (ArtifactConfig.cmake)
└── Bin # Binary releases as ZIP archives
Vetva Core
Obsahuje ArtifactConfig.cmake — súbor integrácie artefaktu do CMake. Sprístupňuje dve povinné funkcie, ktoré musí implementovať každý artefakt:
| Funkcia | Signatúra | Popis |
|---|---|---|
<name>_GetArtifactVersion | (<name>_GetArtifactVersion RET_VERSION) | Vráti nainštalovanú verziu artefaktu vo formáte X.Y.Z |
<name>_ArtifactInit | (<name>_ArtifactInit) | Inicializuje artefakt na použitie v builde (nastaví PATH, premenné CMake a pod.) |
Poznámka: Prefix funkcie sa musí presne zhodovať s názvom priečinka artefaktu (názvom adresára submodulu). Build proces sa pri vyhľadaní a volaní správnych funkcií spolieha na túto konvenciu pomenovania.
Commity vo vetve Core sú verzované — každý commit zodpovedá konkrétnej verzii integračnej vrstvy CMake.
Vetva Bin
Obsahuje verzované binárne vydania artefaktu. Každý commit obsahuje ZIP archív s predkompilovanými binárkami pre podporované platformy spolu so súborom kontrolného súčtu SHA-256.
Vydania sa značkujú vo formáte:
Bin/<version>-<platform>
Napríklad: Bin/1.12.1-linux, Bin/1.12.1-windows
Použitie
Klonovanie so submodulmi
Na zmenšenie veľkosti repozitára pri sťahovaní artefaktov:
git clone --no-checkout --depth=1 https://github.com/YourOrg/Artifacts.git
Jednotlivé submoduly je možné stiahnuť na požiadanie, až keď sú potrebné:
git -C Artifacts submodule update --init --depth=1 gcc
Integrácia s CMake
Adresár každého submodulu artefaktu obsahuje súbor ArtifactConfig.cmake (pochádza z vetvy Core). Vložte ho do svojho projektu CMake:
include(<path_to_artifacts>/<artifact_name>/ArtifactConfig.cmake)
# Initialize the artifact (sets PATH and other environment variables)
<artifact_name>_ArtifactInit()
# Optionally query the installed version
<artifact_name>_GetArtifactVersion(ARTIFACT_VERSION)
message(STATUS "<artifact_name> version: ${ARTIFACT_VERSION}")
Príklad s Ninja:
include(${ARTIFACTS_DIR}/ninja/ArtifactConfig.cmake)
ninja_ArtifactInit()
ninja_GetArtifactVersion(NINJA_VERSION)
message(STATUS "Ninja version: ${NINJA_VERSION}")
Pridanie nového artefaktu
Nový repozitár artefaktu musí dodržať túto štruktúru:
- Názov repozitára:
Artifact-<name>(napr.Artifact-cmake) - Vetva
Core: obsahujeArtifactConfig.cmakes implementovanými funkciami<name>_GetArtifactVersiona<name>_ArtifactInit - Vetva
Bin: obsahuje verzované ZIP archívy označené akoBin/<version>-<platform> - Pridajte ako submodul do tohto repozitára:
git submodule add -b Core https://github.com/Embedbits/Artifact-<name>.git <name>
Súvisiace repozitáre
- Artifact-ninja — artefakt build systému Ninja
- Artifact-gcc-arm-none-eabi — artefakt toolchainu GCC pre ARM
🧩 Integrácia s CI/CD
Tento repozitár je navrhnutý na automatizované použitie v CI prostrediach, ako sú Azure DevOps alebo GitHub Actions.
Príklad použitia v Azure pipeline:
- script: |
cmake -DARTIFACT_NAME=gcc -DARTIFACT_VERSION=1.0.3 -P ./CMakeModules/ArtifactsHandler.cmake
displayName: 'Fetch GCC artifact'
🧠 Poznámky
- Každý submodul artefaktu je možné verzovať a aktualizovať nezávisle
- Na zaistenie integrity artefaktov sa odporúčajú hash súbory (
.hash) - Nevkladajte veľké binárky priamo do commitov; používajte len komprimované archívy
- Hlavný repozitár (
Artifacts) nikdy neobsahuje zdrojáky nástrojov priamo — iba referencie
🏷 Licencia
Všetky submoduly artefaktov si ponechávajú vlastné licencie.
Tento nadradený repozitár iba koordinuje ich zahrnutie a sledovanie verzií.