From e2948843c903b7b4a3770d6d4158794638231374 Mon Sep 17 00:00:00 2001 From: Destin Martin Date: Sun, 14 Nov 2021 15:01:26 -0600 Subject: [PATCH 1/2] Added overrideOptions --- src/docker/DockerApi.ts | 4 +++- src/utils/CaptainConstants.ts | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/docker/DockerApi.ts b/src/docker/DockerApi.ts index 79af80be7..400799390 100644 --- a/src/docker/DockerApi.ts +++ b/src/docker/DockerApi.ts @@ -243,7 +243,8 @@ class DockerApi { tarballFilePath: string, buildLogs: BuildLog, envVars: IAppEnvVar[], - registryConfig: DockerRegistryConfig + registryConfig: DockerRegistryConfig, + overrideOptions: String[] ) { const self = this @@ -268,6 +269,7 @@ class DockerApi { const optionsForBuild: Dockerode.ImageBuildOptions = { t: imageName, buildargs: buildargs, + overrideOptions: [...overrideOptions], } if (Object.keys(registryConfig).length > 0) { diff --git a/src/utils/CaptainConstants.ts b/src/utils/CaptainConstants.ts index ed3f31314..e523edd34 100644 --- a/src/utils/CaptainConstants.ts +++ b/src/utils/CaptainConstants.ts @@ -46,6 +46,8 @@ const configs = { defaultEmail: 'runner@caprover.com', captainSubDomain: 'captain', + + overrideOptions: [], } const data = { From b0c97c66db62cb59b81524856e3915553dcfd4d7 Mon Sep 17 00:00:00 2001 From: Destin Martin Date: Sun, 14 Nov 2021 17:45:41 -0600 Subject: [PATCH 2/2] Added requirements after testing locally --- package-lock.json | 1 + src/docker/DockerApi.ts | 4 ++-- src/models/AppDefinition.ts | 1 + src/user/ImageMaker.ts | 12 ++++++++---- src/user/ServiceManager.ts | 4 +++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58af2e475..5ac2beefa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "caprover", "version": "0.0.0", "dependencies": { "@types/bcryptjs": "^2.4.2", diff --git a/src/docker/DockerApi.ts b/src/docker/DockerApi.ts index 400799390..5a5bb121d 100644 --- a/src/docker/DockerApi.ts +++ b/src/docker/DockerApi.ts @@ -244,7 +244,7 @@ class DockerApi { buildLogs: BuildLog, envVars: IAppEnvVar[], registryConfig: DockerRegistryConfig, - overrideOptions: String[] + overrideOptions: string[] | undefined ) { const self = this @@ -269,7 +269,7 @@ class DockerApi { const optionsForBuild: Dockerode.ImageBuildOptions = { t: imageName, buildargs: buildargs, - overrideOptions: [...overrideOptions], + ...overrideOptions, } if (Object.keys(registryConfig).length > 0) { diff --git a/src/models/AppDefinition.ts b/src/models/AppDefinition.ts index cb849848f..4a8096ae9 100644 --- a/src/models/AppDefinition.ts +++ b/src/models/AppDefinition.ts @@ -92,6 +92,7 @@ interface IAppDef extends IAppDefinitionBase { httpAuth?: IHttpAuth appName?: string isAppBuilding?: boolean + overrideOptions?: string[] } interface IAppDefSaved extends IAppDefinitionBase { diff --git a/src/user/ImageMaker.ts b/src/user/ImageMaker.ts index 943f5b639..ad7912d59 100644 --- a/src/user/ImageMaker.ts +++ b/src/user/ImageMaker.ts @@ -92,7 +92,8 @@ export default class ImageMaker { appName: string, captainDefinitionRelativeFilePath: string, appVersion: number, - envVars: IAppEnvVar[] + envVars: IAppEnvVar[], + overrideOptions: string[] ): Promise { const self = this @@ -183,7 +184,8 @@ export default class ImageMaker { baseImageNameWithoutVerAndReg, appName, appVersion, - envVars + envVars, + overrideOptions ) }) }) @@ -245,7 +247,8 @@ export default class ImageMaker { baseImageNameWithoutVersionAndReg: string, appName: string, appVersion: number, - envVars: IAppEnvVar[] + envVars: IAppEnvVar[], + overrideOptions?: string[] ) { const self = this return Promise.resolve() // @@ -272,7 +275,8 @@ export default class ImageMaker { tarFilePath, self.buildLogsManager.getAppBuildLogs(appName), envVars, - registryConfig + registryConfig, + overrideOptions ) .catch(function (error: AnyError) { throw ApiStatusCodes.createError( diff --git a/src/user/ServiceManager.ts b/src/user/ServiceManager.ts index f61b60a21..ff58ee7a4 100644 --- a/src/user/ServiceManager.ts +++ b/src/user/ServiceManager.ts @@ -168,13 +168,15 @@ class ServiceManager { .getAppDefinition(appName) .then(function (app) { const envVars = app.envVars || [] + const overrideOptions = app.overrideOptions || [] return self.imageMaker.ensureImage( source, appName, app.captainDefinitionRelativeFilePath, appVersion, - envVars + envVars, + overrideOptions ) }) })