Preskočiť na hlavný obsah

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​

ArtefaktRepozitárPopis
gccArtifact-gccToolchain kompilátora GCC
gcc-arm-none-eabiArtifact-gcc-arm-none-eabiBare-metal toolchain GCC pre ARM
ninjaArtifact-ninjaBuild systém Ninja
doxygenArtifact-ninjaNá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:

FunkciaSignatúraPopis
<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:

  1. Názov repozitára: Artifact-<name> (napr. Artifact-cmake)
  2. Vetva Core: obsahuje ArtifactConfig.cmake s implementovanými funkciami <name>_GetArtifactVersion a <name>_ArtifactInit
  3. Vetva Bin: obsahuje verzované ZIP archívy označené ako Bin/<version>-<platform>
  4. Pridajte ako submodul do tohto repozitára:
git submodule add -b Core https://github.com/Embedbits/Artifact-<name>.git <name>

Súvisiace repozitáre​


🧩 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í.