Neuigkeiten von trion.
Immer gut informiert.

Jib CLI als Build Container

Jib Logo

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.

Beispiel Drone YAML zum Build eines Angular Containers
---
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.

Feedback oder Fragen zu einem Artikel - per Twitter @triondevelop oder E-Mail freuen wir uns auf eine Kontaktaufnahme!

Los geht's!

Bitte teilen Sie uns mit, wie wir Sie am besten erreichen können.