Image Builder
Pipeline CI/CD do budowania i publikowania obrazów kontenerów OCI przy użyciu buildah. Buduje obraz na podstawie deklaratywnego pliku config.yml i publikuje go do GitLab Container Registry.
Użycie
Section titled “Użycie”W projekcie dodaj do .gitlab-ci.yml:
Struktura projektu
Section titled “Struktura projektu”Wymagany plik config.yml w root repozytorium:
Joby i stagi
Section titled “Joby i stagi”Przepływ CI
Section titled “Przepływ CI”Przepływ CD (źródło: api/push/web)
Section titled “Przepływ CD (źródło: api/push/web)”Tabela jobów
Section titled “Tabela jobów”| Job | Nazwa emoji | Stage | CI | CD |
|---|---|---|---|---|
| versioning (Set Version) | 🕵 Set Version | .pre | ✅ | ✅ |
| environment-deployment-prepare | 🔧 Prepare Dynamic Deployment | .pre | ❌ | ✅ |
| conventional-commits | 🔍 Analyze Conventional Commits | validate | ✅ | ❌ |
| yamllint | 🕵 yamllint | validate | ✅* | ❌ |
| shellcheck | 🐚 shellcheck | validate | ✅* | ❌ |
| dependency | 📦 dependency | dependency | ❌ | ❌ |
| build | 🚀 build | build | ✅ | ❌ |
| trigger-deployment | 🚀 Trigger Deployment | deployment | ❌ | ✅ |
| deployment | 💥 deployment | deployment | ❌ | ❌** |
| unit-test | 🧪 unit-test | tests | ❌ | ❌ |
| publish | 🌐 publish | publish | ✅ | ❌ |
| versioning (Publish Version) | 📍 Publish Version | publish | ✅ | ❌ |
* tylko gdy zmienił się odpowiedni typ pliku względem main
** zdefiniowany ale zakomentowany w .gitlab-ci.yml
Image-builder-specyficzne joby
Section titled “Image-builder-specyficzne joby”🚀 build (build)
Section titled “🚀 build (build)”Buduje obraz OCI z pliku config.yml przy użyciu buildah. Etapy budowania:
- Uruchamia
before_build_commandsz config - Pobiera
base_imagei wykrywa rodzinę OS (debian/rhel/alpine) - Instaluje CA certificates
- Konfiguruje custom repozytoria (
custom_repos) - Instaluje pakiety (
packages) - Kopiuje pliki (
copy) - Ustawia zmienne środowiskowe (
env) - Tworzy użytkownika (
user) - Konfiguruje
entrypointicmd - Commituje obraz jako
$CI_REGISTRY_IMAGE:$RELEASE_CANDIDATE_VERSION - Eksportuje do pliku
container-image.tar(artefakt)
🌐 publish (publish)
Section titled “🌐 publish (publish)”Ładuje container-image.tar z artefaktu i publikuje do GitLab Container Registry:
Obraz publikowany jako $CI_REGISTRY_IMAGE:$RELEASE_CANDIDATE_VERSION.
Zmienne konfiguracyjne
Section titled “Zmienne konfiguracyjne”| Zmienna | Domyślna | Opis |
|---|---|---|
BUILDAH_CONFIG_FILE_PATH | config.yml | Ścieżka do pliku konfiguracji obrazu |
BUILDAH_STORAGE_ROOT | /tmp/buildah-root | Katalog główny storage buildah |
BUILDAH_STORAGE_RUNROOT | /tmp/buildah-runroot | Katalog run-root buildah |
Zmienne GitLab CI używane automatycznie: CI_REGISTRY, CI_REGISTRY_USER, CI_REGISTRY_PASSWORD, CI_REGISTRY_IMAGE, RELEASE_CANDIDATE_VERSION (z artefaktu Set Version).
Zależności 🌐 publish
Section titled “Zależności 🌐 publish”| Job | Wymagany |
|---|---|
🕵 Set Version | ✅ (artifacts) |
🚀 build | ✅ (artifacts — container-image.tar) |