Compare commits

...

12 Commits

Author SHA1 Message Date
a58fa135c1 4.1.0 2022-10-24 21:23:14 +02:00
93c7af6c91 feat(precheck): now includes a precheck for more generic runner execution 2022-10-24 21:23:14 +02:00
ad0e12bf7b 4.0.11 2022-10-23 17:19:42 +02:00
498dd6eff6 fix(core): update 2022-10-23 17:19:41 +02:00
b3aa964739 4.0.10 2022-10-11 14:26:43 +02:00
03eb9d2657 fix(core): update 2022-10-11 14:26:42 +02:00
373a838a6a 4.0.9 2022-10-11 14:08:00 +02:00
960e3f4675 fix(core): update 2022-10-11 14:07:59 +02:00
09bf676b58 4.0.8 2022-10-11 13:59:40 +02:00
76ba8e2ab9 fix(core): update 2022-10-11 13:59:39 +02:00
aaaaca2d19 4.0.7 2022-10-11 13:59:16 +02:00
71b27eda17 fix(core): update 2022-10-11 13:59:15 +02:00
16 changed files with 75 additions and 13740 deletions

View File

@@ -13,31 +13,24 @@ stages:
- metadata
before_script:
- npm install -g @shipzone/npmci
- pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
# ====================
# security stage
# ====================
auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
- npmci command pnpm audit --audit-level=high --prod
tags:
- lossless
- docker
allow_failure: true
@@ -45,11 +38,10 @@ auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
- npmci command pnpm audit --audit-level=high --dev
tags:
- lossless
- docker
allow_failure: true
@@ -60,7 +52,6 @@ auditDevDependencies:
testStable:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
@@ -71,7 +62,6 @@ testStable:
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
@@ -100,10 +90,9 @@ codequality:
only:
- tags
script:
- npmci command npm install -g tslint typescript
- npmci command npm install -g typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker
@@ -123,11 +112,9 @@ trigger:
pages:
stage: metadata
script:
- npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command tsdoc
- npmci command npm run buildDocs
tags:
- lossless
- docker

View File

@@ -14,7 +14,7 @@
"githost": "gitlab.com",
"gitscope": "shipzone",
"gitrepo": "npmci",
"shortDescription": "node and docker in gitlab ci on steroids",
"description": "node and docker in gitlab ci on steroids",
"npmPackagename": "@shipzone/npmci",
"license": "MIT"
}

13685
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@shipzone/npmci",
"version": "4.0.6",
"version": "4.1.0",
"private": false,
"description": "node and docker in gitlab ci on steroids",
"main": "dist_ts/index.js",
@@ -12,7 +12,8 @@
"scripts": {
"test": "tstest test/",
"build": "tsbuild --allowimplicitany && (npm run testVersion)",
"testVersion": "(cd test/assets/ && node ../../cli.js -v)"
"testVersion": "(cd test/assets/ && node ../../cli.js -v)",
"buildDocs": "tsdoc"
},
"repository": {
"type": "git",

View File

@@ -1,23 +1,26 @@
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = '0';
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
import { tap, expect } from '@pushrocks/tapbundle';
import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js';
tap.test('should be able to announce a container to cloudly', async () => {
const cloudlyConnector = new cloudlyConnectorMod.CloudlyConnector(null);
await cloudlyConnector.announceDockerContainer({
await cloudlyConnector.announceDockerContainer(
{
registryUrl: 'registry.losssless.com',
tag: 'testcontainer',
version: 'x.x.x',
labels: []
}, 'cloudly.lossless.one')
labels: [],
},
'cloudly.lossless.one'
);
});
tap.test('should close the program despite socket timeout', async (toolsArg) => {
// TODO: remove when unreffed timeouts in webrequest have been solved.
toolsArg.delayFor(0).then(() => {
process.exit();
})
})
});
});
tap.start();

View File

