github GoogleContainerTools/kaniko v1.0.0

latest releases: v1.23.0, v1.22.0, v1.21.1...
3 years ago

This is the 25th release of Kaniko!
We are happy to announce the kaniko v1.0.0 release with a lot of performance optimizations.

  1. Make your builds 50% faster with a new snapshotMode --snapshotMode=redo for projects with a huge number of files.
  2. Make your builds 75% faster with the experimental --use-new-run flag.
    Below, is a graph on percentage decrease in build time compared to default --snaphotMode=full for different project sizes.
    image

SnaphotMode=redo

The snapshot mode redo is based on D. J. Bernstein's Redo tool
In this snapshot strategy, to detect file changes, unlike the Full Snapshot Modethe contents of the file are not hashed. Only the following Attributes of the files are hashed.

  • File Size,
  • File Mod Time
  • File Mode
  • File Group Id, UserId

Using redo snapshotter, reduced the build time from 30 mins to 12 mins about 56% improvement for a file system with 700K files
The time spent in computing hash for all the files in FS, reduced from 15 mins to mere 18 seconds.
Note: These are small text files and in full snapshot mode the time to hash a file depends on the file size which will further improve your build performance.

To use the new redo snapshotter add the following flag to kaniko command --snapshotMode=redo.

[Experimental] New Run command implementation.

This version comes with a newer implementation of Run command which does not rely on snapshotting at all.
In this approach, in order to compute which files were changed, Kaniko will walk the entire FS before and after executing the run Command.
Walking the entire filesystem takes about 1 to 3 seconds for 700K files which outweighs the time required to compute a large number of hash keys as file-system size increases.
With this new run command implementation, the total build time is reduced for 29 mins to 7 mins with a huge improvement of 75%
To use the new Run command implementation, use the --use-new-run=true flag.

Note: --use-new-run is experimental. For builds with a small number of files and number of Run commands, this might lead to performance degradation.
We are looking forward to hearing your feedback!

The executor images in this release are:

gcr.io/kaniko-project/executor:v1.0.0 and
gcr.io/kaniko-project/executor:latest

The debug image is available at:

gcr.io/kaniko-project/executor:debug-v1.0.0 and
gcr.io/kaniko-project/executor:debug

New features:

  • Specify advance options for git checkout branch. #1322
    • To specify a branch, use --git=branch=branchName
    • To specify an option to checkout a single branch, use --git=single-branch=true
    • To change submodule recursions behavior while cloning, use --git=recurse-submodules=true
  • Checkout a specific git commit #1153
  • Add ability to specify GIT_TOKEN for git source repository. #1318
  • The experimental --use-new-run flag avoid relying on timestamp. #1383

Bug Fixes:

  • Set correct PATH for exec form #1342
  • executor image: fix USER environment variable #1364
  • fix use new run marker #1379
  • Use current platform when fetching image in warmer #1374
  • Bump version number mismatch #1338
  • Bugfix: Reproducible layers with whiteout #1350
  • prepend image name when using registry-mirror so library/ is inferred #1264
  • Add command should fail on 40x when fetching remote file #1326

Refactors & Updates:

  • bump go-containerregistry dep #1371
  • feat: upgrade go-git #1319
  • Move snapshotPathPrefix into a method #1359

Documentation:

  • Added instructions to use gcr without kubernetes #1385
  • Format json & yaml in README #1358

Huge thank you for this release towards our contributors:

  • Alex Szakaly
  • Alexander Sharov
  • Anthony Davies
  • Art Begolli
  • Batuhan Apaydın
  • Ben Einaudi
  • Carlos Alexandro Becker
  • Carlos Sanchez
  • Chris Sng
  • Christopher Hlubek
  • Cole Wippern
  • Dani Raznikov
  • Daniel Marks
  • David Dooling
  • DracoBlue
  • Gabriel Virga
  • Gilbert Gilb's
  • Giovan Isa Musthofa
  • Gábor Lipták
  • Harmen Stoppels
  • James Ravn
  • Joe Kutner
  • Jon Henrik Bjørnstad
  • Jon Johnson
  • Jordan GOASDOUE
  • Jordan Goasdoue
  • Jordan Goasdoué
  • Josh Chorlton
  • Liubov Grinkevich
  • Logan.Price
  • Lukasz Jakimczuk
  • Mehdi Abaakouk
  • Michel Hollands
  • Mitchell Friedman
  • Moritz Wanzenböck
  • Or Sela
  • PhoenixMage
  • Pierre-Louis Bonicoli
  • Renato Suero
  • Sam Stoelinga
  • Shihab Hasan
  • Takumasa Sakao
  • Tejal Desai
  • Thomas Bonfort
  • Thomas Stromberg
  • Thomas Strömberg
  • Tom Prince
  • Vincent Latombe
  • Wietse Muizelaar
  • Yoan Blanc
  • Yoriyasu Yano
  • Yuheng Zhang
  • aca
  • cvgw
  • ohchang-kwon
  • priyawadhwa
  • tinkerborg
  • tsufeki
  • xanonid
  • yw-liu

Don't miss a new kaniko release

NewReleases is sending notifications on new releases.