Compare commits

...

13 Commits

Author SHA1 Message Date
fb4c84e1de 4.0.4 2022-10-11 13:38:40 +02:00
57aca36f11 fix(core): update 2022-10-11 13:38:40 +02:00
905f594af1 4.0.3 2022-10-11 13:26:50 +02:00
b788b7f96b fix(core): update 2022-10-11 13:26:49 +02:00
319a2dc41a 4.0.2 2022-10-11 13:08:10 +02:00
e01a998f0e fix(core): update 2022-10-11 13:08:10 +02:00
e40606d97b 4.0.1 2022-10-11 10:53:12 +02:00
449c7b2c04 fix(core): update 2022-10-11 10:53:12 +02:00
006782b57f 4.0.0 2022-10-09 18:15:37 +02:00
d643da29b0 BREAKING CHANGE(core): switch to esm style module 2022-10-09 18:15:37 +02:00
635f92d2bc 3.1.83 2022-01-18 18:10:28 +01:00
9a2cb56094 fix(core): update 2022-01-18 18:10:27 +01:00
5886283002 3.1.82 2021-11-10 12:42:42 +01:00
42 changed files with 10709 additions and 20182 deletions

4
cli.child.ts Normal file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
import * as cliTool from './ts/index.js';
cliTool.runCli();

2
cli.js
View File

@@ -1,4 +1,4 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
const cliTool = require('./dist_ts/index');
const cliTool = await import('./dist_ts/index.js');
cliTool.runCli();

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
require('@gitzone/tsrun');
const cliTool = require('./ts/index');
cliTool.runCli();
import * as tsrun from '@gitzone/tsrun';
tsrun.runPath('./cli.child.js', import.meta.url);

View File

