| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  | import * as plugins from "./npmci.plugins"; | 
					
						
							|  |  |  | import * as paths from "./npmci.paths"; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  | import * as NpmciEnv from "./npmci.env"; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:55:08 +02:00
										 |  |  | import {bashBare} from "./npmci.bash"; | 
					
						
							| 
									
										
										
										
											2016-06-06 20:30:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-04 18:41:35 +02:00
										 |  |  | export let build = function(){ | 
					
						
							| 
									
										
										
										
											2016-06-05 06:26:05 +02:00
										 |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     readDockerfiles() | 
					
						
							|  |  |  |         .then(sortDockerfiles) | 
					
						
							|  |  |  |         .then(mapDockerfiles) | 
					
						
							| 
									
										
										
										
											2016-06-05 16:43:27 +02:00
										 |  |  |         .then(buildDockerfiles) | 
					
						
							| 
									
										
										
										
											2016-06-05 17:17:15 +02:00
										 |  |  |         .then(pushDockerfiles) | 
					
						
							| 
									
										
										
										
											2016-06-05 16:43:27 +02:00
										 |  |  |         .then(() => { | 
					
						
							|  |  |  |             done.resolve(); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2016-06-04 18:41:35 +02:00
										 |  |  |     return done.promise; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  | export let readDockerfiles = function(){ | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |     let readDockerfilesArray:Dockerfile[] = [] | 
					
						
							|  |  |  |     plugins.gulp.src("./Dockerfile*") | 
					
						
							|  |  |  |         .pipe(plugins.through2.obj(function(file,enc,cb){ | 
					
						
							|  |  |  |             let myDockerfile = new Dockerfile({ | 
					
						
							|  |  |  |                 filePath:file.path, | 
					
						
							|  |  |  |                 read:true | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |             readDockerfilesArray.push(myDockerfile); | 
					
						
							|  |  |  |             cb(null,file); | 
					
						
							|  |  |  |          },function(){ | 
					
						
							|  |  |  |              done.resolve(readDockerfilesArray); | 
					
						
							|  |  |  |          })); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-05 01:22:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  | export let sortDockerfiles = function(sortableArrayArg:Dockerfile[]){ | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-07 06:05:13 +02:00
										 |  |  |     let sortedArray:Dockerfile[] = []; | 
					
						
							|  |  |  |     let cleanTagsOriginal = cleanTagsArrayFunction(sortableArrayArg,sortedArray); | 
					
						
							| 
									
										
										
										
											2016-06-05 11:08:20 +02:00
										 |  |  |     let sorterFunctionCounter:number = 0; | 
					
						
							|  |  |  |     let sorterFunction = function(){ | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  |         sortableArrayArg.forEach((dockerfileArg)=>{ | 
					
						
							| 
									
										
										
										
											2016-06-07 06:05:13 +02:00
										 |  |  |             let cleanTags = cleanTagsArrayFunction(sortableArrayArg,sortedArray); | 
					
						
							|  |  |  |             if(cleanTags.indexOf(dockerfileArg.baseImage) == -1 && sortedArray.indexOf(dockerfileArg) == -1){ | 
					
						
							| 
									
										
										
										
											2016-06-05 11:08:20 +02:00
										 |  |  |                 sortedArray.push(dockerfileArg); | 
					
						
							| 
									
										
										
										
											2016-06-07 06:05:13 +02:00
										 |  |  |             }; | 
					
						
							|  |  |  |             if(cleanTagsOriginal.indexOf(dockerfileArg.baseImage) != -1){ | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |                 dockerfileArg.localBaseImageDependent = true; | 
					
						
							|  |  |  |             }; | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2016-06-05 13:50:45 +02:00
										 |  |  |         if(sortableArrayArg.length == sortedArray.length){ | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  |             done.resolve(sortedArray); | 
					
						
							| 
									
										
										
										
											2016-06-05 13:50:45 +02:00
										 |  |  |         } else if (sorterFunctionCounter < 10) { | 
					
						
							| 
									
										
										
										
											2016-06-05 11:08:20 +02:00
										 |  |  |             sorterFunctionCounter++; | 
					
						
							|  |  |  |             sorterFunction(); | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sorterFunction(); | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export let mapDockerfiles = function(sortedArray:Dockerfile[]){ | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |     sortedArray.forEach((dockerfileArg) => { | 
					
						
							|  |  |  |         if(dockerfileArg.localBaseImageDependent){ | 
					
						
							|  |  |  |             sortedArray.forEach((dockfile2:Dockerfile) => { | 
					
						
							|  |  |  |                 if(dockfile2.cleanTag == dockerfileArg.baseImage){ | 
					
						
							|  |  |  |                     dockerfileArg.localBaseDockerfile = dockfile2; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     done.resolve(sortedArray); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  | export let buildDockerfiles = (sortedArrayArg:Dockerfile[]) => { | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     sortedArrayArg.forEach(function(dockerfileArg){ | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |         dockerfileArg.build(); | 
					
						
							|  |  |  |     }) | 
					
						
							| 
									
										
										
										
											2016-06-05 17:17:15 +02:00
										 |  |  |     done.resolve(sortedArrayArg); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export let pushDockerfiles = function(sortedArrayArg:Dockerfile[]){ | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |     sortedArrayArg.forEach(function(dockerfileArg){ | 
					
						
							|  |  |  |         dockerfileArg.push(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     done.resolve(sortedArrayArg); | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 05:16:14 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  | export let pullDockerfileImages = (sortableArrayArg:Dockerfile[]) => { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-07 04:31:25 +02:00
										 |  |  |     sortableArrayArg.forEach((dockerfileArg) => { | 
					
						
							|  |  |  |         dockerfileArg.pull(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     done.resolve(sortableArrayArg); | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |     return done.promise; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export let testDockerfiles = (sortedArrayArg:Dockerfile[]) => { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |     sortedArrayArg.forEach(function(dockerfileArg){ | 
					
						
							|  |  |  |         dockerfileArg.test(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     done.resolve(sortedArrayArg); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export let releaseDockerfiles = (sortedArrayArg:Dockerfile[]) => { | 
					
						
							|  |  |  |      let done = plugins.q.defer(); | 
					
						
							|  |  |  |     sortedArrayArg.forEach(function(dockerfileArg){ | 
					
						
							|  |  |  |         dockerfileArg.release(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     done.resolve(sortedArrayArg); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  | export class Dockerfile { | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |     filePath:string; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     repo:string; | 
					
						
							|  |  |  |     version:string; | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |     cleanTag:string; | 
					
						
							|  |  |  |     buildTag:string; | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |     releaseTag:string; | 
					
						
							|  |  |  |     containerName:string | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |     content:string; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     patchedContent:string; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     baseImage:string; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     localBaseImageDependent:boolean; | 
					
						
							|  |  |  |     localBaseDockerfile:Dockerfile; | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  |     constructor(options:{filePath?:string,fileContents?:string|Buffer,read?:boolean}){ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |         this.filePath = options.filePath; | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |         this.repo = NpmciEnv.repo.user + "/" + NpmciEnv.repo.repo; | 
					
						
							|  |  |  |         this.version = dockerFileVersion(plugins.path.parse(options.filePath).base); | 
					
						
							| 
									
										
										
										
											2016-06-05 06:20:05 +02:00
										 |  |  |         this.cleanTag = this.repo + ":" + this.version; | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |         this.buildTag = dockerTag(this.repo,this.version,"build"); | 
					
						
							|  |  |  |         this.releaseTag = dockerTag(this.repo,this.version,"release"); | 
					
						
							|  |  |  |         this.containerName = "dockerfile-" + this.version; | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  |         if(options.filePath && options.read){ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |             this.content = plugins.smartfile.local.toStringSync(plugins.path.resolve(options.filePath)); | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |         this.baseImage = dockerBaseImage(this.content); | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |         this.localBaseImageDependent = false; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  |     build(){ | 
					
						
							| 
									
										
										
										
											2016-06-07 06:35:10 +02:00
										 |  |  |         plugins.beautylog.info("now building Dockerfile for " + this.cleanTag); | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         let done = plugins.q.defer(); | 
					
						
							|  |  |  |         this.patchContents(); | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |         bashBare("docker build -t " + this.buildTag + " -f " + this.filePath + " ."); | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         NpmciEnv.dockerFilesBuilt.push(this); | 
					
						
							|  |  |  |         this.restoreContents(); | 
					
						
							|  |  |  |         done.resolve(); | 
					
						
							|  |  |  |         return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  |     push(){ | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |         if(this.buildTag){ | 
					
						
							| 
									
										
										
										
											2016-06-05 14:55:08 +02:00
										 |  |  |             bashBare("docker push " + this.buildTag); | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             plugins.beautylog.error("Dockerfile hasn't been built yet!"); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         done.resolve(); | 
					
						
							|  |  |  |         return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 02:17:55 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |     pull(){ | 
					
						
							|  |  |  |         bashBare("docker pull " + this.buildTag); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     test(){ | 
					
						
							| 
									
										
										
										
											2016-06-07 12:12:19 +02:00
										 |  |  |         let testFile:string = plugins.path.join(paths.NpmciTestDir,"test_" + this.version + ".sh"); | 
					
						
							|  |  |  |         let testFileExists:boolean = plugins.smartfile.checks.fileExistsSync(testFile); | 
					
						
							|  |  |  |         if(testFileExists){ | 
					
						
							|  |  |  |             bashBare("docker run --name npmci_test_container " + this.buildTag + " mkdir /npmci_test"); | 
					
						
							|  |  |  |             bashBare("docker cp " + testFile + " npmci_test_container:/npmci_test/test.sh"); | 
					
						
							|  |  |  |             bashBare("docker commit npmci_test_container npmci_test_image"); | 
					
						
							|  |  |  |             bashBare("docker run npmci_test_image sh /npmci_test/test.sh"); | 
					
						
							|  |  |  |             bashBare("docker rm npmci_test_container"); | 
					
						
							|  |  |  |             bashBare("docker rmi --force npmci_test_image"); | 
					
						
							| 
									
										
										
										
											2016-06-07 05:20:04 +02:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             plugins.beautylog.warn("skipping tests for " + this.cleanTag + " because no testfile was found!"); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  |     release(){ | 
					
						
							|  |  |  |         bashBare("docker tag " + this.getId() + " " + this.releaseTag); | 
					
						
							|  |  |  |         bashBare("docker push " + this.releaseTag); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     getId(){ | 
					
						
							| 
									
										
										
										
											2016-06-07 06:14:36 +02:00
										 |  |  |         let containerId = bashBare("docker inspect --type=image --format=\"{{.Id}}\" " + this.buildTag); | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |         return containerId; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     patchContents(){ | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         let done = plugins.q.defer(); | 
					
						
							|  |  |  |         if(this.localBaseImageDependent == true){ | 
					
						
							| 
									
										
										
										
											2016-06-07 06:35:10 +02:00
										 |  |  |             plugins.beautylog.info("patching Dockerfile due to local build dependency!"); | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |             this.patchedContent = this.content.replace(/FROM\s[a-zA-Z0-9\/\-\:]*/, 'FROM ' + this.localBaseDockerfile.buildTag); | 
					
						
							|  |  |  |             plugins.smartfile.memory.toFsSync( | 
					
						
							|  |  |  |                 this.patchedContent, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     fileName:plugins.path.parse(this.filePath).name, | 
					
						
							|  |  |  |                     filePath:plugins.path.parse(this.filePath).dir | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         done.resolve(); | 
					
						
							|  |  |  |         return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  |     restoreContents(){ | 
					
						
							| 
									
										
										
										
											2016-06-05 22:51:59 +02:00
										 |  |  |         let done = plugins.q.defer(); | 
					
						
							|  |  |  |         if(this.localBaseImageDependent == true){ | 
					
						
							|  |  |  |             plugins.smartfile.memory.toFsSync( | 
					
						
							|  |  |  |                 this.content, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     fileName:plugins.path.parse(this.filePath).name, | 
					
						
							|  |  |  |                     filePath:plugins.path.parse(this.filePath).dir | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         done.resolve(); | 
					
						
							|  |  |  |         return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  | export let dockerFileVersion = function(dockerfileNameArg:string):string{ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |     let versionString:string; | 
					
						
							|  |  |  |     let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/; | 
					
						
							|  |  |  |     let regexResultArray = versionRegex.exec(dockerfileNameArg); | 
					
						
							| 
									
										
										
										
											2016-06-05 08:06:32 +02:00
										 |  |  |     if(regexResultArray && regexResultArray.length == 2){ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |         versionString = regexResultArray[1];         | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     } else { | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |         versionString = "latest"; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |     return versionString; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-05 13:01:45 +02:00
										 |  |  | export let dockerBaseImage = function(dockerfileContentArg:string){ | 
					
						
							|  |  |  |     let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |     let regexResultArray = baseImageRegex.exec(dockerfileContentArg) | 
					
						
							|  |  |  |     return regexResultArray[1]; | 
					
						
							| 
									
										
										
										
											2016-06-05 01:31:21 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-05 01:22:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  | export let dockerTag = function(repoArg:string,versionArg:string,stageArg:string):string{ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |     let tagString:string; | 
					
						
							|  |  |  |     let registry = NpmciEnv.dockerRegistry; | 
					
						
							| 
									
										
										
										
											2016-06-07 03:57:43 +02:00
										 |  |  |     if(stageArg == "build"  || stageArg == "test"){ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |         registry = "registry.gitlab.com"; | 
					
						
							|  |  |  |     }  | 
					
						
							|  |  |  |     let repo = repoArg; | 
					
						
							|  |  |  |     let version = versionArg; | 
					
						
							| 
									
										
										
										
											2016-06-05 21:11:30 +02:00
										 |  |  |     if(NpmciEnv.buildStage == "build" || NpmciEnv.buildStage == "test"){ | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |         version = version + "_test"; | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-05 04:45:46 +02:00
										 |  |  |     tagString = registry + "/" + repo + ":" + version; | 
					
						
							|  |  |  |     return tagString; | 
					
						
							| 
									
										
										
										
											2016-06-05 04:19:54 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-06-05 14:27:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export let cleanTagsArrayFunction = function(dockerfileArrayArg:Dockerfile[],trackingArrayArg:Dockerfile[]):string[]{ | 
					
						
							|  |  |  |     let cleanTagsArray:string[] = []; | 
					
						
							|  |  |  |     dockerfileArrayArg.forEach(function(dockerfileArg){ | 
					
						
							|  |  |  |         if(trackingArrayArg.indexOf(dockerfileArg) == -1){ | 
					
						
							|  |  |  |             cleanTagsArray.push(dockerfileArg.cleanTag); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     return cleanTagsArray; | 
					
						
							|  |  |  | } |