Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e9a61bbb2 | |||
| dc809a6023 | |||
| 7eeca992b0 | |||
| d018102014 | |||
| 838f2d6959 | |||
| 0d42e5f6eb | |||
| f96de8cdc3 | |||
| 965833916f | |||
| 81ec1391e3 | |||
| bbbca44640 | |||
| 7ba7dc54a1 | |||
| 4f98eeec2a |
@@ -12,10 +12,10 @@
|
||||
"projectType": "npm",
|
||||
"module": {
|
||||
"githost": "gitlab.com",
|
||||
"gitscope": "shipzone",
|
||||
"gitscope": "ship.zone",
|
||||
"gitrepo": "npmci",
|
||||
"description": "node and docker in gitlab ci on steroids",
|
||||
"npmPackagename": "@shipzone/npmci",
|
||||
"npmPackagename": "@ship.zone/npmci",
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
|
||||
30
package.json
30
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@shipzone/npmci",
|
||||
"version": "4.1.23",
|
||||
"name": "@ship.zone/npmci",
|
||||
"version": "4.1.29",
|
||||
"private": false,
|
||||
"description": "node and docker in gitlab ci on steroids",
|
||||
"main": "dist_ts/index.js",
|
||||
@@ -29,21 +29,21 @@
|
||||
"@gitzone/tsbuild": "^2.1.66",
|
||||
"@gitzone/tsrun": "^1.2.44",
|
||||
"@gitzone/tstest": "^1.0.77",
|
||||
"@push.rocks/tapbundle": "^5.0.12",
|
||||
"@types/node": "^20.4.2"
|
||||
"@push.rocks/tapbundle": "^5.0.15",
|
||||
"@types/node": "^20.5.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@apiglobal/typedrequest": "^2.0.12",
|
||||
"@push.rocks/lik": "^6.0.3",
|
||||
"@push.rocks/npmextra": "^3.0.9",
|
||||
"@push.rocks/projectinfo": "^5.0.1",
|
||||
"@push.rocks/qenv": "^5.0.2",
|
||||
"@api.global/typedrequest": "^3.0.1",
|
||||
"@push.rocks/lik": "^6.0.5",
|
||||
"@push.rocks/npmextra": "^4.0.0",
|
||||
"@push.rocks/projectinfo": "^5.0.2",
|
||||
"@push.rocks/qenv": "^6.0.2",
|
||||
"@push.rocks/smartanalytics": "^2.0.15",
|
||||
"@push.rocks/smartcli": "^4.0.6",
|
||||
"@push.rocks/smartcli": "^4.0.8",
|
||||
"@push.rocks/smartdelay": "^3.0.5",
|
||||
"@push.rocks/smartenv": "^5.0.5",
|
||||
"@push.rocks/smartfile": "^10.0.28",
|
||||
"@push.rocks/smartgit": "^3.0.0",
|
||||
"@push.rocks/smartfile": "^10.0.30",
|
||||
"@push.rocks/smartgit": "^3.0.1",
|
||||
"@push.rocks/smartlog": "^3.0.3",
|
||||
"@push.rocks/smartlog-destination-local": "^9.0.0",
|
||||
"@push.rocks/smartobject": "^1.0.12",
|
||||
@@ -51,9 +51,9 @@
|
||||
"@push.rocks/smartpromise": "^4.0.2",
|
||||
"@push.rocks/smartrequest": "^2.0.18",
|
||||
"@push.rocks/smartshell": "^3.0.3",
|
||||
"@push.rocks/smartsocket": "^2.0.19",
|
||||
"@push.rocks/smartssh": "^2.0.0",
|
||||
"@push.rocks/smartstring": "^4.0.7",
|
||||
"@push.rocks/smartsocket": "^2.0.22",
|
||||
"@push.rocks/smartssh": "^2.0.1",
|
||||
"@push.rocks/smartstring": "^4.0.8",
|
||||
"@servezone/interfaces": "^1.0.3",
|
||||
"@tsclass/tsclass": "^4.0.42",
|
||||
"@types/through2": "^2.0.38",
|
||||
|
||||
1631
pnpm-lock.yaml
generated
1631
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
2
test/assets/Dockerfile_hello_##version##
Normal file
2
test/assets/Dockerfile_hello_##version##
Normal file
@@ -0,0 +1,2 @@
|
||||
FROM mygroup/myrepo:sometag2
|
||||
RUN apt-get update
|
||||
26
test/test.ts
26
test/test.ts
@@ -19,24 +19,20 @@ process.cwd = () => {
|
||||
return path.join(smartpath.get.dirnameFromImportMetaUrl(import.meta.url), 'assets/');
|
||||
};
|
||||
|
||||
let npmci: typeof import('../ts/index.js');
|
||||
|
||||
type TNpmciTypes = typeof import('../ts/index.js');
|
||||
|
||||
tap.preTask('should import npmci', async () => {
|
||||
npmci = await import('../ts/index.js');
|
||||
});
|
||||
import type * as npmciTypes from '../ts/index.js';
|
||||
const npmci = await import('../ts/index.js');
|
||||
|
||||
// ======
|
||||
// Docker
|
||||
// ======
|
||||
|
||||
let dockerfile1: npmci.Dockerfile;
|
||||
let dockerfile2: npmci.Dockerfile;
|
||||
let sortableArray: npmci.Dockerfile[];
|
||||
let dockerfile1: npmciTypes.Dockerfile;
|
||||
let dockerfile2: npmciTypes.Dockerfile;
|
||||
let sortableArray: npmciTypes.Dockerfile[];
|
||||
|
||||
tap.test('should return valid Dockerfiles', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
dockerfile1 = new npmci.Dockerfile(npmciInstance.dockerManager, {
|
||||
filePath: './Dockerfile',
|
||||
read: true,
|
||||
@@ -51,8 +47,9 @@ tap.test('should return valid Dockerfiles', async () => {
|
||||
|
||||
tap.test('should read a directory of Dockerfiles', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then(
|
||||
async (readDockerfilesArrayArg: npmci.Dockerfile[]) => {
|
||||
async (readDockerfilesArrayArg: npmciTypes.Dockerfile[]) => {
|
||||
sortableArray = readDockerfilesArrayArg;
|
||||
return expect(readDockerfilesArrayArg[1].version).toEqual('sometag1');
|
||||
}
|
||||
@@ -61,7 +58,7 @@ tap.test('should read a directory of Dockerfiles', async () => {
|
||||
|
||||
tap.test('should sort an array of Dockerfiles', async () => {
|
||||
return npmci.Dockerfile.sortDockerfiles(sortableArray).then(
|
||||
async (sortedArrayArg: npmci.Dockerfile[]) => {
|
||||
async (sortedArrayArg: npmciTypes.Dockerfile[]) => {
|
||||
console.log(sortedArrayArg);
|
||||
}
|
||||
);
|
||||
@@ -69,6 +66,7 @@ tap.test('should sort an array of Dockerfiles', async () => {
|
||||
|
||||
tap.test('should build all Dockerfiles', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
return npmciInstance.dockerManager.handleCli({
|
||||
_: ['docker', 'build'],
|
||||
});
|
||||
@@ -76,6 +74,7 @@ tap.test('should build all Dockerfiles', async () => {
|
||||
|
||||
tap.test('should test all Dockerfiles', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
return npmciInstance.dockerManager.handleCli({
|
||||
_: ['docker', 'test'],
|
||||
});
|
||||
@@ -83,6 +82,7 @@ tap.test('should test all Dockerfiles', async () => {
|
||||
|
||||
tap.test('should test dockerfiles', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
return npmciInstance.dockerManager.handleCli({
|
||||
_: ['docker', 'test'],
|
||||
});
|
||||
@@ -90,6 +90,7 @@ tap.test('should test dockerfiles', async () => {
|
||||
|
||||
tap.test('should login docker daemon', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
return npmciInstance.dockerManager.handleCli({
|
||||
_: ['docker', 'login'],
|
||||
});
|
||||
@@ -110,6 +111,7 @@ tap.test('should prepare SSH keys', async () => {
|
||||
// ====
|
||||
tap.test('should install a certain version of node', async () => {
|
||||
const npmciInstance = new npmci.Npmci();
|
||||
await npmciInstance.start();
|
||||
await npmciInstance.nodejsManager.handleCli({
|
||||
_: ['node', 'install', 'stable'],
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* autocreated commitinfo by @pushrocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@shipzone/npmci',
|
||||
version: '4.1.23',
|
||||
name: '@ship.zone/npmci',
|
||||
version: '4.1.29',
|
||||
description: 'node and docker in gitlab ci on steroids'
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@ export const npmciInstance = new Npmci();
|
||||
export { Dockerfile, Npmci };
|
||||
|
||||
export const runCli = async () => {
|
||||
npmciInstance.start();
|
||||
await npmciInstance.start();
|
||||
};
|
||||
|
||||
@@ -117,24 +117,24 @@ export class Dockerfile {
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a version for a docker file
|
||||
* @execution SYNC
|
||||
*/
|
||||
public static dockerFileVersion(dockerfileInstanceArg: Dockerfile, dockerfileNameArg: string): string {
|
||||
let versionString: string;
|
||||
const versionRegex = /Dockerfile_([^:_]*)$/;
|
||||
const regexResultArray = versionRegex.exec(dockerfileNameArg);
|
||||
if (regexResultArray && regexResultArray.length === 2) {
|
||||
versionString = regexResultArray[1];
|
||||
} else {
|
||||
versionString = 'latest';
|
||||
}
|
||||
versionString = versionString.replace(
|
||||
'##version##',
|
||||
dockerfileInstanceArg.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version
|
||||
);
|
||||
return versionString;
|
||||
* returns a version for a docker file
|
||||
* @execution SYNC
|
||||
*/
|
||||
public static dockerFileVersion(dockerfileInstanceArg: Dockerfile, dockerfileNameArg: string): string {
|
||||
let versionString: string;
|
||||
const versionRegex = /Dockerfile_(.+)$/;
|
||||
const regexResultArray = versionRegex.exec(dockerfileNameArg);
|
||||
if (regexResultArray && regexResultArray.length === 2) {
|
||||
versionString = regexResultArray[1];
|
||||
} else {
|
||||
versionString = 'latest';
|
||||
}
|
||||
versionString = versionString.replace(
|
||||
'##version##',
|
||||
dockerfileInstanceArg.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version
|
||||
);
|
||||
return versionString;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the docker base image for a Dockerfile
|
||||
|
||||
@@ -39,11 +39,16 @@ export class Npmci {
|
||||
projectId: 'gitzone',
|
||||
appName: 'npmci',
|
||||
});
|
||||
}
|
||||
|
||||
public async start() {
|
||||
this.cloudlyConnector = new CloudlyConnector(this);
|
||||
this.npmciEnv = new NpmciEnv(this);
|
||||
this.npmciInfo = new NpmciInfo(this);
|
||||
await this.npmciInfo.printToConsole();
|
||||
this.npmciCli = new NpmciCli(this);
|
||||
this.npmciConfig = new NpmciConfig(this);
|
||||
await this.npmciConfig.init();
|
||||
|
||||
// managers
|
||||
this.cloudronManager = new NpmciCloudronManager(this);
|
||||
@@ -51,11 +56,6 @@ export class Npmci {
|
||||
this.gitManager = new NpmciGitManager(this);
|
||||
this.nodejsManager = new NpmciNodeJsManager(this);
|
||||
this.npmManager = new NpmciNpmManager(this);
|
||||
}
|
||||
|
||||
public async start() {
|
||||
await this.npmciInfo.printToConsole();
|
||||
await this.npmciConfig.init();
|
||||
this.npmciCli.startParse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,10 +44,12 @@ export class NpmciConfig {
|
||||
|
||||
constructor(npmciRefArg: Npmci) {
|
||||
this.npmciRef = npmciRefArg;
|
||||
}
|
||||
|
||||
public async init() {
|
||||
this.npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd);
|
||||
this.kvStorage = new plugins.npmextra.KeyValueStore(
|
||||
'custom',
|
||||
'userHomeDir',
|
||||
`${this.npmciRef.npmciEnv.repo.user}_${this.npmciRef.npmciEnv.repo.repo}`
|
||||
);
|
||||
this.npmciQenv = new plugins.qenv.Qenv(
|
||||
@@ -65,11 +67,8 @@ export class NpmciConfig {
|
||||
npmRegistryUrl: 'registry.npmjs.org',
|
||||
gitlabRunnerTags: [],
|
||||
dockerBuildargEnvMap: {},
|
||||
urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'),
|
||||
urlCloudly: await this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'),
|
||||
};
|
||||
}
|
||||
|
||||
public async init() {
|
||||
this.configObject = this.npmciNpmextra.dataFor<INpmciOptions>('npmci', this.configObject);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ export class NpmciInfo {
|
||||
this.npmciRef = npmciArg;
|
||||
}
|
||||
|
||||
public printToConsole() {
|
||||
logger.log('info', `npmci version: ${this.projectInfo.version}`);
|
||||
public async printToConsole() {
|
||||
await logger.log('info', `npmci version: ${this.projectInfo.version}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import * as path from 'path';
|
||||
export { path };
|
||||
|
||||
// @apiglobal
|
||||
import * as typedrequest from '@apiglobal/typedrequest';
|
||||
import * as typedrequest from '@api.global/typedrequest';
|
||||
|
||||
export { typedrequest };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user