26144
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,17 @@
{
"name": "@shipzone/npmci",
"version": "3.1.81",
"version": "4.0.4",
"private": false,
"description": "node and docker in gitlab ci on steroids",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"type": "module",
"bin": {
"npmci": "cli.js"
},
"scripts": {
"test": "tstest test/",
"build": "tsbuild && (npm run testVersion)",
"build": "tsbuild --allowimplicitany && (npm run testVersion)",
"testVersion": "(cd test/assets/ && node ../../cli.js -v)"
},
"repository": {
@@ -24,36 +25,36 @@
},
"homepage": "https://gitlab.com/gitzone/npmci#README",
"devDependencies": {
"@gitzone/tsbuild": "^2.1.28",
"@gitzone/tsrun": "^1.2.18",
"@gitzone/tstest": "^1.0.59",
"@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^16.11.6",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
"@gitzone/tsbuild": "^2.1.65",
"@gitzone/tsrun": "^1.2.37",
"@gitzone/tstest": "^1.0.73",
"@pushrocks/tapbundle": "^5.0.4",
"@types/node": "^18.8.3"
},
"dependencies": {
"@apiglobal/typedrequest": "^1.0.58",
"@pushrocks/lik": "^5.0.0",
"@apiglobal/typedrequest": "^2.0.10",
"@pushrocks/lik": "^6.0.0",
"@pushrocks/npmextra": "^3.0.9",
"@pushrocks/projectinfo": "^4.0.5",
"@pushrocks/qenv": "^4.0.10",
"@pushrocks/projectinfo": "^5.0.1",
"@pushrocks/qenv": "^5.0.2",
"@pushrocks/smartanalytics": "^2.0.15",
"@pushrocks/smartcli": "^3.0.14",
"@pushrocks/smartcli": "^4.0.6",
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartfile": "^8.0.10",
"@pushrocks/smartgit": "^2.0.1",
"@pushrocks/smartlog": "^2.0.44",
"@pushrocks/smartenv": "^5.0.3",
"@pushrocks/smartfile": "^10.0.5",
"@pushrocks/smartgit": "^3.0.0",
"@pushrocks/smartlog": "^3.0.1",
"@pushrocks/smartlog-destination-local": "^8.0.8",
"@pushrocks/smartparam": "^1.1.6",
"@pushrocks/smartpromise": "^3.1.6",
"@pushrocks/smartrequest": "^1.1.52",
"@pushrocks/smartshell": "^2.0.28",
"@pushrocks/smartsocket": "^1.2.8",
"@pushrocks/smartssh": "^1.2.3",
"@pushrocks/smartstring": "^3.0.24",
"@pushrocks/smartpath": "^5.0.5",
"@pushrocks/smartpromise": "^3.1.7",
"@pushrocks/smartrequest": "^2.0.11",
"@pushrocks/smartshell": "^2.0.30",
"@pushrocks/smartsocket": "^2.0.7",
"@pushrocks/smartssh": "^2.0.0",
"@pushrocks/smartstring": "^4.0.5",
"@servezone/interfaces": "^1.0.3",
"@tsclass/tsclass": "^3.0.36",
"@tsclass/tsclass": "^4.0.21",
"@types/through2": "^2.0.36",
"through2": "^4.0.2"
},

4360
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

23
test/test.cloudly.ts Normal file
View File

@@ -0,0 +1,23 @@
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({
registryUrl: 'registry.losssless.com',
tag: 'testcontainer',
version: 'x.x.x',
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

@@ -1,5 +1,6 @@
import { tap, expect } from '@pushrocks/tapbundle';
import * as path from 'path';
import * as smartpath from '@pushrocks/smartpath';
process.env.NPMTS_TEST = 'true';
process.env.NPMCI_URL_CLOUDLY = 'localhost'
@@ -15,10 +16,14 @@ process.env.NPMCI_LOGIN_DOCKER = 'docker.io|someuser|somepass';
process.env.NPMCI_SSHKEY_1 = 'hostString|somePrivKey|##';
process.cwd = () => {
return path.join(__dirname, 'assets/');
return path.join(smartpath.get.dirnameFromImportMetaUrl(import.meta.url), 'assets/');
};
import * as npmci from '../ts';
let npmci: typeof import('../ts/index.js');
tap.preTask('should import npmci', async () => {
npmci = await import('../ts/index.js');
})
// ======
// Docker
@@ -38,8 +43,8 @@ tap.test('should return valid Dockerfiles', async () => {
filePath: './Dockerfile_sometag1',
read: true,
});
expect(dockerfile1.version).to.equal('latest');
return expect(dockerfile2.version).to.equal('sometag1');
expect(dockerfile1.version).toEqual('latest');
return expect(dockerfile2.version).toEqual('sometag1');
});
tap.test('should read a directory of Dockerfiles', async () => {
@@ -47,7 +52,7 @@ tap.test('should read a directory of Dockerfiles', async () => {
return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then(
async (readDockerfilesArrayArg: npmci.Dockerfile[]) => {
sortableArray = readDockerfilesArrayArg;
return expect(readDockerfilesArrayArg[1].version).to.equal('sometag1');
return expect(readDockerfilesArrayArg[1].version).toEqual('sometag1');
}
);
});
@@ -92,7 +97,7 @@ tap.test('should login docker daemon', async () => {
// SSH
// ===
tap.test('should prepare SSH keys', async () => {
const npmciModSsh = await import('../ts/mod_ssh');
const npmciModSsh = await import('../ts/mod_ssh/index.js');
return await npmciModSsh.handleCli({
_: ['ssh', 'prepare'],
});

8
ts/00_commitinfo_data.ts Normal file
View File

@@ -0,0 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@shipzone/npmci',
version: '4.0.4',
description: 'node and docker in gitlab ci on steroids'
}

View File

@@ -1,7 +1,7 @@
import * as plugins from '../npmci.plugins';
import * as plugins from '../npmci.plugins.js';
import { Npmci } from '../npmci.classes.npmci';
import { logger } from '../npmci.logging';
import { Npmci } from '../npmci.classes.npmci.js';
import { logger } from '../npmci.logging.js';
/**
* connects to cloudly
@@ -14,9 +14,10 @@ export class CloudlyConnector {
}
public async announceDockerContainer(
optionsArg: plugins.tsclass.container.IContainer
optionsArg: plugins.tsclass.container.IContainer,
testCloudlyUrlArg?: string
) {
const cloudlyUrl = this.npmciRef.npmciConfig.getConfig().urlCloudly;
const cloudlyUrl = testCloudlyUrlArg || this.npmciRef.npmciConfig.getConfig().urlCloudly;
if (!cloudlyUrl) {
logger.log(
'warn',

View File

@@ -1,5 +1,5 @@
import { Npmci } from './npmci.classes.npmci';
import { Dockerfile } from './manager.docker/mod.classes.dockerfile';
import { Npmci } from './npmci.classes.npmci.js';
import { Dockerfile } from './manager.docker/mod.classes.dockerfile.js';
export const npmciInstance = new Npmci();

View File

@@ -1,13 +1,13 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import * as paths from '../npmci.paths';
import { bash } from '../npmci.bash';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
import * as paths from '../npmci.paths.js';
import { bash } from '../npmci.bash.js';
// classes
import { Npmci } from '../npmci.classes.npmci';
import { Dockerfile } from './mod.classes.dockerfile';
import { DockerRegistry } from './mod.classes.dockerregistry';
import { RegistryStorage } from './mod.classes.registrystorage';
import { Npmci } from '../npmci.classes.npmci.js';
import { Dockerfile } from './mod.classes.dockerfile.js';
import { DockerRegistry } from './mod.classes.dockerregistry.js';
import { RegistryStorage } from './mod.classes.registrystorage.js';
export class NpmciDockerManager {
public npmciRef: Npmci;

View File

@@ -1,13 +1,13 @@
import * as plugins from './mod.plugins';
import * as paths from '../npmci.paths';
import * as plugins from './mod.plugins.js';
import * as paths from '../npmci.paths.js';
import { logger } from '../npmci.logging';
import { bash } from '../npmci.bash';
import { logger } from '../npmci.logging.js';
import { bash } from '../npmci.bash.js';
import { DockerRegistry } from './mod.classes.dockerregistry';
import * as helpers from './mod.helpers';
import { NpmciDockerManager } from '.';
import { Npmci } from '../npmci.classes.npmci';
import { DockerRegistry } from './mod.classes.dockerregistry.js';
import * as helpers from './mod.helpers.js';
import { NpmciDockerManager } from './index.js';
import { Npmci } from '../npmci.classes.npmci.js';
/**
* class Dockerfile represents a Dockerfile on disk in npmci

View File

@@ -1,6 +1,6 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import { bash } from '../npmci.bash';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
import { bash } from '../npmci.bash.js';
export interface IDockerRegistryConstructorOptions {
registryUrl: string;

View File

@@ -1,8 +1,8 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
import { ObjectMap } from '@pushrocks/lik';
import { DockerRegistry } from './mod.classes.dockerregistry';
import { DockerRegistry } from './mod.classes.dockerregistry.js';
export class RegistryStorage {
objectMap = new ObjectMap<DockerRegistry>();

View File

@@ -1,5 +1,5 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import * as paths from '../npmci.paths';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
import * as paths from '../npmci.paths.js';
import { Dockerfile } from './mod.classes.dockerfile';
import { Dockerfile } from './mod.classes.dockerfile.js';

View File

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

View File

@@ -1,7 +1,7 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import { bash, bashNoError } from '../npmci.bash';
import { Npmci } from '../npmci.classes.npmci';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
import { bash, bashNoError } from '../npmci.bash.js';
import { Npmci } from '../npmci.classes.npmci.js';
export class NpmciGitManager {
public npmciRef: Npmci;

View File

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

View File

@@ -1,9 +1,9 @@
import * as plugins from '../npmci.plugins';
import * as paths from '../npmci.paths';
import * as plugins from '../npmci.plugins.js';
import * as paths from '../npmci.paths.js';
import { logger } from '../npmci.logging';
import { bash, bashNoError, nvmAvailable } from '../npmci.bash';
import { Npmci } from '../npmci.classes.npmci';
import { logger } from '../npmci.logging.js';
import { bash, bashNoError, nvmAvailable } from '../npmci.bash.js';
import { Npmci } from '../npmci.classes.npmci.js';
export class NpmciNodeJsManager {
public npmciRef: Npmci;

View File

@@ -1,9 +1,9 @@
import * as plugins from './mod.plugins';
import * as paths from '../npmci.paths';
import * as plugins from './mod.plugins.js';
import * as paths from '../npmci.paths.js';
import { logger } from '../npmci.logging';
import { bash, bashNoError, nvmAvailable } from '../npmci.bash';
import { Npmci } from '../npmci.classes.npmci';
import { logger } from '../npmci.logging.js';
import { bash, bashNoError, nvmAvailable } from '../npmci.bash.js';
import { Npmci } from '../npmci.classes.npmci.js';
export class NpmciNpmManager {
public npmciRef: Npmci;
@@ -151,6 +151,7 @@ export class NpmciNpmManager {
logger.log('info', `now preparing environment:`);
this.prepare();
await bash(`npm -v`);
await bash(`pnpm -v`);
// -> build it
await this.install();
@@ -172,16 +173,16 @@ export class NpmciNpmManager {
public async install(): Promise<void> {
logger.log('info', 'now installing dependencies:');
await bash('npm ci');
await bash('pnpm install');
}
public async build(): Promise<void> {
logger.log('info', 'now building the project:');
await bash('npm run build');
await bash('pnpm run build');
}
public async test(): Promise<void> {
logger.log('info', 'now starting tests:');
await bash('npm test');
await bash('pnpm test');
}
}

View File

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

View File

@@ -1,5 +1,5 @@
import * as plugins from './mod.plugins';
import * as paths from '../npmci.paths';
import * as plugins from './mod.plugins.js';
import * as paths from '../npmci.paths.js';
/**
* cleans npmci config files

View File

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

View File

@@ -1,5 +1,5 @@
import * as plugins from './mod.plugins';
import { bash } from '../npmci.bash';
import * as plugins from './mod.plugins.js';
import { bash } from '../npmci.bash.js';
export let command = async () => {
let wrappedCommand: string = '';

View File

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

View File

@@ -1,5 +1,5 @@
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins';
import { logger } from '../npmci.logging.js';
import * as plugins from './mod.plugins.js';
let sshInstance: plugins.smartssh.SshInstance;
export let handleCli = async (argvArg: any) => {

View File

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

View File

@@ -1,6 +1,6 @@
import * as plugins from './mod.plugins';
import { bash } from '../npmci.bash';
import { logger } from '../npmci.logging';
import * as plugins from './mod.plugins.js';
import { bash } from '../npmci.bash.js';
import { logger } from '../npmci.logging.js';
const triggerValueRegex =
/^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;

View File

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

View File

@@ -1,6 +1,6 @@
import { logger } from './npmci.logging';
import * as plugins from './npmci.plugins';
import * as paths from './npmci.paths';
import { logger } from './npmci.logging.js';
import * as plugins from './npmci.plugins.js';
import * as paths from './npmci.paths.js';
import * as smartpromise from '@pushrocks/smartpromise';

View File

@@ -1,17 +1,17 @@
import * as plugins from './npmci.plugins';
import * as plugins from './npmci.plugins.js';
import { CloudlyConnector } from './connector.cloudly/cloudlyconnector';
import { CloudlyConnector } from './connector.cloudly/cloudlyconnector.js';
import { NpmciInfo } from './npmci.classes.npmciinfo';
import { NpmciCli } from './npmci.classes.npmcicli';
import { NpmciConfig } from './npmci.classes.npmciconfig';
import { NpmciInfo } from './npmci.classes.npmciinfo.js';
import { NpmciCli } from './npmci.classes.npmcicli.js';
import { NpmciConfig } from './npmci.classes.npmciconfig.js';
// mods
import { NpmciDockerManager } from './manager.docker';
import { NpmciGitManager } from './manager.git';
import { NpmciNodeJsManager } from './manager.nodejs';
import { NpmciNpmManager } from './manager.npm';
import { NpmciEnv } from './npmci.classes.npmcienv';
import { NpmciDockerManager } from './manager.docker/index.js';
import { NpmciGitManager } from './manager.git/index.js';
import { NpmciNodeJsManager } from './manager.nodejs/index.js';
import { NpmciNpmManager } from './manager.npm/index.js';
import { NpmciEnv } from './npmci.classes.npmcienv.js';
export class Npmci {
public analytics: plugins.smartanalytics.Analytics;

View File

@@ -1,7 +1,7 @@
import { logger } from './npmci.logging';
import * as plugins from './npmci.plugins';
import * as paths from './npmci.paths';
import { Npmci } from './npmci.classes.npmci';
import { logger } from './npmci.logging.js';
import * as plugins from './npmci.plugins.js';
import * as paths from './npmci.paths.js';
import { Npmci } from './npmci.classes.npmci.js';
export class NpmciCli {
public npmciRef: Npmci;
@@ -15,7 +15,7 @@ export class NpmciCli {
// clean
this.smartcli.addCommand('clean').subscribe(
async (argv) => {
const modClean = await import('./mod_clean/index');
const modClean = await import('./mod_clean/index.js');
await modClean.clean();
},
(err) => {
@@ -27,7 +27,7 @@ export class NpmciCli {
// command
this.smartcli.addCommand('command').subscribe(
async (argv) => {
const modCommand = await import('./mod_command/index');
const modCommand = await import('./mod_command/index.js');
await modCommand.command();
},
(err) => {
@@ -82,7 +82,7 @@ export class NpmciCli {
// trigger
this.smartcli.addCommand('ssh').subscribe(
async (argvArg) => {
const modSsh = await import('./mod_ssh/index');
const modSsh = await import('./mod_ssh/index.js');
await modSsh.handleCli(argvArg);
},
(err) => {
@@ -94,7 +94,7 @@ export class NpmciCli {
// trigger
this.smartcli.addCommand('trigger').subscribe(
async (argv) => {
const modTrigger = await import('./mod_trigger/index');
const modTrigger = await import('./mod_trigger/index.js');
await modTrigger.trigger();
},
(err) => {

View File

@@ -1,8 +1,8 @@
import * as plugins from './npmci.plugins';
import * as paths from './npmci.paths';
import * as plugins from './npmci.plugins.js';
import * as paths from './npmci.paths.js';
import { logger } from './npmci.logging';
import { Npmci } from './npmci.classes.npmci';
import { logger } from './npmci.logging.js';
import { Npmci } from './npmci.classes.npmci.js';
/**
* the main config interface for npmci

View File

@@ -1,5 +1,5 @@
import * as plugins from './npmci.plugins';
import { Npmci } from './npmci.classes.npmci';
import * as plugins from './npmci.plugins.js';
import { Npmci } from './npmci.classes.npmci.js';
export class NpmciEnv {
public npmciRef: Npmci;

View File

@@ -1,7 +1,7 @@
import * as plugins from './npmci.plugins';
import * as paths from './npmci.paths';
import { logger } from './npmci.logging';
import { Npmci } from './npmci.classes.npmci';
import * as plugins from './npmci.plugins.js';
import * as paths from './npmci.paths.js';
import { logger } from './npmci.logging.js';
import { Npmci } from './npmci.classes.npmci.js';
export class NpmciInfo {
public npmciRef: Npmci;

View File

@@ -1,4 +1,4 @@
import * as plugins from './npmci.plugins';
import * as plugins from './npmci.plugins.js';
export const logger = new plugins.smartlog.Smartlog({
logContext: {

View File

@@ -1,9 +1,9 @@
import * as plugins from './npmci.plugins';
import * as plugins from './npmci.plugins.js';
export const cwd = process.cwd();
// package paths
export const NpmciPackageRoot = plugins.path.join(__dirname, '../');
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

@@ -25,6 +25,7 @@ import * as smartgit from '@pushrocks/smartgit';
import * as smartlog from '@pushrocks/smartlog';
import * as smartlogDestinationLocal from '@pushrocks/smartlog-destination-local';
import * as smartparam from '@pushrocks/smartparam';
import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise';
import * as smartrequest from '@pushrocks/smartrequest';
import * as smartshell from '@pushrocks/smartshell';
@@ -39,10 +40,12 @@ export {
smartanalytics,
smartdelay,
smartfile,
smartgit,
smartcli,
smartlog,
smartlogDestinationLocal,
smartparam,
smartpath,
smartpromise,
smartrequest,
smartshell,

10
tsconfig.json Normal file
View File

@@ -0,0 +1,10 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "nodenext",
"esModuleInterop": true
}
}

View File

@@ -1,17 +0,0 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}