From 8b60f302d9873bc4c376a93f5e30e828060e93ae Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Mon, 14 Jan 2019 19:39:52 -0800 Subject: [PATCH] Added PULL to the flow, now it fails if the image is not present --- src/docker/DockerApi.ts | 11 +++++++---- src/user/ImageMaker.ts | 25 ++++++++++++++++++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/docker/DockerApi.ts b/src/docker/DockerApi.ts index f58aa70..f7ac785 100644 --- a/src/docker/DockerApi.ts +++ b/src/docker/DockerApi.ts @@ -294,9 +294,13 @@ class DockerApi { }) } - pullImage(imageName: string, tag: string) { + pullImage(imageNameIncludingTag: string) { const self = this - tag = tag || 'latest' + + const nameAndTag = imageNameIncludingTag.split(':') + + const tag = nameAndTag[1] || 'latest' + const imageName = nameAndTag[0] return Promise.resolve() .then(function() { @@ -480,8 +484,7 @@ class DockerApi { return Promise.resolve() .then(function() { - const nameAndTag = imageName.split(':') - return self.pullImage(nameAndTag[0], nameAndTag[1] || 'latest') + return self.pullImage(imageName) }) .then(function() { return self.dockerode.createContainer({ diff --git a/src/user/ImageMaker.ts b/src/user/ImageMaker.ts index cd55efa..9af2320 100644 --- a/src/user/ImageMaker.ts +++ b/src/user/ImageMaker.ts @@ -128,12 +128,25 @@ export default class ImageMaker { captainDefinition.imageName }). Therefore, no build process is needed.` ) + self.buildLogs[appName].log( - `The app (${appName}) will be re-deployed with this image: ${ + `Pulling this image: ${ captainDefinition.imageName - }` + } This process might take a few minutes.` ) - return captainDefinition.imageName + '' + + const providedImageName = + captainDefinition.imageName + '' + + return Promise.resolve() // + .then(function() { + return self.dockerApi.pullImage( + providedImageName + ) + }) + .then(function() { + return providedImageName + }) } return self.getBuildPushAndReturnImageName( @@ -163,7 +176,7 @@ export default class ImageMaker { return fs .remove(baseDir) .then(function() { - throw new Error('ensure catch') + throw err }) .catch(function() { return Promise.reject(err) @@ -176,7 +189,7 @@ export default class ImageMaker { imageSource.uploadedTarPathSource.uploadedTarPath ) .then(function() { - throw new Error('ensure catch') + throw err }) .catch(function() { return Promise.reject(err) @@ -186,6 +199,7 @@ export default class ImageMaker { }) .then(function() { self.activeBuilds[appName] = false + self.buildLogs[appName].log(`Build has finished successfully!`) return { imageName: fullImageName, gitHash: gitHash, @@ -193,6 +207,7 @@ export default class ImageMaker { }) .catch(function(error) { self.activeBuilds[appName] = false + self.buildLogs[appName].log(`Build has failed!`) return Promise.reject(error) }) }