Jib CLI als Build Container
Jib CLI als Build Container
Bereits in dem Beitrag Jib CLI Docker Images wurde das Potential von Jib CLI vorgestellt.
Als nächster Schritt soll Jib CLI auch in Build Pipelines eingesetzt werden, um auch hier ohne Docker Daemon Container Images bauen zu können.
Viele moderne Buildsysteme setzen selbst auf Docker Container zur Bereitstellung der auszuführenden Werkzeuge in einem Buildschritt. Verbreitete Beispiele sind GitLab CI und Drone CI.
Als Beispiel dient der Build einer Angular Webanwendung mit Angular CLI und Jib CLI.
Im ersten Schritt (build
) wird die Angular Anwendung übersetzt,
Dazu wird das Docker Image trion/ng-cli
verwendet, um das Angular CLI, Node und npm bereitzustellen.
Anschließend (publish
) kann das Jib CLI, bereitgestellt durch tiron/jib-cli
verwendet werden, um ein Docker Image zu erstellen und direkt in die Zielregistry zu pushen.
---
kind: pipeline
type: kubernetes
name: build-tasting
platform:
os: linux
arch: arm64
steps:
- name: build
image: trion/ng-cli
environment:
VERSION: "${DRONE_TAG}"
COMMIT: "${DRONE_COMMIT_SHA:0:7}"
resources:
requests:
cpu: 4
memory: 1512Mi
commands:
- "npm ci --prefer-offline"
- "ng build --prod --progress=false"
- name: publish
image: trion/jib-cli
resources:
requests:
cpu: 1
memory: 64Mi
commands:
- jib build --build-file=jib/jib.yaml --target=registry.example.com/demo/frontend:latest
- jib build --build-file=jib/jib.yaml --target=registry.example.com/demo/frontend:${DRONE_COMMIT_SHA:0:7}
Das vorgestellte Setup hat sich im Einsatz bereits bewährt.
Auch auf ARM64 bietet sich der Einsatz an.
Durch den gesparten zusätzlichen Docker Daemon benötigt das Setup weniger Ressourcen im Build.
Als kleiner Nachteil könnte der fehlende Docker Layer Cache bewertet werden:
Bei diesem Ansatz wird in jedem Build das gesamte Artefakt gebaut und dazu auch alle benötigten Libraries bezogen.
Hier kann jedoch durch Caching mit Mitteln des jeweiligen Buildsystems ein ähnlicher Effekt erzielt werden.
Zu den Themen Kubernetes, Docker und Cloud Architektur bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:
Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.