Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f4d8656831 | |||
| 2290081ef0 | |||
| 189d02a16f | |||
| 55aee04334 | |||
| 0e407b9b9d | |||
| 24095bbd40 | |||
| f97ee94b5a | |||
| 4cf7aea374 | |||
| 6ab5e9cb30 | |||
| 95c1145bf5 | |||
| ea04a1b788 | |||
| 3bc2499d09 | |||
| 1f5967ac45 | |||
| fd952f086b | |||
| 79500cb2c2 | |||
| 6c58864fcf | |||
| 7ea3ac182d | |||
| 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.60",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@apiglobal/typedrequest": {
|
||||||
|
"version": "1.0.24",
|
||||||
|
"resolved": "https://registry.npmjs.org/@apiglobal/typedrequest/-/typedrequest-1.0.24.tgz",
|
||||||
|
"integrity": "sha512-OjjyijgD1u4Opus3rZDKzrVcNu2HtQ+lNCjZmqLJHn5E1LKFC4ZD3BBFv/EKmmmtb3YVMAQRXd29DK8dcBlFwA==",
|
||||||
|
"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://registry.npmjs.org/@pushrocks/smartjson/-/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://registry.npmjs.org/@apiglobal/typedrequest-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",
|
||||||
|
|||||||
15
package.json
15
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@shipzone/npmci",
|
"name": "@shipzone/npmci",
|
||||||
"version": "3.1.43",
|
"version": "3.1.60",
|
||||||
"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",
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
"npmci": "cli.js"
|
"npmci": "cli.js"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(rm -f config.json) && tstest test/",
|
"test": "tstest test/",
|
||||||
"build": "(rm -f config.json) && tsbuild && (npm run testVersion)",
|
"build": "tsbuild && (npm run testVersion)",
|
||||||
"testVersion": "(cd test/assets/ && node ../../cli.js -v)"
|
"testVersion": "(cd test/assets/ && node ../../cli.js -v)"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -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.24",
|
||||||
"@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,32 @@
|
|||||||
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export class NpmciGitManager {
|
|||||||
public mirror = async () => {
|
public mirror = async () => {
|
||||||
const githubToken = process.env.NPMCI_GIT_GITHUBTOKEN;
|
const githubToken = process.env.NPMCI_GIT_GITHUBTOKEN;
|
||||||
const githubUser = process.env.NPMCI_GIT_GITHUBGROUP || this.npmciRef.npmciEnv.repo.user;
|
const githubUser = process.env.NPMCI_GIT_GITHUBGROUP || this.npmciRef.npmciEnv.repo.user;
|
||||||
const githubRepo = process.env.NPMCI_GIT_GITHUB || this.npmciRef.npmciEnv.repo;
|
const githubRepo = process.env.NPMCI_GIT_GITHUB || this.npmciRef.npmciEnv.repo.repo;
|
||||||
if (
|
if (
|
||||||
this.npmciRef.npmciConfig.getConfig().projectInfo.npm.packageJson.private === true ||
|
this.npmciRef.npmciConfig.getConfig().projectInfo.npm.packageJson.private === true ||
|
||||||
this.npmciRef.npmciConfig.getConfig().npmAccessLevel === 'private'
|
this.npmciRef.npmciConfig.getConfig().npmAccessLevel === 'private'
|
||||||
|
|||||||
@@ -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,11 @@ 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