Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ef7d85e7c4 | |||
| 93b5d9869b | |||
| 2a0cfeffe9 | |||
| 909aafbd5f | |||
| 91288e2d74 | |||
| 25709b1f9a | |||
| 8a03d9aa94 | |||
| bbe1cf770a | |||
| ac8190282f | |||
| 446d140e32 | |||
| 726948651e | |||
| dd0a7bb782 | |||
| fca00ffcf8 | |||
| 13f6334ae5 | |||
| 7275a858d6 | |||
| 5a3befe5af | |||
| 385a93a05e | |||
| b4d444ff05 | |||
| 487bcb9a70 | |||
| aaf11b66d7 | |||
| 83d7d46896 | |||
| 693bda6a49 | |||
| bfe3e266ee | |||
| 5f33ebd8a7 | |||
| f78c80e100 | |||
| f4d8656831 | |||
| 2290081ef0 | |||
| 189d02a16f | |||
| 55aee04334 | |||
| 0e407b9b9d | |||
| 24095bbd40 | |||
| f97ee94b5a | |||
| 4cf7aea374 | |||
| 6ab5e9cb30 | |||
| 95c1145bf5 | |||
| ea04a1b788 | |||
| 3bc2499d09 | |||
| 1f5967ac45 | |||
| fd952f086b | |||
| 79500cb2c2 | |||
| 6c58864fcf | |||
| 7ea3ac182d | |||
| 8979d26005 | |||
| c8876dac88 | |||
| 9c8a257c2a | |||
| 8b77930ece |
1241
package-lock.json
generated
1241
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
38
package.json
38
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@shipzone/npmci",
|
"name": "@shipzone/npmci",
|
||||||
"version": "3.1.49",
|
"version": "3.1.73",
|
||||||
"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": {
|
||||||
@@ -26,34 +26,32 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gitzone/tsbuild": "^2.1.17",
|
"@gitzone/tsbuild": "^2.1.17",
|
||||||
"@gitzone/tsrun": "^1.2.6",
|
"@gitzone/tsrun": "^1.2.6",
|
||||||
"@gitzone/tstest": "^1.0.24",
|
"@gitzone/tstest": "^1.0.28",
|
||||||
"@pushrocks/tapbundle": "^3.0.13",
|
"@pushrocks/tapbundle": "^3.2.0",
|
||||||
"@types/node": "^12.7.3",
|
"@types/node": "^12.12.12",
|
||||||
"tslint": "^5.19.0",
|
"tslint": "^5.20.1",
|
||||||
"tslint-config-prettier": "^1.18.0"
|
"tslint-config-prettier": "^1.18.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apiglobal/typedrequest": "^1.0.17",
|
"@apiglobal/typedrequest": "^1.0.24",
|
||||||
"@pushrocks/lik": "^3.0.11",
|
"@pushrocks/lik": "^3.0.11",
|
||||||
"@pushrocks/npmextra": "^3.0.5",
|
"@pushrocks/npmextra": "^3.0.7",
|
||||||
"@pushrocks/projectinfo": "^4.0.2",
|
"@pushrocks/projectinfo": "^4.0.2",
|
||||||
"@pushrocks/qenv": "^4.0.4",
|
"@pushrocks/qenv": "^4.0.6",
|
||||||
"@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.6",
|
||||||
"@pushrocks/smartfile": "^7.0.2",
|
"@pushrocks/smartfile": "^7.0.6",
|
||||||
"@pushrocks/smartgit": "^1.0.13",
|
"@pushrocks/smartlog": "^2.0.21",
|
||||||
"@pushrocks/smartlog": "^2.0.19",
|
|
||||||
"@pushrocks/smartlog-destination-local": "^8.0.2",
|
"@pushrocks/smartlog-destination-local": "^8.0.2",
|
||||||
"@pushrocks/smartparam": "^1.0.4",
|
"@pushrocks/smartparam": "^1.0.4",
|
||||||
"@pushrocks/smartpromise": "^3.0.2",
|
"@pushrocks/smartpromise": "^3.0.6",
|
||||||
"@pushrocks/smartrequest": "^1.1.23",
|
"@pushrocks/smartrequest": "^1.1.43",
|
||||||
"@pushrocks/smartshell": "^2.0.25",
|
"@pushrocks/smartshell": "^2.0.25",
|
||||||
"@pushrocks/smartsocket": "^1.1.45",
|
"@pushrocks/smartsocket": "^1.1.58",
|
||||||
"@pushrocks/smartssh": "^1.2.3",
|
"@pushrocks/smartssh": "^1.2.3",
|
||||||
"@pushrocks/smartstring": "^3.0.10",
|
"@pushrocks/smartstring": "^3.0.17",
|
||||||
"@servezone/servezone-interfaces": "^2.0.29",
|
"@servezone/servezone-interfaces": "^2.0.51",
|
||||||
"@types/shelljs": "^0.8.5",
|
|
||||||
"@types/through2": "^2.0.34",
|
"@types/through2": "^2.0.34",
|
||||||
"through2": "^3.0.1"
|
"through2": "^3.0.1"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as plugins from '../npmci.plugins';
|
import * as plugins from '../npmci.plugins';
|
||||||
|
|
||||||
import {Npmci} from '../npmci.classes.npmci';
|
import { Npmci } from '../npmci.classes.npmci';
|
||||||
import { logger } from '../npmci.logging';
|
import { logger } from '../npmci.logging';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -13,18 +13,20 @@ export class CloudlyConnector {
|
|||||||
this.npmciRef = npmciRefArg;
|
this.npmciRef = npmciRefArg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async announceDockerContainer(optionsArg: plugins.servezoneInterfaces.version.IVersionData) {
|
||||||
public async announceDockerContainer(optionsArg: plugins.servezoneInterfaces.IVersionData) {
|
|
||||||
const cloudlyUrl = this.npmciRef.npmciConfig.getConfig().urlCloudly;
|
const cloudlyUrl = this.npmciRef.npmciConfig.getConfig().urlCloudly;
|
||||||
if (!cloudlyUrl) {
|
if (!cloudlyUrl) {
|
||||||
logger.log('warn', 'no cloudly url provided. Thus we cannot announce the newly built Dockerimage!');
|
logger.log(
|
||||||
|
'warn',
|
||||||
|
'no cloudly url provided. Thus we cannot announce the newly built Dockerimage!'
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const typedrequest = new plugins.typedrequest.TypedRequest<
|
const typedrequest = new plugins.typedrequest.TypedRequest<
|
||||||
plugins.servezoneInterfaces.IRequest_Any_Cloudly_VersionManager_Update
|
plugins.servezoneInterfaces.request.version.IRequest_Any_Cloudly_VersionManager_Update
|
||||||
>(`https://${cloudlyUrl}/versionmanager`, 'update');
|
>(`https://${cloudlyUrl}/versionmanager`, 'update');
|
||||||
|
|
||||||
const response = (await typedrequest.fire(optionsArg));
|
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);
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,12 +269,10 @@ export class Dockerfile {
|
|||||||
);
|
);
|
||||||
await bash(`docker tag ${this.buildTag} ${this.pushTag}`);
|
await bash(`docker tag ${this.buildTag} ${this.pushTag}`);
|
||||||
await bash(`docker push ${this.pushTag}`);
|
await bash(`docker push ${this.pushTag}`);
|
||||||
console.log('you can get the digest using this command');
|
const imageDigest = (await bash(
|
||||||
console.log(`docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}`);
|
|
||||||
const imageDigest = await bash(
|
|
||||||
`docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}`
|
`docker inspect --format="{{index .RepoDigests 0}}" ${this.pushTag}`
|
||||||
);
|
)).split('@')[1];
|
||||||
console.log(imageDigest);
|
console.log(`The image ${this.pushTag} has digest ${imageDigest}`);
|
||||||
await this.npmciDockerManagerRef.npmciRef.cloudlyConnector.announceDockerContainer({
|
await this.npmciDockerManagerRef.npmciRef.cloudlyConnector.announceDockerContainer({
|
||||||
dockerImageUrl: this.pushTag,
|
dockerImageUrl: this.pushTag,
|
||||||
dockerImageVersion: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo
|
dockerImageVersion: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { logger } from '../npmci.logging';
|
import { logger } from '../npmci.logging';
|
||||||
import * as plugins from './mod.plugins';
|
import * as plugins from './mod.plugins';
|
||||||
import { bash } from '../npmci.bash';
|
import { bash, bashNoError } from '../npmci.bash';
|
||||||
import { Npmci } from '../npmci.classes.npmci';
|
import { Npmci } from '../npmci.classes.npmci';
|
||||||
|
|
||||||
export class NpmciGitManager {
|
export class NpmciGitManager {
|
||||||
@@ -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'
|
||||||
@@ -47,16 +47,22 @@ export class NpmciGitManager {
|
|||||||
logger.log('info', 'found github token.');
|
logger.log('info', 'found github token.');
|
||||||
logger.log('info', 'attempting the mirror the repository to GitHub');
|
logger.log('info', 'attempting the mirror the repository to GitHub');
|
||||||
|
|
||||||
// plugins.smartgit.GitRepo;
|
// remove old mirrors
|
||||||
|
await bashNoError('git remote rm mirror');
|
||||||
|
|
||||||
|
await bash(`git fetch`);
|
||||||
// add the mirror
|
// add the mirror
|
||||||
await bash(
|
await bashNoError(
|
||||||
`git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git`
|
`git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git`
|
||||||
);
|
);
|
||||||
await bash(`git push mirror --all`);
|
await bashNoError(`git push mirror --all`);
|
||||||
|
await bashNoError(`git checkout origin/master`);
|
||||||
|
await bashNoError(`git push mirror master`);
|
||||||
logger.log('ok', 'pushed all branches to mirror!');
|
logger.log('ok', 'pushed all branches to mirror!');
|
||||||
await bash(`git push mirror --tags`);
|
await bashNoError(`git push mirror --tags`);
|
||||||
logger.log('ok', 'pushed all tags to mirror!');
|
logger.log('ok', 'pushed all tags to mirror!');
|
||||||
|
// remove old mirrors
|
||||||
|
await bashNoError('git remote rm mirror');
|
||||||
} else {
|
} else {
|
||||||
logger.log('error', `cannot find NPMCI_GIT_GITHUBTOKEN env var!`);
|
logger.log('error', `cannot find NPMCI_GIT_GITHUBTOKEN env var!`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
@@ -1,5 +1 @@
|
|||||||
export * from '../npmci.plugins';
|
export * from '../npmci.plugins';
|
||||||
|
|
||||||
import * as smartgit from '@pushrocks/smartgit';
|
|
||||||
|
|
||||||
export { smartgit };
|
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ export class NpmciNpmManager {
|
|||||||
case 'install':
|
case 'install':
|
||||||
await this.install();
|
await this.install();
|
||||||
break;
|
break;
|
||||||
|
case 'build':
|
||||||
|
await this.build();
|
||||||
|
break;
|
||||||
case 'prepare':
|
case 'prepare':
|
||||||
await this.prepare();
|
await this.prepare();
|
||||||
break;
|
break;
|
||||||
@@ -133,8 +136,8 @@ export class NpmciNpmManager {
|
|||||||
await bash(`npm -v`);
|
await bash(`npm -v`);
|
||||||
|
|
||||||
// -> build it
|
// -> build it
|
||||||
await bash(`npm install`);
|
await this.install();
|
||||||
await bash(`npm run build`);
|
await this.build();
|
||||||
|
|
||||||
logger.log('success', `Nice!!! The build for the publication was successfull!`);
|
logger.log('success', `Nice!!! The build for the publication was successfull!`);
|
||||||
logger.log('info', `Lets clean up so we don't publish any packages that don't belong to us:`);
|
logger.log('info', `Lets clean up so we don't publish any packages that don't belong to us:`);
|
||||||
@@ -152,7 +155,12 @@ export class NpmciNpmManager {
|
|||||||
|
|
||||||
public async install(): Promise<void> {
|
public async install(): Promise<void> {
|
||||||
logger.log('info', 'now installing dependencies:');
|
logger.log('info', 'now installing dependencies:');
|
||||||
await bash('npm install');
|
await bash('npm ci');
|
||||||
|
}
|
||||||
|
|
||||||
|
public async build(): Promise<void> {
|
||||||
|
logger.log('info', 'now building the project:');
|
||||||
|
await bash('npm run build');
|
||||||
}
|
}
|
||||||
|
|
||||||
public async test(): Promise<void> {
|
public async test(): Promise<void> {
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ export { path };
|
|||||||
// @apiglobal
|
// @apiglobal
|
||||||
import * as typedrequest from '@apiglobal/typedrequest';
|
import * as typedrequest from '@apiglobal/typedrequest';
|
||||||
|
|
||||||
export {
|
export { typedrequest };
|
||||||
typedrequest
|
|
||||||
};
|
|
||||||
|
|
||||||
// @servezone
|
// @servezone
|
||||||
import * as servezoneInterfaces from '@servezone/servezone-interfaces';
|
import * as servezoneInterfaces from '@servezone/servezone-interfaces';
|
||||||
|
|||||||
Reference in New Issue
Block a user