@git.zone/tsdocker 1.2.43 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +1 -1
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.dockerfile.d.ts +85 -0
- package/dist_ts/classes.dockerfile.js +366 -0
- package/dist_ts/classes.dockerregistry.d.ts +29 -0
- package/dist_ts/classes.dockerregistry.js +83 -0
- package/dist_ts/classes.registrystorage.d.ts +35 -0
- package/dist_ts/classes.registrystorage.js +76 -0
- package/dist_ts/classes.tsdockermanager.d.ts +53 -0
- package/dist_ts/classes.tsdockermanager.js +222 -0
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +4 -0
- package/dist_ts/interfaces/index.d.ts +68 -0
- package/dist_ts/interfaces/index.js +2 -0
- package/dist_ts/tsdocker.cli.d.ts +1 -0
- package/dist_ts/tsdocker.cli.js +179 -0
- package/dist_ts/tsdocker.config.d.ts +5 -0
- package/dist_ts/tsdocker.config.js +37 -0
- package/dist_ts/tsdocker.docker.d.ts +2 -0
- package/dist_ts/tsdocker.docker.js +145 -0
- package/dist_ts/tsdocker.logging.d.ts +3 -0
- package/dist_ts/tsdocker.logging.js +15 -0
- package/dist_ts/tsdocker.paths.d.ts +4 -0
- package/dist_ts/tsdocker.paths.js +13 -0
- package/dist_ts/tsdocker.plugins.d.ts +16 -0
- package/dist_ts/tsdocker.plugins.js +19 -0
- package/dist_ts/tsdocker.snippets.d.ts +5 -0
- package/dist_ts/tsdocker.snippets.js +26 -0
- package/npmextra.json +12 -6
- package/package.json +26 -21
- package/readme.hints.md +95 -26
- package/readme.md +32 -33
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dockerfile.ts +462 -0
- package/ts/classes.dockerregistry.ts +91 -0
- package/ts/classes.registrystorage.ts +83 -0
- package/ts/classes.tsdockermanager.ts +254 -0
- package/ts/index.ts +2 -2
- package/ts/interfaces/index.ts +70 -0
- package/ts/tsdocker.cli.ts +129 -16
- package/ts/tsdocker.config.ts +17 -10
- package/ts/tsdocker.docker.ts +6 -6
- package/ts/tsdocker.logging.ts +1 -1
- package/ts/tsdocker.paths.ts +6 -1
- package/ts/tsdocker.plugins.ts +2 -0
- package/ts/tsdocker.snippets.ts +5 -8
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
import * as paths from './tsdocker.paths.js';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
const getQenvKeyValueObject = async () => {
|
|
5
|
+
let qenvKeyValueObjectArray;
|
|
6
|
+
if (fs.existsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) {
|
|
7
|
+
qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObject;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
qenvKeyValueObjectArray = {};
|
|
11
|
+
}
|
|
12
|
+
return qenvKeyValueObjectArray;
|
|
13
|
+
};
|
|
14
|
+
const buildConfig = async (qenvKeyValueObjectArg) => {
|
|
15
|
+
const npmextra = new plugins.npmextra.Npmextra(paths.cwd);
|
|
16
|
+
const config = npmextra.dataFor('@git.zone/tsdocker', {
|
|
17
|
+
// Legacy options (backward compatible)
|
|
18
|
+
baseImage: 'hosttoday/ht-docker-node:npmdocker',
|
|
19
|
+
init: 'rm -rf node_nodules/ && yarn install',
|
|
20
|
+
command: 'npmci npm test',
|
|
21
|
+
dockerSock: false,
|
|
22
|
+
keyValueObject: qenvKeyValueObjectArg,
|
|
23
|
+
// New Docker build options
|
|
24
|
+
registries: [],
|
|
25
|
+
registryRepoMap: {},
|
|
26
|
+
buildArgEnvMap: {},
|
|
27
|
+
platforms: ['linux/amd64'],
|
|
28
|
+
push: false,
|
|
29
|
+
testDir: undefined,
|
|
30
|
+
});
|
|
31
|
+
return config;
|
|
32
|
+
};
|
|
33
|
+
export let run = async () => {
|
|
34
|
+
const config = await getQenvKeyValueObject().then(buildConfig);
|
|
35
|
+
return config;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQVF6QixNQUFNLHFCQUFxQixHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3ZDLElBQUksdUJBQTJELENBQUM7SUFDaEUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVELHVCQUF1QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDdkYsQ0FBQztTQUFNLENBQUM7UUFDTix1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLHFCQUF5RCxFQUFFLEVBQUU7SUFDdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBVSxvQkFBb0IsRUFBRTtRQUM3RCx1Q0FBdUM7UUFDdkMsU0FBUyxFQUFFLG9DQUFvQztRQUMvQyxJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsVUFBVSxFQUFFLEtBQUs7UUFDakIsY0FBYyxFQUFFLHFCQUFxQjtRQUVyQywyQkFBMkI7UUFDM0IsVUFBVSxFQUFFLEVBQUU7UUFDZCxlQUFlLEVBQUUsRUFBRTtRQUNuQixjQUFjLEVBQUUsRUFBRTtRQUNsQixTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDMUIsSUFBSSxFQUFFLEtBQUs7UUFDWCxPQUFPLEVBQUUsU0FBUztLQUNuQixDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFzQixFQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
import * as paths from './tsdocker.paths.js';
|
|
3
|
+
import * as snippets from './tsdocker.snippets.js';
|
|
4
|
+
import { logger, ora } from './tsdocker.logging.js';
|
|
5
|
+
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
6
|
+
executor: 'bash'
|
|
7
|
+
});
|
|
8
|
+
let config;
|
|
9
|
+
/**
|
|
10
|
+
* the docker data used to build the internal testing container
|
|
11
|
+
*/
|
|
12
|
+
const dockerData = {
|
|
13
|
+
imageTag: 'npmdocker-temp-image:latest',
|
|
14
|
+
containerName: 'npmdocker-temp-container',
|
|
15
|
+
dockerProjectMountString: '',
|
|
16
|
+
dockerSockString: '',
|
|
17
|
+
dockerEnvString: ''
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* check if docker is available
|
|
21
|
+
*/
|
|
22
|
+
const checkDocker = () => {
|
|
23
|
+
const done = plugins.smartpromise.defer();
|
|
24
|
+
ora.text('checking docker...');
|
|
25
|
+
if (smartshellInstance.exec('which docker')) {
|
|
26
|
+
logger.log('ok', 'Docker found!');
|
|
27
|
+
done.resolve();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
done.reject(new Error('docker not found on this machine'));
|
|
31
|
+
}
|
|
32
|
+
return done.promise;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* builds the Dockerfile according to the config in the project
|
|
36
|
+
*/
|
|
37
|
+
const buildDockerFile = async () => {
|
|
38
|
+
const done = plugins.smartpromise.defer();
|
|
39
|
+
ora.text('building Dockerfile...');
|
|
40
|
+
const dockerfile = snippets.dockerfileSnippet({
|
|
41
|
+
baseImage: config.baseImage,
|
|
42
|
+
command: config.command
|
|
43
|
+
});
|
|
44
|
+
logger.log('info', `Base image is: ${config.baseImage}`);
|
|
45
|
+
logger.log('info', `Command is: ${config.command}`);
|
|
46
|
+
await plugins.smartfs.file(plugins.path.join(paths.cwd, 'npmdocker')).write(dockerfile);
|
|
47
|
+
logger.log('ok', 'Dockerfile created!');
|
|
48
|
+
ora.stop();
|
|
49
|
+
done.resolve();
|
|
50
|
+
return done.promise;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* builds the Dockerimage from the built Dockerfile
|
|
54
|
+
*/
|
|
55
|
+
const buildDockerImage = async () => {
|
|
56
|
+
logger.log('info', 'pulling latest base image from registry...');
|
|
57
|
+
await smartshellInstance.exec(`docker pull ${config.baseImage}`);
|
|
58
|
+
ora.text('building Dockerimage...');
|
|
59
|
+
const execResult = await smartshellInstance.execSilent(`docker build --load -f npmdocker -t ${dockerData.imageTag} ${paths.cwd}`);
|
|
60
|
+
if (execResult.exitCode !== 0) {
|
|
61
|
+
console.log(execResult.stdout);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
logger.log('ok', 'Dockerimage built!');
|
|
65
|
+
};
|
|
66
|
+
const buildDockerProjectMountString = async () => {
|
|
67
|
+
if (process.env.CI !== 'true') {
|
|
68
|
+
dockerData.dockerProjectMountString = `-v ${paths.cwd}:/workspace`;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* builds an environment string that docker cli understands
|
|
73
|
+
*/
|
|
74
|
+
const buildDockerEnvString = async () => {
|
|
75
|
+
for (const key of Object.keys(config.keyValueObject)) {
|
|
76
|
+
const envString = (dockerData.dockerEnvString =
|
|
77
|
+
dockerData.dockerEnvString + `-e ${key}=${config.keyValueObject[key]} `);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* creates string to mount the docker.sock inside the testcontainer
|
|
82
|
+
*/
|
|
83
|
+
const buildDockerSockString = async () => {
|
|
84
|
+
if (config.dockerSock) {
|
|
85
|
+
dockerData.dockerSockString = `-v /var/run/docker.sock:/var/run/docker.sock`;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* creates a container by running the built Dockerimage
|
|
90
|
+
*/
|
|
91
|
+
const runDockerImage = async () => {
|
|
92
|
+
const done = plugins.smartpromise.defer();
|
|
93
|
+
ora.text('starting Container...');
|
|
94
|
+
ora.stop();
|
|
95
|
+
logger.log('info', 'now running Dockerimage');
|
|
96
|
+
config.exitCode = (await smartshellInstance.exec(`docker run ${dockerData.dockerProjectMountString} ${dockerData.dockerSockString} ${dockerData.dockerEnvString} --name ${dockerData.containerName} ${dockerData.imageTag}`)).exitCode;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* cleans up: deletes the test container
|
|
100
|
+
*/
|
|
101
|
+
const deleteDockerContainer = async () => {
|
|
102
|
+
await smartshellInstance.execSilent(`docker rm -f ${dockerData.containerName}`);
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* cleans up deletes the test image
|
|
106
|
+
*/
|
|
107
|
+
const deleteDockerImage = async () => {
|
|
108
|
+
await smartshellInstance.execSilent(`docker rmi ${dockerData.imageTag}`).then(async (response) => {
|
|
109
|
+
if (response.exitCode !== 0) {
|
|
110
|
+
console.log(response.stdout);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
const preClean = async () => {
|
|
115
|
+
await deleteDockerImage()
|
|
116
|
+
.then(deleteDockerContainer)
|
|
117
|
+
.then(async () => {
|
|
118
|
+
logger.log('ok', 'ensured clean Docker environment!');
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
const postClean = async () => {
|
|
122
|
+
await deleteDockerContainer()
|
|
123
|
+
.then(deleteDockerImage)
|
|
124
|
+
.then(async () => {
|
|
125
|
+
logger.log('ok', 'cleaned up!');
|
|
126
|
+
});
|
|
127
|
+
await plugins.smartfs.file(paths.npmdockerFile).delete();
|
|
128
|
+
};
|
|
129
|
+
export let run = async (configArg) => {
|
|
130
|
+
config = configArg;
|
|
131
|
+
const resultConfig = await checkDocker()
|
|
132
|
+
.then(preClean)
|
|
133
|
+
.then(buildDockerFile)
|
|
134
|
+
.then(buildDockerImage)
|
|
135
|
+
.then(buildDockerProjectMountString)
|
|
136
|
+
.then(buildDockerEnvString)
|
|
137
|
+
.then(buildDockerSockString)
|
|
138
|
+
.then(runDockerImage)
|
|
139
|
+
.then(postClean)
|
|
140
|
+
.catch(err => {
|
|
141
|
+
console.log(err);
|
|
142
|
+
});
|
|
143
|
+
return config;
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuZG9ja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssUUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzNELFFBQVEsRUFBRSxNQUFNO0NBQ2pCLENBQUMsQ0FBQztBQUtILElBQUksTUFBZSxDQUFDO0FBRXBCOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsUUFBUSxFQUFFLDZCQUE2QjtJQUN2QyxhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixlQUFlLEVBQUUsRUFBRTtDQUNwQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFL0IsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGtDQUFrQyxD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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
export const logger = new plugins.smartlog.Smartlog({
|
|
3
|
+
logContext: {
|
|
4
|
+
company: 'Some Company',
|
|
5
|
+
companyunit: 'Some CompanyUnit',
|
|
6
|
+
containerName: 'Some Containername',
|
|
7
|
+
environment: 'local',
|
|
8
|
+
runtime: 'node',
|
|
9
|
+
zone: 'gitzone'
|
|
10
|
+
},
|
|
11
|
+
minimumLogLevel: 'silly'
|
|
12
|
+
});
|
|
13
|
+
logger.addLogDestination(new plugins.smartlogDestinationLocal.DestinationLocal());
|
|
14
|
+
export const ora = new plugins.smartlogSouceOra.SmartlogSourceOra();
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIubG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzZG9ja2VyLmxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNsRCxVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsY0FBYztRQUN2QixXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLGFBQWEsRUFBRSxvQkFBb0I7UUFDbkMsV0FBVyxFQUFFLE9BQU87UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELGVBQWUsRUFBRSxPQUFPO0NBQ3pCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { dirname } from 'path';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
// directories
|
|
8
|
+
export let cwd = process.cwd();
|
|
9
|
+
export let packageBase = plugins.path.join(__dirname, '../');
|
|
10
|
+
export let assets = plugins.path.join(packageBase, 'assets/');
|
|
11
|
+
fs.mkdirSync(assets, { recursive: true });
|
|
12
|
+
export let npmdockerFile = plugins.path.join(cwd, 'npmdocker');
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2RvY2tlci5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdEMsY0FBYztBQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxDQUFDLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RCxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlELEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as lik from '@push.rocks/lik';
|
|
2
|
+
import * as npmextra from '@push.rocks/npmextra';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as projectinfo from '@push.rocks/projectinfo';
|
|
5
|
+
import * as smartpromise from '@push.rocks/smartpromise';
|
|
6
|
+
import * as qenv from '@push.rocks/qenv';
|
|
7
|
+
import * as smartcli from '@push.rocks/smartcli';
|
|
8
|
+
import { SmartFs } from '@push.rocks/smartfs';
|
|
9
|
+
import * as smartlog from '@push.rocks/smartlog';
|
|
10
|
+
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
11
|
+
import * as smartlogSouceOra from '@push.rocks/smartlog-source-ora';
|
|
12
|
+
import * as smartopen from '@push.rocks/smartopen';
|
|
13
|
+
import * as smartshell from '@push.rocks/smartshell';
|
|
14
|
+
import * as smartstring from '@push.rocks/smartstring';
|
|
15
|
+
export declare const smartfs: SmartFs;
|
|
16
|
+
export { lik, npmextra, path, projectinfo, smartpromise, qenv, smartcli, smartlog, smartlogDestinationLocal, smartlogSouceOra, smartopen, smartshell, smartstring };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// push.rocks scope
|
|
2
|
+
import * as lik from '@push.rocks/lik';
|
|
3
|
+
import * as npmextra from '@push.rocks/npmextra';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import * as projectinfo from '@push.rocks/projectinfo';
|
|
6
|
+
import * as smartpromise from '@push.rocks/smartpromise';
|
|
7
|
+
import * as qenv from '@push.rocks/qenv';
|
|
8
|
+
import * as smartcli from '@push.rocks/smartcli';
|
|
9
|
+
import { SmartFs, SmartFsProviderNode } from '@push.rocks/smartfs';
|
|
10
|
+
import * as smartlog from '@push.rocks/smartlog';
|
|
11
|
+
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
12
|
+
import * as smartlogSouceOra from '@push.rocks/smartlog-source-ora';
|
|
13
|
+
import * as smartopen from '@push.rocks/smartopen';
|
|
14
|
+
import * as smartshell from '@push.rocks/smartshell';
|
|
15
|
+
import * as smartstring from '@push.rocks/smartstring';
|
|
16
|
+
// Create smartfs instance
|
|
17
|
+
export const smartfs = new SmartFs(new SmartFsProviderNode());
|
|
18
|
+
export { lik, npmextra, path, projectinfo, smartpromise, qenv, smartcli, smartlog, smartlogDestinationLocal, smartlogSouceOra, smartopen, smartshell, smartstring };
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzZG9ja2VyLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLElBQUksTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEtBQUssZ0JBQWdCLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLFlBQVksRUFDWixJQUFJLEVBQ0osUUFBUSxFQUNSLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNaLENBQUMifQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
let getMountSolutionString = (optionsArg) => {
|
|
3
|
+
if (process.env.CI) {
|
|
4
|
+
return 'COPY ./ /workspace';
|
|
5
|
+
}
|
|
6
|
+
else {
|
|
7
|
+
return '# not copying workspcae since not in CI';
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
let getGlobalPreparationString = (optionsArg) => {
|
|
11
|
+
// Always install tsdocker to ensure the latest version is available
|
|
12
|
+
return 'RUN npm install -g @git.zone/tsdocker';
|
|
13
|
+
};
|
|
14
|
+
export let dockerfileSnippet = (optionsArg) => {
|
|
15
|
+
return plugins.smartstring.indent.normalize(`
|
|
16
|
+
FROM ${optionsArg.baseImage}
|
|
17
|
+
# For info about what tsdocker does read the docs at https://gitzone.github.io/tsdocker
|
|
18
|
+
${getGlobalPreparationString(optionsArg)}
|
|
19
|
+
${getMountSolutionString(optionsArg)}
|
|
20
|
+
WORKDIR /workspace
|
|
21
|
+
ENV CI=true
|
|
22
|
+
ENTRYPOINT ["tsdocker"]
|
|
23
|
+
CMD ["runinside"]
|
|
24
|
+
`);
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuc25pcHBldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2RvY2tlci5zbmlwcGV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBT2pELElBQUksc0JBQXNCLEdBQUcsQ0FBQyxVQUE4QixFQUFFLEVBQUU7SUFDOUQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLHlDQUF5QyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFJLDBCQUEwQixHQUFHLENBQUMsVUFBOEIsRUFBRSxFQUFFO0lBQ2xFLG9FQUFvRTtJQUNwRSxPQUFPLHVDQUF1QyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsVUFBOEIsRUFBVSxFQUFFO0lBQ3hFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN6QztPQUNHLFVBQVUsQ0FBQyxTQUFTOztFQUV6QiwwQkFBMEIsQ0FBQyxVQUFVLENBQUM7RUFDdEMsc0JBQXNCLENBQUMsVUFBVSxDQUFDOzs7OztDQUtuQyxDQUNFLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
package/npmextra.json
CHANGED
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
"mode": "default",
|
|
4
4
|
"cli": true
|
|
5
5
|
},
|
|
6
|
-
"
|
|
7
|
-
"npmGlobalTools": [],
|
|
8
|
-
"npmAccessLevel": "public"
|
|
9
|
-
},
|
|
10
|
-
"gitzone": {
|
|
6
|
+
"@git.zone/cli": {
|
|
11
7
|
"projectType": "npm",
|
|
12
8
|
"module": {
|
|
13
9
|
"githost": "gitlab.com",
|
|
@@ -16,6 +12,16 @@
|
|
|
16
12
|
"description": "develop npm modules cross platform with docker",
|
|
17
13
|
"npmPackagename": "@git.zone/tsdocker",
|
|
18
14
|
"license": "MIT"
|
|
15
|
+
},
|
|
16
|
+
"release": {
|
|
17
|
+
"accessLevel": "public",
|
|
18
|
+
"registries": [
|
|
19
|
+
"https://verdaccio.lossless.digital",
|
|
20
|
+
"https://registry.npmjs.org"
|
|
21
|
+
]
|
|
19
22
|
}
|
|
23
|
+
},
|
|
24
|
+
"@ship.zone/szci": {
|
|
25
|
+
"npmGlobalTools": []
|
|
20
26
|
}
|
|
21
|
-
}
|
|
27
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tsdocker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "develop npm modules cross platform with docker",
|
|
6
|
-
"main": "
|
|
7
|
-
"typings": "
|
|
6
|
+
"main": "dist_ts/index.js",
|
|
7
|
+
"typings": "dist_ts/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
9
|
"tsdocker": "cli.js"
|
|
10
10
|
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "(npm run build)",
|
|
13
|
+
"build": "(tsbuild)",
|
|
14
|
+
"testIntegration": "(npm run clean && npm run setupCheck && npm run testStandard)",
|
|
15
|
+
"testStandard": "(cd test/ && tsx ../ts/index.ts)",
|
|
16
|
+
"testClean": "(cd test/ && tsx ../ts/index.ts clean --all)",
|
|
17
|
+
"testVscode": "(cd test/ && tsx ../ts/index.ts vscode)",
|
|
18
|
+
"clean": "(rm -rf test/)",
|
|
19
|
+
"compile": "(npmts --notest)",
|
|
20
|
+
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
|
|
21
|
+
"buildDocs": "tsdoc"
|
|
22
|
+
},
|
|
11
23
|
"repository": {
|
|
12
24
|
"type": "git",
|
|
13
25
|
"url": "https://gitlab.com/gitzone/tsdocker.git"
|
|
@@ -22,18 +34,19 @@
|
|
|
22
34
|
},
|
|
23
35
|
"homepage": "https://gitlab.com/gitzone/tsdocker#readme",
|
|
24
36
|
"devDependencies": {
|
|
25
|
-
"@git.zone/tsbuild": "^
|
|
26
|
-
"@git.zone/tsrun": "^2.0.
|
|
27
|
-
"@git.zone/tstest": "^3.1.
|
|
28
|
-
"@types/node": "^
|
|
37
|
+
"@git.zone/tsbuild": "^4.1.2",
|
|
38
|
+
"@git.zone/tsrun": "^2.0.1",
|
|
39
|
+
"@git.zone/tstest": "^3.1.6",
|
|
40
|
+
"@types/node": "^25.0.9"
|
|
29
41
|
},
|
|
30
42
|
"dependencies": {
|
|
43
|
+
"@push.rocks/lik": "^6.2.2",
|
|
31
44
|
"@push.rocks/npmextra": "^5.3.3",
|
|
32
45
|
"@push.rocks/projectinfo": "^5.0.2",
|
|
33
46
|
"@push.rocks/qenv": "^6.1.3",
|
|
34
47
|
"@push.rocks/smartanalytics": "^2.0.15",
|
|
35
|
-
"@push.rocks/smartcli": "^4.0.
|
|
36
|
-
"@push.rocks/smartfs": "^1.1
|
|
48
|
+
"@push.rocks/smartcli": "^4.0.20",
|
|
49
|
+
"@push.rocks/smartfs": "^1.3.1",
|
|
37
50
|
"@push.rocks/smartlog": "^3.1.10",
|
|
38
51
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
39
52
|
"@push.rocks/smartlog-source-ora": "^1.0.9",
|
|
@@ -42,6 +55,7 @@
|
|
|
42
55
|
"@push.rocks/smartshell": "^3.3.0",
|
|
43
56
|
"@push.rocks/smartstring": "^4.1.0"
|
|
44
57
|
},
|
|
58
|
+
"packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34",
|
|
45
59
|
"type": "module",
|
|
46
60
|
"files": [
|
|
47
61
|
"ts/**/*",
|
|
@@ -55,16 +69,7 @@
|
|
|
55
69
|
"npmextra.json",
|
|
56
70
|
"readme.md"
|
|
57
71
|
],
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"build": "(tsbuild)",
|
|
61
|
-
"testStandard": "(cd test/ && node ../cli.ts.js)",
|
|
62
|
-
"testSpeed": "(cd test/ && node ../cli.ts.js speedtest)",
|
|
63
|
-
"testClean": "(cd test/ && node ../cli.ts.js clean --all)",
|
|
64
|
-
"testVscode": "(cd test/ && node ../cli.ts.js vscode)",
|
|
65
|
-
"clean": "(rm -rf test/)",
|
|
66
|
-
"compile": "(npmts --notest)",
|
|
67
|
-
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
|
|
68
|
-
"buildDocs": "tsdoc"
|
|
72
|
+
"pnpm": {
|
|
73
|
+
"overrides": {}
|
|
69
74
|
}
|
|
70
|
-
}
|
|
75
|
+
}
|
package/readme.hints.md
CHANGED
|
@@ -2,39 +2,108 @@
|
|
|
2
2
|
|
|
3
3
|
## Module Purpose
|
|
4
4
|
|
|
5
|
-
tsdocker is a
|
|
5
|
+
tsdocker is a comprehensive Docker development and building tool. It provides:
|
|
6
|
+
- Testing npm modules in clean Docker environments (legacy feature)
|
|
7
|
+
- Building Dockerfiles with dependency ordering
|
|
8
|
+
- Multi-registry push/pull support
|
|
9
|
+
- Multi-architecture builds (amd64/arm64)
|
|
6
10
|
|
|
7
|
-
##
|
|
11
|
+
## New CLI Commands (2026-01-19)
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- Removed tslint and tslint-config-prettier (no longer needed)
|
|
13
|
+
| Command | Description |
|
|
14
|
+
|---------|-------------|
|
|
15
|
+
| `tsdocker` | Run tests in container (legacy default behavior) |
|
|
16
|
+
| `tsdocker build` | Build all Dockerfiles with dependency ordering |
|
|
17
|
+
| `tsdocker push [registry]` | Push images to configured registries |
|
|
18
|
+
| `tsdocker pull <registry>` | Pull images from registry |
|
|
19
|
+
| `tsdocker test` | Run container tests (test scripts) |
|
|
20
|
+
| `tsdocker login` | Login to configured registries |
|
|
21
|
+
| `tsdocker list` | List discovered Dockerfiles and dependencies |
|
|
22
|
+
| `tsdocker clean --all` | Clean up Docker environment |
|
|
23
|
+
| `tsdocker vscode` | Start VS Code in Docker |
|
|
21
24
|
|
|
22
|
-
##
|
|
25
|
+
## Configuration
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
Configure in `package.json` under `@git.zone/tsdocker`:
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"@git.zone/tsdocker": {
|
|
32
|
+
"registries": ["registry.gitlab.com", "docker.io"],
|
|
33
|
+
"registryRepoMap": {
|
|
34
|
+
"registry.gitlab.com": "host.today/ht-docker-node"
|
|
35
|
+
},
|
|
36
|
+
"buildArgEnvMap": {
|
|
37
|
+
"NODE_VERSION": "NODE_VERSION"
|
|
38
|
+
},
|
|
39
|
+
"platforms": ["linux/amd64", "linux/arm64"],
|
|
40
|
+
"push": false,
|
|
41
|
+
"testDir": "./test"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
30
45
|
|
|
31
|
-
|
|
46
|
+
### Configuration Options
|
|
32
47
|
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
48
|
+
- `baseImage`: Base Docker image for testing (legacy)
|
|
49
|
+
- `command`: Command to run in container (legacy)
|
|
50
|
+
- `dockerSock`: Mount Docker socket (legacy)
|
|
51
|
+
- `registries`: Array of registry URLs to push to
|
|
52
|
+
- `registryRepoMap`: Map registry URLs to different repo paths
|
|
53
|
+
- `buildArgEnvMap`: Map Docker build ARGs to environment variables
|
|
54
|
+
- `platforms`: Target architectures for buildx
|
|
55
|
+
- `push`: Auto-push after build
|
|
56
|
+
- `testDir`: Directory containing test scripts
|
|
57
|
+
|
|
58
|
+
## Registry Authentication
|
|
59
|
+
|
|
60
|
+
Set environment variables for registry login:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Pipe-delimited format (numbered 1-10)
|
|
64
|
+
export DOCKER_REGISTRY_1="registry.gitlab.com|username|password"
|
|
65
|
+
export DOCKER_REGISTRY_2="docker.io|username|password"
|
|
66
|
+
|
|
67
|
+
# Or individual registry format
|
|
68
|
+
export DOCKER_REGISTRY_URL="registry.gitlab.com"
|
|
69
|
+
export DOCKER_REGISTRY_USER="username"
|
|
70
|
+
export DOCKER_REGISTRY_PASSWORD="password"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## File Structure
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
ts/
|
|
77
|
+
├── index.ts (entry point)
|
|
78
|
+
├── tsdocker.cli.ts (CLI commands)
|
|
79
|
+
├── tsdocker.config.ts (configuration)
|
|
80
|
+
├── tsdocker.plugins.ts (plugin imports)
|
|
81
|
+
├── tsdocker.docker.ts (legacy test runner)
|
|
82
|
+
├── tsdocker.snippets.ts (Dockerfile generation)
|
|
83
|
+
├── classes.dockerfile.ts (Dockerfile management)
|
|
84
|
+
├── classes.dockerregistry.ts (registry authentication)
|
|
85
|
+
├── classes.registrystorage.ts (registry storage)
|
|
86
|
+
├── classes.tsdockermanager.ts (orchestrator)
|
|
87
|
+
└── interfaces/
|
|
88
|
+
└── index.ts (type definitions)
|
|
89
|
+
```
|
|
37
90
|
|
|
38
91
|
## Dependencies
|
|
39
92
|
|
|
40
|
-
|
|
93
|
+
- `@push.rocks/lik`: Object mapping utilities
|
|
94
|
+
- `@push.rocks/smartfs`: Filesystem operations
|
|
95
|
+
- `@push.rocks/smartshell`: Shell command execution
|
|
96
|
+
- `@push.rocks/smartcli`: CLI framework
|
|
97
|
+
- `@push.rocks/projectinfo`: Project metadata
|
|
98
|
+
|
|
99
|
+
## Build Status
|
|
100
|
+
|
|
101
|
+
- Build: ✅ Passes
|
|
102
|
+
- Legacy test functionality preserved
|
|
103
|
+
- New Docker build functionality added
|
|
104
|
+
|
|
105
|
+
## Previous Upgrades (2025-11-22)
|
|
106
|
+
|
|
107
|
+
- Updated all @git.zone/_ dependencies to @git.zone/_ scope
|
|
108
|
+
- Updated all @pushrocks/_ dependencies to @push.rocks/_ scope
|
|
109
|
+
- Migrated from smartfile v8 to smartfs v1.1.0
|