Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 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", | ||||
|   "version": "3.1.43", | ||||
|   "version": "3.1.49", | ||||
|   "lockfileVersion": 1, | ||||
|   "requires": true, | ||||
|   "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": { | ||||
|       "version": "7.5.5", | ||||
|       "resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.5.5.tgz", | ||||
| @@ -152,9 +180,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@pushrocks/qenv": { | ||||
|       "version": "4.0.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fqenv/-/qenv-4.0.2.tgz", | ||||
|       "integrity": "sha512-ip/yN8etdy4lOTeNjU7dyKB8oN9eEZG3P/DhFYXDAgqEo0oDUUckEjGZadTLhjLw4wb/oQZqrZ/RjXwlCrBciQ==", | ||||
|       "version": "4.0.4", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fqenv/-/qenv-4.0.4.tgz", | ||||
|       "integrity": "sha512-nvgiY3u25mvi5wmVbEYfCDuBaz6pogwzKPxGaohMrIcNn/0MlXZ+JvkVHWK6CxExklSDbjSXsD7zfvme4GGA0g==", | ||||
|       "requires": { | ||||
|         "@pushrocks/smartfile": "^7.0.4", | ||||
|         "@pushrocks/smartlog": "^2.0.19" | ||||
| @@ -405,9 +433,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@pushrocks/smartshell": { | ||||
|       "version": "2.0.23", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.23.tgz", | ||||
|       "integrity": "sha512-+YXacX/sp4f+iBYm4vAoxrq/c8WCHnFhMaW66l3R08stl0eezW3SytoSlnr6R+JT1xqnBzIItDfCyyRC3uEVnw==", | ||||
|       "version": "2.0.25", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.25.tgz", | ||||
|       "integrity": "sha512-sYVHOhBRdr+CkjS+o1SDtB5058ZYxTPAYuexx2ydl2g+57KNdEcSRWN/2mOv5+NFH+tvvgtnUjC3AclC9CwJ4A==", | ||||
|       "requires": { | ||||
|         "@pushrocks/smartdelay": "^2.0.3", | ||||
|         "@pushrocks/smartexit": "^1.0.15", | ||||
| @@ -529,9 +557,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@servezone/servezone-interfaces": { | ||||
|       "version": "2.0.28", | ||||
|       "resolved": "https://verdaccio.lossless.one/@servezone%2fservezone-interfaces/-/servezone-interfaces-2.0.28.tgz", | ||||
|       "integrity": "sha512-mlXiiLhA8PF+sXczLzuGJSz0iPxdEDkU+hiR/Tw/QfCniLeHdJFgRW8RIJYAV2jhy0JMpHINP5Nqke0tt1lK1Q==" | ||||
|       "version": "2.0.29", | ||||
|       "resolved": "https://verdaccio.lossless.one/@servezone%2fservezone-interfaces/-/servezone-interfaces-2.0.29.tgz", | ||||
|       "integrity": "sha512-alXB2SFD+3tVxfC0Kd8NrHlr4WyB1hSg60ydHUvzJB30fUMKMX71UlWrITxORg8UXQQy1Kw9rhFhCXnq31xxSA==" | ||||
|     }, | ||||
|     "@types/body-parser": { | ||||
|       "version": "1.17.1", | ||||
| @@ -679,9 +707,9 @@ | ||||
|       "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" | ||||
|     }, | ||||
|     "@types/node": { | ||||
|       "version": "12.7.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.2.tgz", | ||||
|       "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==" | ||||
|       "version": "12.7.3", | ||||
|       "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.3.tgz", | ||||
|       "integrity": "sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ==" | ||||
|     }, | ||||
|     "@types/nodegit": { | ||||
|       "version": "0.24.10", | ||||
|   | ||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@shipzone/npmci", | ||||
|   "version": "3.1.43", | ||||
|   "version": "3.1.49", | ||||
|   "private": false, | ||||
|   "description": "node and docker in gitlab ci on steroids", | ||||
|   "main": "dist/index.js", | ||||
| @@ -28,15 +28,16 @@ | ||||
|     "@gitzone/tsrun": "^1.2.6", | ||||
|     "@gitzone/tstest": "^1.0.24", | ||||
|     "@pushrocks/tapbundle": "^3.0.13", | ||||
|     "@types/node": "^12.7.2", | ||||
|     "@types/node": "^12.7.3", | ||||
|     "tslint": "^5.19.0", | ||||
|     "tslint-config-prettier": "^1.18.0" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@apiglobal/typedrequest": "^1.0.17", | ||||
|     "@pushrocks/lik": "^3.0.11", | ||||
|     "@pushrocks/npmextra": "^3.0.5", | ||||
|     "@pushrocks/projectinfo": "^4.0.2", | ||||
|     "@pushrocks/qenv": "^4.0.2", | ||||
|     "@pushrocks/qenv": "^4.0.4", | ||||
|     "@pushrocks/smartanalytics": "^2.0.15", | ||||
|     "@pushrocks/smartcli": "^3.0.7", | ||||
|     "@pushrocks/smartdelay": "^2.0.3", | ||||
| @@ -47,11 +48,11 @@ | ||||
|     "@pushrocks/smartparam": "^1.0.4", | ||||
|     "@pushrocks/smartpromise": "^3.0.2", | ||||
|     "@pushrocks/smartrequest": "^1.1.23", | ||||
|     "@pushrocks/smartshell": "^2.0.23", | ||||
|     "@pushrocks/smartshell": "^2.0.25", | ||||
|     "@pushrocks/smartsocket": "^1.1.45", | ||||
|     "@pushrocks/smartssh": "^1.2.3", | ||||
|     "@pushrocks/smartstring": "^3.0.10", | ||||
|     "@servezone/servezone-interfaces": "^2.0.28", | ||||
|     "@servezone/servezone-interfaces": "^2.0.29", | ||||
|     "@types/shelljs": "^0.8.5", | ||||
|     "@types/through2": "^2.0.34", | ||||
|     "through2": "^3.0.1" | ||||
|   | ||||
| @@ -1,8 +1,30 @@ | ||||
| import * as plugins from '../npmci.plugins'; | ||||
|  | ||||
| import {Npmci} from '../npmci.classes.npmci'; | ||||
| import { logger } from '../npmci.logging'; | ||||
|  | ||||
| /** | ||||
|  * | ||||
|  * connects to cloudly | ||||
|  */ | ||||
| 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.` | ||||
|       ); | ||||
|     } | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * builds a cwd of Dockerfiles by triggering a promisechain | ||||
| @@ -62,7 +62,7 @@ export class NpmciDockerManager { | ||||
|       .then(Dockerfile.sortDockerfiles) | ||||
|       .then(Dockerfile.mapDockerfiles) | ||||
|       .then(Dockerfile.buildDockerfiles); | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * login to the DockerRegistries | ||||
| @@ -70,7 +70,7 @@ export class NpmciDockerManager { | ||||
|   public login = async () => { | ||||
|     await this.prepare(); | ||||
|     await this.npmciRegistryStorage.loginAll(); | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * logs in docker | ||||
| @@ -98,7 +98,7 @@ export class NpmciDockerManager { | ||||
|       } | ||||
|     ); | ||||
|     return; | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * pushes an image towards a registry | ||||
| @@ -146,7 +146,7 @@ export class NpmciDockerManager { | ||||
|         await dockerfile.push(dockerRegistryToPushTo, suffix); | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * pulls an image | ||||
| @@ -165,7 +165,7 @@ export class NpmciDockerManager { | ||||
|     for (const dockerfile of dockerfileArray) { | ||||
|       await dockerfile.pull(localDockerRegistry, suffix); | ||||
|     } | ||||
|   }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * tests docker files | ||||
| @@ -173,5 +173,5 @@ export class NpmciDockerManager { | ||||
|   public test = async () => { | ||||
|     await this.prepare(); | ||||
|     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); | ||||
|   }; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -214,6 +214,7 @@ export class Dockerfile { | ||||
|   public version: string; | ||||
|   public cleanTag: string; | ||||
|   public buildTag: string; | ||||
|   public pushTag: string; | ||||
|   public containerName: string; | ||||
|   public content: string; | ||||
|   public baseImage: string; | ||||
| @@ -248,7 +249,9 @@ export class Dockerfile { | ||||
|   public async build() { | ||||
|     logger.log('info', 'now building Dockerfile for ' + this.cleanTag); | ||||
|     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); | ||||
|     return; | ||||
|   } | ||||
| @@ -257,15 +260,26 @@ export class Dockerfile { | ||||
|    * pushes the Dockerfile to a registry | ||||
|    */ | ||||
|   public async push(dockerRegistryArg: DockerRegistry, versionSuffix: string = null) { | ||||
|     const pushTag = Dockerfile.getDockerTagString( | ||||
|     this.pushTag = Dockerfile.getDockerTagString( | ||||
|       this.npmciDockerManagerRef, | ||||
|       dockerRegistryArg.registryUrl, | ||||
|       this.repo, | ||||
|       this.version, | ||||
|       versionSuffix | ||||
|     ); | ||||
|     await bash(`docker tag ${this.buildTag} ${pushTag}`); | ||||
|     await bash(`docker push ${pushTag}`); | ||||
|     await bash(`docker tag ${this.buildTag} ${this.pushTag}`); | ||||
|     await bash(`docker push ${this.pushTag}`); | ||||
|     console.log('you can get the digest using this command'); | ||||
|     console.log(`docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}`); | ||||
|     const imageDigest = await bash( | ||||
|       `docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}` | ||||
|     ); | ||||
|     console.log(imageDigest); | ||||
|     await this.npmciDockerManagerRef.npmciRef.cloudlyConnector.announceDockerContainer({ | ||||
|       dockerImageUrl: this.pushTag, | ||||
|       dockerImageVersion: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo | ||||
|         .npm.version | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|   | ||||
| @@ -34,7 +34,7 @@ export class Npmci { | ||||
|       projectId: 'gitzone', | ||||
|       appName: 'npmci' | ||||
|     }); | ||||
|     this.cloudlyConnector = new CloudlyConnector(); | ||||
|     this.cloudlyConnector = new CloudlyConnector(this); | ||||
|     this.npmciEnv = new NpmciEnv(this); | ||||
|     this.npmciInfo = new NpmciInfo(this); | ||||
|     this.npmciCli = new NpmciCli(this); | ||||
|   | ||||
| @@ -3,6 +3,13 @@ import * as path from 'path'; | ||||
|  | ||||
| export { path }; | ||||
|  | ||||
| // @apiglobal | ||||
| import * as typedrequest from '@apiglobal/typedrequest'; | ||||
|  | ||||
| export { | ||||
|   typedrequest | ||||
| }; | ||||
|  | ||||
| // @servezone | ||||
| import * as servezoneInterfaces from '@servezone/servezone-interfaces'; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user