Compare commits
	
		
			15 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8979d26005 | |||
| c8876dac88 | |||
| 9c8a257c2a | |||
| 8b77930ece | |||
| ba672d030f | |||
| 8ad7e016e7 | |||
| d843311d7b | |||
| 14ef2cfa9b | |||
| 648effcf86 | |||
| 572738e88f | |||
| 129ae93044 | |||
| e910892231 | |||
| 6d9cabf7ee | |||
| 7c7787e811 | |||
| bde26cc312 | 
							
								
								
									
										54
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										54
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,37 @@ | |||||||
| { | { | ||||||
|   "name": "@shipzone/npmci", |   "name": "@shipzone/npmci", | ||||||
|   "version": "3.1.43", |   "version": "3.1.51", | ||||||
|   "lockfileVersion": 1, |   "lockfileVersion": 1, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "@apiglobal/typedrequest": { | ||||||
|  |       "version": "1.0.17", | ||||||
|  |       "resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest/-/typedrequest-1.0.17.tgz", | ||||||
|  |       "integrity": "sha512-p19ZOROh7+dsA00N3QFHCuyeUWarxpSVZxVJBI59LPnh6JlGE3ixQYpAEi+HJbsGfIEhuOBIJ6upN+0lnjH+fg==", | ||||||
|  |       "requires": { | ||||||
|  |         "@apiglobal/typedrequest-interfaces": "^1.0.7", | ||||||
|  |         "@pushrocks/lik": "^3.0.11", | ||||||
|  |         "@pushrocks/smartjson": "^3.0.8", | ||||||
|  |         "@pushrocks/smartrequest": "^1.1.23" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@pushrocks/smartjson": { | ||||||
|  |           "version": "3.0.8", | ||||||
|  |           "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-3.0.8.tgz", | ||||||
|  |           "integrity": "sha512-EjC3611RSZaZmK+nXxXrYDBxdxYWtrxjOrZtQzbYn0yM33KSCH0sLIAG8B2wYZVAOj4A2pC8mVxFSJ1w3iRFHg==", | ||||||
|  |           "requires": { | ||||||
|  |             "@types/fast-json-stable-stringify": "^2.0.0", | ||||||
|  |             "fast-json-stable-stringify": "^2.0.0", | ||||||
|  |             "lodash.clonedeep": "^4.5.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "@apiglobal/typedrequest-interfaces": { | ||||||
|  |       "version": "1.0.7", | ||||||
|  |       "resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest-interfaces/-/typedrequest-interfaces-1.0.7.tgz", | ||||||
|  |       "integrity": "sha512-yPl0UcLFMwSQL7bK52wVjkgvadC+x2YS3+7T15V1A1dXNxa96yd4WX1fqcKqwnBrvYexq/8FaxWGi98tZ0oNwg==" | ||||||
|  |     }, | ||||||
|     "@babel/code-frame": { |     "@babel/code-frame": { | ||||||
|       "version": "7.5.5", |       "version": "7.5.5", | ||||||
|       "resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.5.5.tgz", |       "resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.5.5.tgz", | ||||||
| @@ -152,9 +180,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@pushrocks/qenv": { |     "@pushrocks/qenv": { | ||||||
|       "version": "4.0.2", |       "version": "4.0.4", | ||||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fqenv/-/qenv-4.0.2.tgz", |       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fqenv/-/qenv-4.0.4.tgz", | ||||||
|       "integrity": "sha512-ip/yN8etdy4lOTeNjU7dyKB8oN9eEZG3P/DhFYXDAgqEo0oDUUckEjGZadTLhjLw4wb/oQZqrZ/RjXwlCrBciQ==", |       "integrity": "sha512-nvgiY3u25mvi5wmVbEYfCDuBaz6pogwzKPxGaohMrIcNn/0MlXZ+JvkVHWK6CxExklSDbjSXsD7zfvme4GGA0g==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@pushrocks/smartfile": "^7.0.4", |         "@pushrocks/smartfile": "^7.0.4", | ||||||
|         "@pushrocks/smartlog": "^2.0.19" |         "@pushrocks/smartlog": "^2.0.19" | ||||||
| @@ -405,9 +433,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@pushrocks/smartshell": { |     "@pushrocks/smartshell": { | ||||||
|       "version": "2.0.23", |       "version": "2.0.25", | ||||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.23.tgz", |       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.25.tgz", | ||||||
|       "integrity": "sha512-+YXacX/sp4f+iBYm4vAoxrq/c8WCHnFhMaW66l3R08stl0eezW3SytoSlnr6R+JT1xqnBzIItDfCyyRC3uEVnw==", |       "integrity": "sha512-sYVHOhBRdr+CkjS+o1SDtB5058ZYxTPAYuexx2ydl2g+57KNdEcSRWN/2mOv5+NFH+tvvgtnUjC3AclC9CwJ4A==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@pushrocks/smartdelay": "^2.0.3", |         "@pushrocks/smartdelay": "^2.0.3", | ||||||
|         "@pushrocks/smartexit": "^1.0.15", |         "@pushrocks/smartexit": "^1.0.15", | ||||||
| @@ -529,9 +557,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@servezone/servezone-interfaces": { |     "@servezone/servezone-interfaces": { | ||||||
|       "version": "2.0.28", |       "version": "2.0.29", | ||||||
|       "resolved": "https://verdaccio.lossless.one/@servezone%2fservezone-interfaces/-/servezone-interfaces-2.0.28.tgz", |       "resolved": "https://verdaccio.lossless.one/@servezone%2fservezone-interfaces/-/servezone-interfaces-2.0.29.tgz", | ||||||
|       "integrity": "sha512-mlXiiLhA8PF+sXczLzuGJSz0iPxdEDkU+hiR/Tw/QfCniLeHdJFgRW8RIJYAV2jhy0JMpHINP5Nqke0tt1lK1Q==" |       "integrity": "sha512-alXB2SFD+3tVxfC0Kd8NrHlr4WyB1hSg60ydHUvzJB30fUMKMX71UlWrITxORg8UXQQy1Kw9rhFhCXnq31xxSA==" | ||||||
|     }, |     }, | ||||||
|     "@types/body-parser": { |     "@types/body-parser": { | ||||||
|       "version": "1.17.1", |       "version": "1.17.1", | ||||||
| @@ -679,9 +707,9 @@ | |||||||
|       "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" |       "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" | ||||||
|     }, |     }, | ||||||
|     "@types/node": { |     "@types/node": { | ||||||
|       "version": "12.7.2", |       "version": "12.7.3", | ||||||
|       "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.2.tgz", |       "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.3.tgz", | ||||||
|       "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==" |       "integrity": "sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ==" | ||||||
|     }, |     }, | ||||||
|     "@types/nodegit": { |     "@types/nodegit": { | ||||||
|       "version": "0.24.10", |       "version": "0.24.10", | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@shipzone/npmci", |   "name": "@shipzone/npmci", | ||||||
|   "version": "3.1.43", |   "version": "3.1.51", | ||||||
|   "private": false, |   "private": false, | ||||||
|   "description": "node and docker in gitlab ci on steroids", |   "description": "node and docker in gitlab ci on steroids", | ||||||
|   "main": "dist/index.js", |   "main": "dist/index.js", | ||||||
| @@ -28,15 +28,16 @@ | |||||||
|     "@gitzone/tsrun": "^1.2.6", |     "@gitzone/tsrun": "^1.2.6", | ||||||
|     "@gitzone/tstest": "^1.0.24", |     "@gitzone/tstest": "^1.0.24", | ||||||
|     "@pushrocks/tapbundle": "^3.0.13", |     "@pushrocks/tapbundle": "^3.0.13", | ||||||
|     "@types/node": "^12.7.2", |     "@types/node": "^12.7.3", | ||||||
|     "tslint": "^5.19.0", |     "tslint": "^5.19.0", | ||||||
|     "tslint-config-prettier": "^1.18.0" |     "tslint-config-prettier": "^1.18.0" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "@apiglobal/typedrequest": "^1.0.17", | ||||||
|     "@pushrocks/lik": "^3.0.11", |     "@pushrocks/lik": "^3.0.11", | ||||||
|     "@pushrocks/npmextra": "^3.0.5", |     "@pushrocks/npmextra": "^3.0.5", | ||||||
|     "@pushrocks/projectinfo": "^4.0.2", |     "@pushrocks/projectinfo": "^4.0.2", | ||||||
|     "@pushrocks/qenv": "^4.0.2", |     "@pushrocks/qenv": "^4.0.4", | ||||||
|     "@pushrocks/smartanalytics": "^2.0.15", |     "@pushrocks/smartanalytics": "^2.0.15", | ||||||
|     "@pushrocks/smartcli": "^3.0.7", |     "@pushrocks/smartcli": "^3.0.7", | ||||||
|     "@pushrocks/smartdelay": "^2.0.3", |     "@pushrocks/smartdelay": "^2.0.3", | ||||||
| @@ -47,11 +48,11 @@ | |||||||
|     "@pushrocks/smartparam": "^1.0.4", |     "@pushrocks/smartparam": "^1.0.4", | ||||||
|     "@pushrocks/smartpromise": "^3.0.2", |     "@pushrocks/smartpromise": "^3.0.2", | ||||||
|     "@pushrocks/smartrequest": "^1.1.23", |     "@pushrocks/smartrequest": "^1.1.23", | ||||||
|     "@pushrocks/smartshell": "^2.0.23", |     "@pushrocks/smartshell": "^2.0.25", | ||||||
|     "@pushrocks/smartsocket": "^1.1.45", |     "@pushrocks/smartsocket": "^1.1.45", | ||||||
|     "@pushrocks/smartssh": "^1.2.3", |     "@pushrocks/smartssh": "^1.2.3", | ||||||
|     "@pushrocks/smartstring": "^3.0.10", |     "@pushrocks/smartstring": "^3.0.10", | ||||||
|     "@servezone/servezone-interfaces": "^2.0.28", |     "@servezone/servezone-interfaces": "^2.0.29", | ||||||
|     "@types/shelljs": "^0.8.5", |     "@types/shelljs": "^0.8.5", | ||||||
|     "@types/through2": "^2.0.34", |     "@types/through2": "^2.0.34", | ||||||
|     "through2": "^3.0.1" |     "through2": "^3.0.1" | ||||||
|   | |||||||
| @@ -1,8 +1,30 @@ | |||||||
| import * as plugins from '../npmci.plugins'; | import * as plugins from '../npmci.plugins'; | ||||||
|  |  | ||||||
|  | import {Npmci} from '../npmci.classes.npmci'; | ||||||
|  | import { logger } from '../npmci.logging'; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * |  * connects to cloudly | ||||||
|  */ |  */ | ||||||
| export class CloudlyConnector { | export class CloudlyConnector { | ||||||
|   public announceDockerContainer(options: plugins.servezoneInterfaces.IVersionData) {} |   public npmciRef: Npmci; | ||||||
|  |  | ||||||
|  |   constructor(npmciRefArg: Npmci) { | ||||||
|  |     this.npmciRef = npmciRefArg; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   public async announceDockerContainer(optionsArg: plugins.servezoneInterfaces.IVersionData) { | ||||||
|  |     const cloudlyUrl = this.npmciRef.npmciConfig.getConfig().urlCloudly; | ||||||
|  |     if (!cloudlyUrl) { | ||||||
|  |       logger.log('warn', 'no cloudly url provided. Thus we cannot announce the newly built Dockerimage!'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     const typedrequest = new plugins.typedrequest.TypedRequest< | ||||||
|  |       plugins.servezoneInterfaces.IRequest_Any_Cloudly_VersionManager_Update | ||||||
|  |     >(`https://${cloudlyUrl}/versionmanager`, 'update'); | ||||||
|  |  | ||||||
|  |     const response = (await typedrequest.fire(optionsArg)); | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ export class NpmciDockerManager { | |||||||
|         `>>npmci docker ...<< cli arguments invalid... Please read the documentation.` |         `>>npmci docker ...<< cli arguments invalid... Please read the documentation.` | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * builds a cwd of Dockerfiles by triggering a promisechain |    * builds a cwd of Dockerfiles by triggering a promisechain | ||||||
| @@ -62,7 +62,7 @@ export class NpmciDockerManager { | |||||||
|       .then(Dockerfile.sortDockerfiles) |       .then(Dockerfile.sortDockerfiles) | ||||||
|       .then(Dockerfile.mapDockerfiles) |       .then(Dockerfile.mapDockerfiles) | ||||||
|       .then(Dockerfile.buildDockerfiles); |       .then(Dockerfile.buildDockerfiles); | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * login to the DockerRegistries |    * login to the DockerRegistries | ||||||
| @@ -70,7 +70,7 @@ export class NpmciDockerManager { | |||||||
|   public login = async () => { |   public login = async () => { | ||||||
|     await this.prepare(); |     await this.prepare(); | ||||||
|     await this.npmciRegistryStorage.loginAll(); |     await this.npmciRegistryStorage.loginAll(); | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * logs in docker |    * logs in docker | ||||||
| @@ -98,7 +98,7 @@ export class NpmciDockerManager { | |||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|     return; |     return; | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * pushes an image towards a registry |    * pushes an image towards a registry | ||||||
| @@ -146,7 +146,7 @@ export class NpmciDockerManager { | |||||||
|         await dockerfile.push(dockerRegistryToPushTo, suffix); |         await dockerfile.push(dockerRegistryToPushTo, suffix); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * pulls an image |    * pulls an image | ||||||
| @@ -165,7 +165,7 @@ export class NpmciDockerManager { | |||||||
|     for (const dockerfile of dockerfileArray) { |     for (const dockerfile of dockerfileArray) { | ||||||
|       await dockerfile.pull(localDockerRegistry, suffix); |       await dockerfile.pull(localDockerRegistry, suffix); | ||||||
|     } |     } | ||||||
|   }; |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * tests docker files |    * tests docker files | ||||||
| @@ -173,5 +173,5 @@ export class NpmciDockerManager { | |||||||
|   public test = async () => { |   public test = async () => { | ||||||
|     await this.prepare(); |     await this.prepare(); | ||||||
|     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); |     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); | ||||||
|   }; |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -214,6 +214,7 @@ export class Dockerfile { | |||||||
|   public version: string; |   public version: string; | ||||||
|   public cleanTag: string; |   public cleanTag: string; | ||||||
|   public buildTag: string; |   public buildTag: string; | ||||||
|  |   public pushTag: string; | ||||||
|   public containerName: string; |   public containerName: string; | ||||||
|   public content: string; |   public content: string; | ||||||
|   public baseImage: string; |   public baseImage: string; | ||||||
| @@ -248,7 +249,9 @@ export class Dockerfile { | |||||||
|   public async build() { |   public async build() { | ||||||
|     logger.log('info', 'now building Dockerfile for ' + this.cleanTag); |     logger.log('info', 'now building Dockerfile for ' + this.cleanTag); | ||||||
|     const buildArgsString = await Dockerfile.getDockerBuildArgs(this.npmciDockerManagerRef); |     const buildArgsString = await Dockerfile.getDockerBuildArgs(this.npmciDockerManagerRef); | ||||||
|     const buildCommand = `docker build -t ${this.buildTag} -f ${this.filePath} ${buildArgsString} .`; |     const buildCommand = `docker build --label="version=${ | ||||||
|  |       this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version | ||||||
|  |     }" -t ${this.buildTag} -f ${this.filePath} ${buildArgsString} .`; | ||||||
|     await bash(buildCommand); |     await bash(buildCommand); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| @@ -257,15 +260,24 @@ export class Dockerfile { | |||||||
|    * pushes the Dockerfile to a registry |    * pushes the Dockerfile to a registry | ||||||
|    */ |    */ | ||||||
|   public async push(dockerRegistryArg: DockerRegistry, versionSuffix: string = null) { |   public async push(dockerRegistryArg: DockerRegistry, versionSuffix: string = null) { | ||||||
|     const pushTag = Dockerfile.getDockerTagString( |     this.pushTag = Dockerfile.getDockerTagString( | ||||||
|       this.npmciDockerManagerRef, |       this.npmciDockerManagerRef, | ||||||
|       dockerRegistryArg.registryUrl, |       dockerRegistryArg.registryUrl, | ||||||
|       this.repo, |       this.repo, | ||||||
|       this.version, |       this.version, | ||||||
|       versionSuffix |       versionSuffix | ||||||
|     ); |     ); | ||||||
|     await bash(`docker tag ${this.buildTag} ${pushTag}`); |     await bash(`docker tag ${this.buildTag} ${this.pushTag}`); | ||||||
|     await bash(`docker push ${pushTag}`); |     await bash(`docker push ${this.pushTag}`); | ||||||
|  |     const imageDigest = (await bash( | ||||||
|  |       `docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}` | ||||||
|  |     )).split('@')[1]; | ||||||
|  |     console.log(`The image ${this.pushTag} has digest ${imageDigest}`); | ||||||
|  |     await this.npmciDockerManagerRef.npmciRef.cloudlyConnector.announceDockerContainer({ | ||||||
|  |       dockerImageUrl: this.pushTag, | ||||||
|  |       dockerImageVersion: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo | ||||||
|  |         .npm.version | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|   | |||||||
| @@ -50,6 +50,7 @@ export class NpmciGitManager { | |||||||
|       // plugins.smartgit.GitRepo; |       // plugins.smartgit.GitRepo; | ||||||
|  |  | ||||||
|       // add the mirror |       // add the mirror | ||||||
|  |       console.log(`git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git`); | ||||||
|       await bash( |       await bash( | ||||||
|         `git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git` |         `git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git` | ||||||
|       ); |       ); | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ export class Npmci { | |||||||
|       projectId: 'gitzone', |       projectId: 'gitzone', | ||||||
|       appName: 'npmci' |       appName: 'npmci' | ||||||
|     }); |     }); | ||||||
|     this.cloudlyConnector = new CloudlyConnector(); |     this.cloudlyConnector = new CloudlyConnector(this); | ||||||
|     this.npmciEnv = new NpmciEnv(this); |     this.npmciEnv = new NpmciEnv(this); | ||||||
|     this.npmciInfo = new NpmciInfo(this); |     this.npmciInfo = new NpmciInfo(this); | ||||||
|     this.npmciCli = new NpmciCli(this); |     this.npmciCli = new NpmciCli(this); | ||||||
|   | |||||||
| @@ -3,6 +3,13 @@ import * as path from 'path'; | |||||||
|  |  | ||||||
| export { path }; | export { path }; | ||||||
|  |  | ||||||
|  | // @apiglobal | ||||||
|  | import * as typedrequest from '@apiglobal/typedrequest'; | ||||||
|  |  | ||||||
|  | export { | ||||||
|  |   typedrequest | ||||||
|  | }; | ||||||
|  |  | ||||||
| // @servezone | // @servezone | ||||||
| import * as servezoneInterfaces from '@servezone/servezone-interfaces'; | import * as servezoneInterfaces from '@servezone/servezone-interfaces'; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user