From 691b933261808ddbdee0d34a52e4ef914a8d78fb Mon Sep 17 00:00:00 2001 From: David Dooling Date: Mon, 8 Apr 2019 08:14:03 -0500 Subject: [PATCH] Add builderPath option All user to supply optional builder path relative to project base directory for both docker and kaniko builds. Increment minor version since this is a new feature. Closes #42 --- lib/docker/executeDockerBuild.ts | 12 ++++++++++-- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/docker/executeDockerBuild.ts b/lib/docker/executeDockerBuild.ts index da622d9..58a0b69 100644 --- a/lib/docker/executeDockerBuild.ts +++ b/lib/docker/executeDockerBuild.ts @@ -95,6 +95,12 @@ export interface DockerOptions { * Optional arguments passed to the docker image builder */ builderArgs?: string[]; + + /** + * Path relative to base of project to build. If not provided, + * ".", i.e., the project base directory, is used. + */ + builderPath?: string; } export type DockerImageNameCreator = (p: GitProject, @@ -113,6 +119,7 @@ export function executeDockerBuild(options: DockerOptions): ExecuteGoal { const { goalEvent, context, project } = gi; const optsToUse = mergeOptions(options, {}, "docker.build"); + optsToUse.builderPath = (optsToUse.builderPath) ? optsToUse.builderPath : "."; switch (optsToUse.builder) { case "docker": @@ -141,7 +148,7 @@ export function executeDockerBuild(options: DockerOptions): ExecuteGoal { result = await gi.spawn( "docker", - ["build", "-f", dockerfilePath, ...tags, ...optsToUse.builderArgs, "."], + ["build", "-f", dockerfilePath, ...tags, ...optsToUse.builderArgs, optsToUse.builderPath], { env: { ...process.env, @@ -186,9 +193,10 @@ export function executeDockerBuild(options: DockerOptions): ExecuteGoal { builderArgs.push(`--cache-dir=${baseImageCache}`, "--cache=true"); } + const kanikoContext = `dir://${project.baseDir}` + ((optsToUse.builderPath === ".") ? "" : `/${optsToUse.builderPath}`); result = await gi.spawn( "/kaniko/executor", - ["--dockerfile", dockerfilePath, "--context", `dir://${project.baseDir}`, ..._.uniq(builderArgs)], + ["--dockerfile", dockerfilePath, "--context", kanikoContext, ..._.uniq(builderArgs)], { env: { ...process.env, diff --git a/package-lock.json b/package-lock.json index 547682b..43a49f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@atomist/sdm-pack-docker", - "version": "1.1.1", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 783e0a9..4195caf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@atomist/sdm-pack-docker", - "version": "1.1.1", + "version": "1.2.0", "description": "Extension Pack for an Atomist SDM to integrate Docker", "author": { "name": "Atomist",