@git.zone/tsdocker 1.3.0 → 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/dist_ts/00_commitinfo_data.js +1 -1
- 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/interfaces/index.d.ts +68 -0
- package/dist_ts/interfaces/index.js +2 -0
- package/dist_ts/tsdocker.cli.js +115 -8
- package/dist_ts/tsdocker.config.d.ts +3 -8
- package/dist_ts/tsdocker.config.js +10 -2
- package/dist_ts/tsdocker.plugins.d.ts +2 -1
- package/dist_ts/tsdocker.plugins.js +3 -2
- package/package.json +2 -2
- package/readme.hints.md +95 -26
- package/readme.md +0 -8
- 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/interfaces/index.ts +70 -0
- package/ts/tsdocker.cli.ts +123 -10
- package/ts/tsdocker.config.ts +14 -7
- package/ts/tsdocker.plugins.ts +2 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
import { logger } from './tsdocker.logging.js';
|
|
3
|
+
import { DockerRegistry } from './classes.dockerregistry.js';
|
|
4
|
+
/**
|
|
5
|
+
* Storage class for managing multiple Docker registries
|
|
6
|
+
*/
|
|
7
|
+
export class RegistryStorage {
|
|
8
|
+
objectMap = new plugins.lik.ObjectMap();
|
|
9
|
+
constructor() {
|
|
10
|
+
// Nothing here
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Adds a registry to the storage
|
|
14
|
+
*/
|
|
15
|
+
addRegistry(registryArg) {
|
|
16
|
+
this.objectMap.add(registryArg);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets a registry by its URL
|
|
20
|
+
*/
|
|
21
|
+
getRegistryByUrl(registryUrlArg) {
|
|
22
|
+
return this.objectMap.findSync((registryArg) => {
|
|
23
|
+
return registryArg.registryUrl === registryUrlArg;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets all registries
|
|
28
|
+
*/
|
|
29
|
+
getAllRegistries() {
|
|
30
|
+
return this.objectMap.getArray();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Logs in to all registries
|
|
34
|
+
*/
|
|
35
|
+
async loginAll() {
|
|
36
|
+
await this.objectMap.forEach(async (registryArg) => {
|
|
37
|
+
await registryArg.login();
|
|
38
|
+
});
|
|
39
|
+
logger.log('success', 'logged in successfully into all available DockerRegistries!');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Logs out from all registries
|
|
43
|
+
*/
|
|
44
|
+
async logoutAll() {
|
|
45
|
+
await this.objectMap.forEach(async (registryArg) => {
|
|
46
|
+
await registryArg.logout();
|
|
47
|
+
});
|
|
48
|
+
logger.log('info', 'logged out from all DockerRegistries');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Loads registries from environment variables
|
|
52
|
+
* Looks for DOCKER_REGISTRY_1, DOCKER_REGISTRY_2, etc. (pipe-delimited format)
|
|
53
|
+
* Or individual registries like DOCKER_REGISTRY_GITLAB_URL, etc.
|
|
54
|
+
*/
|
|
55
|
+
loadFromEnv() {
|
|
56
|
+
// Check for numbered registry env vars (pipe-delimited format)
|
|
57
|
+
for (let i = 1; i <= 10; i++) {
|
|
58
|
+
const envVar = process.env[`DOCKER_REGISTRY_${i}`];
|
|
59
|
+
if (envVar) {
|
|
60
|
+
try {
|
|
61
|
+
const registry = DockerRegistry.fromEnvString(envVar);
|
|
62
|
+
this.addRegistry(registry);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
logger.log('warn', `Failed to parse DOCKER_REGISTRY_${i}: ${err.message}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Check for default registry
|
|
70
|
+
const defaultRegistry = DockerRegistry.fromEnv();
|
|
71
|
+
if (defaultRegistry) {
|
|
72
|
+
this.addRegistry(defaultRegistry);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yZWdpc3RyeXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnJlZ2lzdHJ5c3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNuQixTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBa0IsQ0FBQztJQUUvRDtRQUNFLGVBQWU7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLFdBQTJCO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLGNBQXNCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLFdBQVcsQ0FBQyxXQUFXLEtBQUssY0FBYyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUNqRCxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLDZEQUE2RCxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVM7UUFDcEIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUU7WUFDakQsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVztRQUNoQiwrREFBK0Q7UUFDL0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG1DQUFtQyxDQUFDLEtBQU0sR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Dockerfile } from './classes.dockerfile.js';
|
|
2
|
+
import { RegistryStorage } from './classes.registrystorage.js';
|
|
3
|
+
import type { ITsDockerConfig } from './interfaces/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Main orchestrator class for Docker operations
|
|
6
|
+
*/
|
|
7
|
+
export declare class TsDockerManager {
|
|
8
|
+
registryStorage: RegistryStorage;
|
|
9
|
+
config: ITsDockerConfig;
|
|
10
|
+
projectInfo: any;
|
|
11
|
+
private dockerfiles;
|
|
12
|
+
constructor(config: ITsDockerConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Prepares the manager by loading project info and registries
|
|
15
|
+
*/
|
|
16
|
+
prepare(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Logs in to all configured registries
|
|
19
|
+
*/
|
|
20
|
+
login(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Discovers and sorts Dockerfiles in the current directory
|
|
23
|
+
*/
|
|
24
|
+
discoverDockerfiles(): Promise<Dockerfile[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Builds all discovered Dockerfiles in dependency order
|
|
27
|
+
*/
|
|
28
|
+
build(): Promise<Dockerfile[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Ensures Docker buildx is set up for multi-architecture builds
|
|
31
|
+
*/
|
|
32
|
+
private ensureBuildx;
|
|
33
|
+
/**
|
|
34
|
+
* Pushes all built images to specified registries
|
|
35
|
+
*/
|
|
36
|
+
push(registryUrls?: string[]): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Pulls images from a specified registry
|
|
39
|
+
*/
|
|
40
|
+
pull(registryUrl: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Runs tests for all Dockerfiles
|
|
43
|
+
*/
|
|
44
|
+
test(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Lists all discovered Dockerfiles and their info
|
|
47
|
+
*/
|
|
48
|
+
list(): Promise<Dockerfile[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Gets the cached Dockerfiles (after discovery)
|
|
51
|
+
*/
|
|
52
|
+
getDockerfiles(): Dockerfile[];
|
|
53
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import * as plugins from './tsdocker.plugins.js';
|
|
2
|
+
import * as paths from './tsdocker.paths.js';
|
|
3
|
+
import { logger } from './tsdocker.logging.js';
|
|
4
|
+
import { Dockerfile } from './classes.dockerfile.js';
|
|
5
|
+
import { DockerRegistry } from './classes.dockerregistry.js';
|
|
6
|
+
import { RegistryStorage } from './classes.registrystorage.js';
|
|
7
|
+
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
8
|
+
executor: 'bash',
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Main orchestrator class for Docker operations
|
|
12
|
+
*/
|
|
13
|
+
export class TsDockerManager {
|
|
14
|
+
registryStorage;
|
|
15
|
+
config;
|
|
16
|
+
projectInfo;
|
|
17
|
+
dockerfiles = [];
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.registryStorage = new RegistryStorage();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prepares the manager by loading project info and registries
|
|
24
|
+
*/
|
|
25
|
+
async prepare() {
|
|
26
|
+
// Load project info
|
|
27
|
+
try {
|
|
28
|
+
const projectinfoInstance = new plugins.projectinfo.ProjectInfo(paths.cwd);
|
|
29
|
+
this.projectInfo = {
|
|
30
|
+
npm: {
|
|
31
|
+
name: projectinfoInstance.npm.name,
|
|
32
|
+
version: projectinfoInstance.npm.version,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
logger.log('warn', 'Could not load project info');
|
|
38
|
+
this.projectInfo = null;
|
|
39
|
+
}
|
|
40
|
+
// Load registries from environment
|
|
41
|
+
this.registryStorage.loadFromEnv();
|
|
42
|
+
// Add registries from config if specified
|
|
43
|
+
if (this.config.registries) {
|
|
44
|
+
for (const registryUrl of this.config.registries) {
|
|
45
|
+
// Check if already loaded from env
|
|
46
|
+
if (!this.registryStorage.getRegistryByUrl(registryUrl)) {
|
|
47
|
+
// Try to load credentials for this registry from env
|
|
48
|
+
const envVarName = registryUrl.replace(/\./g, '_').toUpperCase();
|
|
49
|
+
const envString = process.env[`DOCKER_REGISTRY_${envVarName}`];
|
|
50
|
+
if (envString) {
|
|
51
|
+
try {
|
|
52
|
+
const registry = DockerRegistry.fromEnvString(envString);
|
|
53
|
+
this.registryStorage.addRegistry(registry);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
logger.log('warn', `Could not load credentials for registry ${registryUrl}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
logger.log('info', `Prepared TsDockerManager with ${this.registryStorage.getAllRegistries().length} registries`);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Logs in to all configured registries
|
|
66
|
+
*/
|
|
67
|
+
async login() {
|
|
68
|
+
if (this.registryStorage.getAllRegistries().length === 0) {
|
|
69
|
+
logger.log('warn', 'No registries configured');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
await this.registryStorage.loginAll();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Discovers and sorts Dockerfiles in the current directory
|
|
76
|
+
*/
|
|
77
|
+
async discoverDockerfiles() {
|
|
78
|
+
this.dockerfiles = await Dockerfile.readDockerfiles(this);
|
|
79
|
+
this.dockerfiles = await Dockerfile.sortDockerfiles(this.dockerfiles);
|
|
80
|
+
this.dockerfiles = await Dockerfile.mapDockerfiles(this.dockerfiles);
|
|
81
|
+
return this.dockerfiles;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Builds all discovered Dockerfiles in dependency order
|
|
85
|
+
*/
|
|
86
|
+
async build() {
|
|
87
|
+
if (this.dockerfiles.length === 0) {
|
|
88
|
+
await this.discoverDockerfiles();
|
|
89
|
+
}
|
|
90
|
+
if (this.dockerfiles.length === 0) {
|
|
91
|
+
logger.log('warn', 'No Dockerfiles found');
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
// Check if buildx is needed
|
|
95
|
+
if (this.config.platforms && this.config.platforms.length > 1) {
|
|
96
|
+
await this.ensureBuildx();
|
|
97
|
+
}
|
|
98
|
+
logger.log('info', `Building ${this.dockerfiles.length} Dockerfiles...`);
|
|
99
|
+
await Dockerfile.buildDockerfiles(this.dockerfiles);
|
|
100
|
+
logger.log('success', 'All Dockerfiles built successfully');
|
|
101
|
+
return this.dockerfiles;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Ensures Docker buildx is set up for multi-architecture builds
|
|
105
|
+
*/
|
|
106
|
+
async ensureBuildx() {
|
|
107
|
+
logger.log('info', 'Setting up Docker buildx for multi-platform builds...');
|
|
108
|
+
// Check if a buildx builder exists
|
|
109
|
+
const inspectResult = await smartshellInstance.exec('docker buildx inspect tsdocker-builder 2>/dev/null');
|
|
110
|
+
if (inspectResult.exitCode !== 0) {
|
|
111
|
+
// Create a new buildx builder
|
|
112
|
+
logger.log('info', 'Creating new buildx builder...');
|
|
113
|
+
await smartshellInstance.exec('docker buildx create --name tsdocker-builder --use');
|
|
114
|
+
await smartshellInstance.exec('docker buildx inspect --bootstrap');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Use existing builder
|
|
118
|
+
await smartshellInstance.exec('docker buildx use tsdocker-builder');
|
|
119
|
+
}
|
|
120
|
+
logger.log('ok', 'Docker buildx ready');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Pushes all built images to specified registries
|
|
124
|
+
*/
|
|
125
|
+
async push(registryUrls) {
|
|
126
|
+
if (this.dockerfiles.length === 0) {
|
|
127
|
+
await this.discoverDockerfiles();
|
|
128
|
+
}
|
|
129
|
+
if (this.dockerfiles.length === 0) {
|
|
130
|
+
logger.log('warn', 'No Dockerfiles found to push');
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Determine which registries to push to
|
|
134
|
+
let registriesToPush = [];
|
|
135
|
+
if (registryUrls && registryUrls.length > 0) {
|
|
136
|
+
// Push to specified registries
|
|
137
|
+
for (const url of registryUrls) {
|
|
138
|
+
const registry = this.registryStorage.getRegistryByUrl(url);
|
|
139
|
+
if (registry) {
|
|
140
|
+
registriesToPush.push(registry);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
logger.log('warn', `Registry ${url} not found in storage`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Push to all configured registries
|
|
149
|
+
registriesToPush = this.registryStorage.getAllRegistries();
|
|
150
|
+
}
|
|
151
|
+
if (registriesToPush.length === 0) {
|
|
152
|
+
logger.log('warn', 'No registries available to push to');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// Push each Dockerfile to each registry
|
|
156
|
+
for (const dockerfile of this.dockerfiles) {
|
|
157
|
+
for (const registry of registriesToPush) {
|
|
158
|
+
await dockerfile.push(registry);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
logger.log('success', 'All images pushed successfully');
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Pulls images from a specified registry
|
|
165
|
+
*/
|
|
166
|
+
async pull(registryUrl) {
|
|
167
|
+
if (this.dockerfiles.length === 0) {
|
|
168
|
+
await this.discoverDockerfiles();
|
|
169
|
+
}
|
|
170
|
+
const registry = this.registryStorage.getRegistryByUrl(registryUrl);
|
|
171
|
+
if (!registry) {
|
|
172
|
+
throw new Error(`Registry ${registryUrl} not found`);
|
|
173
|
+
}
|
|
174
|
+
for (const dockerfile of this.dockerfiles) {
|
|
175
|
+
await dockerfile.pull(registry);
|
|
176
|
+
}
|
|
177
|
+
logger.log('success', 'All images pulled successfully');
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Runs tests for all Dockerfiles
|
|
181
|
+
*/
|
|
182
|
+
async test() {
|
|
183
|
+
if (this.dockerfiles.length === 0) {
|
|
184
|
+
await this.discoverDockerfiles();
|
|
185
|
+
}
|
|
186
|
+
if (this.dockerfiles.length === 0) {
|
|
187
|
+
logger.log('warn', 'No Dockerfiles found to test');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
await Dockerfile.testDockerfiles(this.dockerfiles);
|
|
191
|
+
logger.log('success', 'All tests completed');
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Lists all discovered Dockerfiles and their info
|
|
195
|
+
*/
|
|
196
|
+
async list() {
|
|
197
|
+
if (this.dockerfiles.length === 0) {
|
|
198
|
+
await this.discoverDockerfiles();
|
|
199
|
+
}
|
|
200
|
+
console.log('\nDiscovered Dockerfiles:');
|
|
201
|
+
console.log('========================\n');
|
|
202
|
+
for (let i = 0; i < this.dockerfiles.length; i++) {
|
|
203
|
+
const df = this.dockerfiles[i];
|
|
204
|
+
console.log(`${i + 1}. ${df.filePath}`);
|
|
205
|
+
console.log(` Tag: ${df.cleanTag}`);
|
|
206
|
+
console.log(` Base Image: ${df.baseImage}`);
|
|
207
|
+
console.log(` Version: ${df.version}`);
|
|
208
|
+
if (df.localBaseImageDependent) {
|
|
209
|
+
console.log(` Depends on: ${df.localBaseDockerfile?.cleanTag}`);
|
|
210
|
+
}
|
|
211
|
+
console.log('');
|
|
212
|
+
}
|
|
213
|
+
return this.dockerfiles;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Gets the cached Dockerfiles (after discovery)
|
|
217
|
+
*/
|
|
218
|
+
getDockerfiles() {
|
|
219
|
+
return this.dockerfiles;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50c2RvY2tlcm1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnRzZG9ja2VybWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUMzRCxRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQ25CLGVBQWUsQ0FBa0I7SUFDakMsTUFBTSxDQUFrQjtJQUN4QixXQUFXLENBQU07SUFDaEIsV0FBVyxHQUFpQixFQUFFLENBQUM7SUFFdkMsWUFBWSxNQUF1QjtRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQztZQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDakIsR0FBRyxFQUFFO29CQUNILElBQUksRUFBRSxtQkFB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
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration interface for tsdocker
|
|
3
|
+
* Extends legacy config with new Docker build capabilities
|
|
4
|
+
*/
|
|
5
|
+
export interface ITsDockerConfig {
|
|
6
|
+
baseImage: string;
|
|
7
|
+
command: string;
|
|
8
|
+
dockerSock: boolean;
|
|
9
|
+
keyValueObject: {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
};
|
|
12
|
+
registries?: string[];
|
|
13
|
+
registryRepoMap?: {
|
|
14
|
+
[registry: string]: string;
|
|
15
|
+
};
|
|
16
|
+
buildArgEnvMap?: {
|
|
17
|
+
[dockerArg: string]: string;
|
|
18
|
+
};
|
|
19
|
+
platforms?: string[];
|
|
20
|
+
push?: boolean;
|
|
21
|
+
testDir?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for constructing a DockerRegistry
|
|
25
|
+
*/
|
|
26
|
+
export interface IDockerRegistryOptions {
|
|
27
|
+
registryUrl: string;
|
|
28
|
+
username: string;
|
|
29
|
+
password: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Information about a discovered Dockerfile
|
|
33
|
+
*/
|
|
34
|
+
export interface IDockerfileInfo {
|
|
35
|
+
filePath: string;
|
|
36
|
+
fileName: string;
|
|
37
|
+
version: string;
|
|
38
|
+
baseImage: string;
|
|
39
|
+
buildTag: string;
|
|
40
|
+
localBaseImageDependent: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for creating a Dockerfile instance
|
|
44
|
+
*/
|
|
45
|
+
export interface IDockerfileOptions {
|
|
46
|
+
filePath?: string;
|
|
47
|
+
fileContents?: string;
|
|
48
|
+
read?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Result from a Docker build operation
|
|
52
|
+
*/
|
|
53
|
+
export interface IBuildResult {
|
|
54
|
+
success: boolean;
|
|
55
|
+
tag: string;
|
|
56
|
+
duration?: number;
|
|
57
|
+
error?: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Result from a Docker push operation
|
|
61
|
+
*/
|
|
62
|
+
export interface IPushResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
registry: string;
|
|
65
|
+
tag: string;
|
|
66
|
+
digest?: string;
|
|
67
|
+
error?: string;
|
|
68
|
+
}
|
package/dist_ts/tsdocker.cli.js
CHANGED
|
@@ -4,8 +4,10 @@ import * as paths from './tsdocker.paths.js';
|
|
|
4
4
|
import * as ConfigModule from './tsdocker.config.js';
|
|
5
5
|
import * as DockerModule from './tsdocker.docker.js';
|
|
6
6
|
import { logger, ora } from './tsdocker.logging.js';
|
|
7
|
+
import { TsDockerManager } from './classes.tsdockermanager.js';
|
|
7
8
|
const tsdockerCli = new plugins.smartcli.Smartcli();
|
|
8
9
|
export let run = () => {
|
|
10
|
+
// Default command: run tests in container (legacy behavior)
|
|
9
11
|
tsdockerCli.standardCommand().subscribe(async (argvArg) => {
|
|
10
12
|
const configArg = await ConfigModule.run().then(DockerModule.run);
|
|
11
13
|
if (configArg.exitCode === 0) {
|
|
@@ -16,6 +18,118 @@ export let run = () => {
|
|
|
16
18
|
process.exit(1);
|
|
17
19
|
}
|
|
18
20
|
});
|
|
21
|
+
/**
|
|
22
|
+
* Build all Dockerfiles in dependency order
|
|
23
|
+
*/
|
|
24
|
+
tsdockerCli.addCommand('build').subscribe(async (argvArg) => {
|
|
25
|
+
try {
|
|
26
|
+
const config = await ConfigModule.run();
|
|
27
|
+
const manager = new TsDockerManager(config);
|
|
28
|
+
await manager.prepare();
|
|
29
|
+
await manager.build();
|
|
30
|
+
logger.log('success', 'Build completed successfully');
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
logger.log('error', `Build failed: ${err.message}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Push built images to configured registries
|
|
39
|
+
*/
|
|
40
|
+
tsdockerCli.addCommand('push').subscribe(async (argvArg) => {
|
|
41
|
+
try {
|
|
42
|
+
const config = await ConfigModule.run();
|
|
43
|
+
const manager = new TsDockerManager(config);
|
|
44
|
+
await manager.prepare();
|
|
45
|
+
// Login first
|
|
46
|
+
await manager.login();
|
|
47
|
+
// Build images first (if not already built)
|
|
48
|
+
await manager.build();
|
|
49
|
+
// Get registry from arguments if specified
|
|
50
|
+
const registryArg = argvArg._[1]; // e.g., tsdocker push registry.gitlab.com
|
|
51
|
+
const registries = registryArg ? [registryArg] : undefined;
|
|
52
|
+
await manager.push(registries);
|
|
53
|
+
logger.log('success', 'Push completed successfully');
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
logger.log('error', `Push failed: ${err.message}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Pull images from a specified registry
|
|
62
|
+
*/
|
|
63
|
+
tsdockerCli.addCommand('pull').subscribe(async (argvArg) => {
|
|
64
|
+
try {
|
|
65
|
+
const registryArg = argvArg._[1]; // e.g., tsdocker pull registry.gitlab.com
|
|
66
|
+
if (!registryArg) {
|
|
67
|
+
logger.log('error', 'Registry URL required. Usage: tsdocker pull <registry-url>');
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
const config = await ConfigModule.run();
|
|
71
|
+
const manager = new TsDockerManager(config);
|
|
72
|
+
await manager.prepare();
|
|
73
|
+
// Login first
|
|
74
|
+
await manager.login();
|
|
75
|
+
await manager.pull(registryArg);
|
|
76
|
+
logger.log('success', 'Pull completed successfully');
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
logger.log('error', `Pull failed: ${err.message}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Run container tests for all Dockerfiles
|
|
85
|
+
*/
|
|
86
|
+
tsdockerCli.addCommand('test').subscribe(async (argvArg) => {
|
|
87
|
+
try {
|
|
88
|
+
const config = await ConfigModule.run();
|
|
89
|
+
const manager = new TsDockerManager(config);
|
|
90
|
+
await manager.prepare();
|
|
91
|
+
// Build images first
|
|
92
|
+
await manager.build();
|
|
93
|
+
// Run tests
|
|
94
|
+
await manager.test();
|
|
95
|
+
logger.log('success', 'Tests completed successfully');
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
logger.log('error', `Tests failed: ${err.message}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Login to configured registries
|
|
104
|
+
*/
|
|
105
|
+
tsdockerCli.addCommand('login').subscribe(async (argvArg) => {
|
|
106
|
+
try {
|
|
107
|
+
const config = await ConfigModule.run();
|
|
108
|
+
const manager = new TsDockerManager(config);
|
|
109
|
+
await manager.prepare();
|
|
110
|
+
await manager.login();
|
|
111
|
+
logger.log('success', 'Login completed successfully');
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
logger.log('error', `Login failed: ${err.message}`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* List discovered Dockerfiles and their dependencies
|
|
120
|
+
*/
|
|
121
|
+
tsdockerCli.addCommand('list').subscribe(async (argvArg) => {
|
|
122
|
+
try {
|
|
123
|
+
const config = await ConfigModule.run();
|
|
124
|
+
const manager = new TsDockerManager(config);
|
|
125
|
+
await manager.prepare();
|
|
126
|
+
await manager.list();
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
logger.log('error', `List failed: ${err.message}`);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
19
133
|
/**
|
|
20
134
|
* this command is executed inside docker and meant for use from outside docker
|
|
21
135
|
*/
|
|
@@ -52,13 +166,6 @@ export let run = () => {
|
|
|
52
166
|
}
|
|
53
167
|
ora.finishSuccess('docker environment now is clean!');
|
|
54
168
|
});
|
|
55
|
-
tsdockerCli.addCommand('speedtest').subscribe(async (argvArg) => {
|
|
56
|
-
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
57
|
-
executor: 'bash'
|
|
58
|
-
});
|
|
59
|
-
logger.log('ok', 'Starting speedtest');
|
|
60
|
-
await smartshellInstance.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest --accept-license --accept-gdpr`);
|
|
61
|
-
});
|
|
62
169
|
tsdockerCli.addCommand('vscode').subscribe(async (argvArg) => {
|
|
63
170
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
64
171
|
executor: 'bash'
|
|
@@ -69,4 +176,4 @@ export let run = () => {
|
|
|
69
176
|
});
|
|
70
177
|
tsdockerCli.startParse();
|
|
71
178
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUU3QyxVQUFVO0FBQ1YsT0FBTyxLQUFLLFlBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssWUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVwRCxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQ3BCLDREQUE0RDtJQUM1RCxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsRUFBRTtRQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsNENBQTRDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFD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
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
command: string;
|
|
4
|
-
dockerSock: boolean;
|
|
1
|
+
import type { ITsDockerConfig } from './interfaces/index.js';
|
|
2
|
+
export type IConfig = ITsDockerConfig & {
|
|
5
3
|
exitCode?: number;
|
|
6
|
-
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
4
|
+
};
|
|
10
5
|
export declare let run: () => Promise<IConfig>;
|
|
@@ -14,11 +14,19 @@ const getQenvKeyValueObject = async () => {
|
|
|
14
14
|
const buildConfig = async (qenvKeyValueObjectArg) => {
|
|
15
15
|
const npmextra = new plugins.npmextra.Npmextra(paths.cwd);
|
|
16
16
|
const config = npmextra.dataFor('@git.zone/tsdocker', {
|
|
17
|
+
// Legacy options (backward compatible)
|
|
17
18
|
baseImage: 'hosttoday/ht-docker-node:npmdocker',
|
|
18
19
|
init: 'rm -rf node_nodules/ && yarn install',
|
|
19
20
|
command: 'npmci npm test',
|
|
20
21
|
dockerSock: false,
|
|
21
|
-
keyValueObject: qenvKeyValueObjectArg
|
|
22
|
+
keyValueObject: qenvKeyValueObjectArg,
|
|
23
|
+
// New Docker build options
|
|
24
|
+
registries: [],
|
|
25
|
+
registryRepoMap: {},
|
|
26
|
+
buildArgEnvMap: {},
|
|
27
|
+
platforms: ['linux/amd64'],
|
|
28
|
+
push: false,
|
|
29
|
+
testDir: undefined,
|
|
22
30
|
});
|
|
23
31
|
return config;
|
|
24
32
|
};
|
|
@@ -26,4 +34,4 @@ export let run = async () => {
|
|
|
26
34
|
const config = await getQenvKeyValueObject().then(buildConfig);
|
|
27
35
|
return config;
|
|
28
36
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQVF6QixNQUFNLHFCQUFxQixHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3ZDLElBQUksdUJBQTJELENBQUM7SUFDaEUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVELHVCQUF1QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDdkYsQ0FBQztTQUFNLENBQUM7UUFDTix1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLHFCQUF5RCxFQUFFLEVBQUU7SUFDdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBVSxvQkFBb0IsRUFBRTtRQUM3RCx1Q0FBdUM7UUFDdkMsU0FBUyxFQUFFLG9DQUFvQztRQUMvQyxJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsVUFBVSxFQUFFLEtBQUs7UUFDakIsY0FBYyxFQUFFLHFCQUFxQjtRQUVyQywyQkFBMkI7UUFDM0IsVUFBVSxFQUFFLEVBQUU7UUFDZCxlQUFlLEVBQUUsRUFBRTtRQUNuQixjQUFjLEVBQUUsRUFBRTtRQUNsQixTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDMUIsSUFBSSxFQUFFLEtBQUs7UUFDWCxPQUFPLEVBQUUsU0FBUztLQUNuQixDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFzQixFQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIn0=
|