Vytváření images
Pomocí GitLab CI je možné automatizovaně vytvářet kontejnerové (OCI) images a ty nahrávat do lokálního GitLab Container Registry.
Pro vytváření image doporučujeme použít nástroj buildah pomocí image ict/images/buildah viz Doporučený postup.
Doporučený postup
Připravili jsme pro vás image ict/images/buildah, který obsahuje nástroj buildah a některé kroky provede za vás, zároveň je průběžně aktualizovaný a oddělení ICT se stará o opravu potenciálch chyb mezi aktualziacemi.
Ukázka použití v .gitlab-ci.yml:
build:
image: $CI_REGISTRY/ict/images/buildah:latest 1
variables:
IMAGE_TAG: my-image:latest 2
script:
- buildah build --tag $IMAGE_TAG -f Containerfile 3
- buildah push $IMAGE_TAG $CI_REGISTRY_IMAGE/$IMAGE_TAG 4- Alpine Linux s předkonfigurovaným nástrojem buildah, který nastaví prostředí[1] a přihlásí vás do
$CI_REGISTRY. - Název vašeho nového image
- Příkaz, který sestaví váš image podle definice v souboru
Containerfile. Při použitíDockerfilelze smazat tento argument. - Příkaz, který pushne image do Container Registry aktuálního projektu.
Příklad souboru Containerfile:
# Create from Docker Hub image alpine:v3.23.
# This gets overridden in case of using 'buildah --from' argument
FROM alpine:3.23
# Install ca-certificates & curl
RUN apk update && apk add ca-certificates curl
# Set TimeZone variable to Europe/Prague
ENV TZ='Europe/Prague'
# set EU/Prague as localtime
RUN ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtimeObecný postup
Obecný postup (bez použití buildah image výše) je následující:
- Nainstalovat balíčky
buildah,fuse-overlayfsanetavark(Alpine v rámci minimalizace neinstaluje drivery pro síť a filesystem). - Nastavit proměnnou prostředí
BUILDAH_ISOLATION=chroot.[2] - Přihlásit se do GitLab registry:
buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY.- Pokud má být image stavěn pomocí image z Docker Hubu a projekt je ve skupině,
přihlásit se také k GitLab dependency proxy:
buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER.
- Pokud má být image stavěn pomocí image z Docker Hubu a projekt je ve skupině,
přihlásit se také k GitLab dependency proxy:
- Sestavit image, např.:
buildah build --tag pkg:stable, při použití dependency proxy lze přidat argument--from. - Nahrát image do Registry:
buildah push pkg:stable $CI_REGISTRY_IMAGE/pkg:stable.
Tipy
Spuštění příkazu v image
Pokud potřebujete image v rámci pipeline „spustit“ (tj. vytvořit z něj kontejner a v něm spustit příkaz), např. pro ověření funkčnosti, provedete to následovně:
ctr=$(buildah from $IMAGE_TAG)
buildah run $ctr -- command arg1 arg2 argn