Kaniko

Questa sezione non è stata ancora tradotta in inglese a causa della mancanza di tempo, ogni contributo è ben accetto! :)

Per usufruire del nuovo runner basta taggare il lo stage della propria CI con il tag kanikobuild. Tuttavia vi è una differenza fondamentale, il nuovo runner può usufruire di kaniko per buildare le immagini che poi andranno pushate su docker.repo.localmonks.net. Maggiori informazioni a https://github.com/GoogleContainerTools/kaniko

Repository

Le modifiche da apportare alla configurazione della repository sono descritte di seguito:

  • È necessario settare la variabile d’ambiente KANIKO_CACHE all’interno del progetto. La variabile KANIKO_CACHE può essere impostata con 2 possibili valori true o false.

Caution

la cache va impostata solo in determinati casi in cui le performance nella build sono un elemento cruciale, NON impostare la cache se utilizzate Dockerfile multi stage. Se siete indecisi impostate KANIKO_CACHE a false

CI

Le modifiche da apportare alla configurazione della CI sono descritte di seguito:

  • Modificare il tag dello stage a kanikopublish

  • Successivamente lo stage deve utilizzare l’immagine di kaniko docker.repo.localmonks.net/kaniko:v0.17.1-monk1

    • L’entrypoint dell’immagine deve essere impostato a [""] per evitare che venga lanciato il comando di default.

  • All’interno della sezione script: dello stage andrà aggiunto il comando per lanciare il builder kaniko:

/kaniko/executor --force --cache=${KANIKO_CACHE} \
    --cache-ttl=24h --cache-repo kaniko_cache_registry:443/kaniko_cache \
    --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/[path del Dockerfile nel progetto] \
    --destination <nome dell\'immagine da pushare> \
    --build-arg <parametro opzionale per aggiungere le variabili di ambiante durante la build>

Di seguito un esempio di uno stage di build modificato per utilizzare kaniko invece di docker build:

   stage: publish-image
   only:
     - /^v.*$/
+  image:
+    name: docker.repo.localmonks.net/kaniko:v0.17.1-monk1
+    entrypoint: [""]
   tags:
-    - dockerpublish
+    - kanikopublish
   when: manual
   script:
-    - docker image build . --tag docker.repo.localmonks.net/windy/webclient:${CI_COMMIT_TAG#v}-svil --build-arg BUILD_MODE=svil
-    - docker image push docker.repo.localmonks.net/windy/webclient:${CI_COMMIT_TAG#v}-svil
+    - "/kaniko/executor --force --cache=${KANIKO_CACHE} --cache-ttl=24h --cache-repo kaniko_cache_registry:443/kaniko_cache
+      --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile
+      --destination docker.repo.localmonks.net/windy/webclient:${CI_COMMIT_TAG#v}-svil
+      --build-arg BUILD_MODE=svil"