Přeskočit na hlavní obsah

Přehled artefaktů

Tento repozitář slouží jako centrální hub artefaktů pro build nástroje, generátory dokumentace a další externí závislosti používané napříč více embedded projekty.

Každý artefakt (např. GCC, Doxygen, Cppcheck) je spravován jako samostatný Git submodul, což umožňuje sledování verzí a modulární aktualizace a zároveň udržuje hlavní repozitáře lehké.


🧱 Účel​

Cílem tohoto repozitáře je:

  • Udržovat jediný přístupový bod ke sdíleným build závislostem
  • Umožnit verzovanou správu artefaktů napříč projekty
  • Podporovat automatické stahování a rozbalování pomocí CMake nebo Azure pipelines
  • Omezit závislost na externích stahováních při CI/CD buildech

Dostupné artefakty​

ArtefaktRepozitářPopis
gccArtifact-gccToolchain kompilátoru GCC
gcc-arm-none-eabiArtifact-gcc-arm-none-eabiToolchain GCC ARM pro bare-metal
ninjaArtifact-ninjaBuild systém Ninja
doxygenArtifact-ninjaNástroj pro generování dokumentace Doxygen

Struktura repozitáře​

Každý podadresář představuje samostatný repozitář artefaktu.

Artifacts/
├─ gcc/ # GCC toolchain (as submodule)
├─ doxygen/ # Doxygen generator (as submodule)
├─ cppcheck/ # Static analysis tool (as submodule)
└─ ...

Struktura artefaktu​

Každý repozitář artefaktu se řídí jednotnou konvencí tří větví:

Artifact-<name>/
├── main # Default branch, documentation and general information
├── Core # CMake integration layer (ArtifactConfig.cmake)
└── Bin # Binary releases as ZIP archives

Větev Core​

Obsahuje ArtifactConfig.cmake — integrační soubor CMake pro daný artefakt. Zpřístupňuje dvě povinné funkce, které musí implementovat každý artefakt:

FunkceSignaturaPopis
<name>_GetArtifactVersion(<name>_GetArtifactVersion RET_VERSION)Vrací nainstalovanou verzi artefaktu ve formátu X.Y.Z
<name>_ArtifactInit(<name>_ArtifactInit)Inicializuje artefakt pro použití v buildu (nastaví PATH, proměnné CMake atd.)

Poznámka: Prefix funkce se musí přesně shodovat s názvem složky artefaktu (názvem adresáře submodulu). Build proces se na tuto konvenci pojmenování spoléhá při vyhledávání a volání správných funkcí.

Commity ve větvi Core jsou verzované — každý commit odpovídá konkrétní verzi integrační vrstvy CMake.

Větev Bin​

Obsahuje verzovaná binární vydání artefaktu. Každý commit obsahuje ZIP archiv s předkompilovanými binárkami pro podporované platformy spolu se souborem s kontrolním součtem SHA-256.

Vydání jsou označována tagy ve formátu:

Bin/<version>-<platform>

Například: Bin/1.12.1-linux, Bin/1.12.1-windows

Použití​

Klonování se submoduly​

Jak snížit velikost repozitáře při stahování artefaktů:

git clone --no-checkout --depth=1 https://github.com/YourOrg/Artifacts.git

Jednotlivé submoduly lze stáhnout na vyžádání, až když jsou potřeba:

git -C Artifacts submodule update --init --depth=1 gcc

Integrace s CMake​

Každý adresář submodulu artefaktu obsahuje soubor ArtifactConfig.cmake (pocházející z větve Core). Vložte ho do svého 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}")

Příklad s Ninja:

include(${ARTIFACTS_DIR}/ninja/ArtifactConfig.cmake)

ninja_ArtifactInit()

ninja_GetArtifactVersion(NINJA_VERSION)
message(STATUS "Ninja version: ${NINJA_VERSION}")

Přidání nového artefaktu​

Repozitář nového artefaktu musí dodržovat tuto strukturu:

  1. Název repozitáře: Artifact-<name> (např. Artifact-cmake)
  2. Větev Core: obsahuje ArtifactConfig.cmake s implementovanými funkcemi <name>_GetArtifactVersion a <name>_ArtifactInit
  3. Větev Bin: obsahuje verzované ZIP archivy označené tagy Bin/<version>-<platform>
  4. Přidejte jako submodul do tohoto repozitáře:
git submodule add -b Core https://github.com/Embedbits/Artifact-<name>.git <name>

Související repozitáře​


🧩 Integrace s CI/CD​

Tento repozitář je navržen pro automatizované použití v CI prostředích, jako jsou Azure DevOps nebo GitHub Actions.

Příklad použití 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 lze verzovat a aktualizovat nezávisle
  • Pro zajištění integrity artefaktů se doporučují hash soubory (.hash)
  • Neukládejte velké binárky přímo do commitů; používejte pouze komprimované archivy
  • Hlavní repozitář (Artifacts) nikdy neobsahuje zdrojové kódy nástrojů přímo — pouze odkazy

🏷 Licence​

Všechny submoduly artefaktů si ponechávají své vlastní licence.
Tento nadřazený repozitář pouze koordinuje jejich zahrnutí a sledování verzí.