Add support for scratch images, and integration test

This commit is contained in:
Priya Wadhwa 2018-04-12 14:46:33 -07:00
parent 0fd35166a3
commit d38319c416
No known key found for this signature in database
GPG Key ID: 0D0DAFD8F7AA73AE
7 changed files with 42 additions and 7 deletions

View File

@ -0,0 +1,4 @@
FROM scratch
ADD context/foo /foo
ENV hello hello
ADD context/foo /$hello

View File

@ -1,7 +1,7 @@
[
{
"Image1": "gcr.io/kbuild-test/docker-test-registry:latest",
"Image2": "gcr.io/kbuild-test/kbuild-test-registry:latest",
"Image1": "gcr.io/kaniko-test/docker-test-registry:latest",
"Image2": "gcr.io/kaniko-test/kaniko-test-registry:latest",
"DiffType": "File",
"Diff": {
"Adds": null,

View File

@ -0,0 +1,12 @@
[
{
"Image1": "gcr.io/kaniko-test/docker-test-scratch:latest",
"Image2": "gcr.io/kaniko-test/kaniko-test-scratch:latest",
"DiffType": "File",
"Diff": {
"Adds": null,
"Dels": null,
"Mods": null
}
}
]

View File

@ -127,6 +127,14 @@ var fileTests = []struct {
kanikoContext: buildcontextPath,
repo: "test-onbuild",
},
{
description: "test scratch",
dockerfilePath: "/workspace/integration_tests/dockerfiles/Dockerfile_test_scratch",
configPath: "/workspace/integration_tests/dockerfiles/config_test_scratch.json",
dockerContext: buildcontextPath,
kanikoContext: buildcontextPath,
repo: "test-scratch",
},
}
var structureTests = []struct {

View File

@ -39,4 +39,7 @@ const (
// BuildContextDir is the directory a build context will be unpacked into,
// for example, a tarball from a GCS bucket will be unpacked here
BuildContextDir = "/kaniko/buildcontext/"
// NoBaseImage is the scratch image
NoBaseImage = "scratch"
)

View File

@ -18,6 +18,7 @@ package image
import (
img "github.com/GoogleCloudPlatform/container-diff/pkg/image"
"github.com/GoogleCloudPlatform/k8s-container-builder/pkg/constants"
"github.com/containers/image/copy"
"github.com/containers/image/docker"
"github.com/containers/image/signature"
@ -30,6 +31,9 @@ import (
// InitializeSourceImage initializes the source image with the base image
func NewSourceImage(srcImg string) (*img.MutableSource, error) {
if srcImg == constants.NoBaseImage {
return img.NewMutableSource(nil)
}
logrus.Infof("Initializing source image %s", srcImg)
ref, err := docker.ParseReference("//" + srcImg)
if err != nil {

View File

@ -35,6 +35,15 @@ var volumeWhitelist = []string{}
// ExtractFileSystemFromImage pulls an image and unpacks it to a file system at root
func ExtractFileSystemFromImage(img string) error {
whitelist, err := fileSystemWhitelist(constants.WhitelistPath)
if err != nil {
return err
}
logrus.Infof("Whitelisted directories are %s", whitelist)
if img == constants.NoBaseImage {
logrus.Info("No base image, nothing to extract")
return nil
}
ref, err := docker.ParseReference("//" + img)
if err != nil {
return err
@ -43,11 +52,6 @@ func ExtractFileSystemFromImage(img string) error {
if err != nil {
return err
}
whitelist, err := fileSystemWhitelist(constants.WhitelistPath)
if err != nil {
return err
}
logrus.Infof("Whitelisted directories are %s", whitelist)
return pkgutil.GetFileSystemFromReference(ref, imgSrc, constants.RootDir, whitelist)
}