@@ -3,7 +3,7 @@ import * as path from 'path';
import * as smartpath from '@pushrocks/smartpath';
process.env.NPMTS_TEST = 'true';
process.env.NPMCI_URL_CLOUDLY = 'localhost'
process.env.NPMCI_URL_CLOUDLY = 'localhost';
// set up environment
process.env.CI_REPOSITORY_URL = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git';
@@ -23,7 +23,7 @@ let npmci: typeof import('../ts/index.js');
tap.preTask('should import npmci', async () => {
npmci = await import('../ts/index.js');
})
});
// ======
// Docker

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@shipzone/npmci',
version: '4.0.6',
version: '4.1.0',
description: 'node and docker in gitlab ci on steroids'
}

View File

@@ -33,7 +33,7 @@ export class CloudlyConnector {
);
const response = await typedrequest.fire({
containerImageInfo: optionsArg
containerImageInfo: optionsArg,
});
}
}

View File

@@ -276,8 +276,7 @@ export class Dockerfile {
registryUrl: this.pushTag,
tag: this.buildTag,
labels: [],
version:
this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version,
version: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version,
});
}

View File

@@ -62,7 +62,6 @@ export class NpmciNodeJsManager {
await bash('npm install -g npm');
await bash('node -v');
await bash('npm -v');
await bash('pnpm -v');
// lets look for further config
const config = await this.npmciRef.npmciConfig.getConfig();

24
ts/mod_precheck/index.ts Normal file
View File

@@ -0,0 +1,24 @@
import * as plugins from './plugins.js';
import * as paths from '../npmci.paths.js';
import { logger } from '../npmci.logging.js';
import { Npmci } from '../npmci.classes.npmci.js';
export const handleCli = async (npmciRefArg: Npmci, argvArg: any) => {
logger.log('info', 'checking execution context');
const presentRunnerTags = process.env.CI_RUNNER_TAGS.split(',').map((stringArg) =>
stringArg.trim()
);
let allDesiredGitlabRunnerTagsPresent = true;
for (const desiredRunnerTag of npmciRefArg.npmciConfig.getConfig().gitlabRunnerTags) {
if (!presentRunnerTags.includes(desiredRunnerTag)) {
allDesiredGitlabRunnerTagsPresent = false;
logger.log(
'error',
`Desired runnerRag ${desiredRunnerTag} is missing in current execution context.`
);
}
}
if (!allDesiredGitlabRunnerTagsPresent) {
process.exit(1);
}
};

View File

@@ -0,0 +1 @@
export * from '../npmci.plugins.js';

View File

@@ -79,15 +79,16 @@ export class NpmciCli {
}
);
this.smartcli.addCommand('precheck').subscribe(async (argvArg) => {
const modPrecheck = await import('./mod_precheck/index.js');
await modPrecheck.handleCli(this.npmciRef, argvArg);
})
// trigger
this.smartcli.addCommand('ssh').subscribe(
async (argvArg) => {
const modSsh = await import('./mod_ssh/index.js');
await modSsh.handleCli(argvArg);
},
(err) => {
console.log(err);
process.exit(1);
}
);

View File

@@ -20,6 +20,9 @@ export interface INpmciOptions {
dockerRegistryRepoMap: { [key: string]: string };
dockerBuildargEnvMap: { [key: string]: string };
// gitlab
gitlabRunnerTags: string[];
// urls
urlCloudly: string;
}
@@ -57,6 +60,7 @@ export class NpmciConfig {
dockerRegistryRepoMap: {},
npmAccessLevel: 'private',
npmRegistryUrl: 'registry.npmjs.org',
gitlabRunnerTags: [],
dockerBuildargEnvMap: {},
urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'),
};

View File

@@ -3,7 +3,10 @@ import * as plugins from './npmci.plugins.js';
export const cwd = process.cwd();
// package paths
export const NpmciPackageRoot = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
export const NpmciPackageRoot = plugins.path.join(
plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url),
'../'
);
export const NpmciPackageConfig = plugins.path.join(NpmciPackageRoot, './config.json');
// project paths

View File

@@ -57,9 +57,7 @@ export {
// @tsclass scope
import * as tsclass from '@tsclass/tsclass';
export {
tsclass
}
export { tsclass };
// third party
import * as through2 from 'through2';