jenkins-generator 1.0.1 → 2.2.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/.dockerignore +8 -0
- package/DOCKER_COMPOSE_GUIDE.md +62 -0
- package/Dockerfile +23 -0
- package/README.md +240 -34
- package/dist/app.module.js +8 -0
- package/dist/app.module.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/config.interface.d.ts +42 -4
- package/dist/services/cicd-generator.service.d.ts +10 -1
- package/dist/services/cicd-generator.service.js +151 -20
- package/dist/services/cicd-generator.service.js.map +1 -1
- package/dist/services/cloud-provider.service.d.ts +1 -0
- package/dist/services/cloud-provider.service.js +135 -49
- package/dist/services/cloud-provider.service.js.map +1 -1
- package/dist/services/dashboard.service.d.ts +4 -0
- package/dist/services/dashboard.service.js +103 -0
- package/dist/services/dashboard.service.js.map +1 -0
- package/dist/services/docker-compose.service.d.ts +7 -0
- package/dist/services/docker-compose.service.js +113 -0
- package/dist/services/docker-compose.service.js.map +1 -0
- package/dist/services/environment.service.d.ts +10 -0
- package/dist/services/environment.service.js +163 -0
- package/dist/services/environment.service.js.map +1 -0
- package/dist/services/iac.service.d.ts +8 -0
- package/dist/services/iac.service.js +164 -0
- package/dist/services/iac.service.js.map +1 -0
- package/dist/services/jenkinsfile.service.d.ts +4 -1
- package/dist/services/jenkinsfile.service.js +153 -41
- package/dist/services/jenkinsfile.service.js.map +1 -1
- package/dist/services/notification.service.js +13 -15
- package/dist/services/notification.service.js.map +1 -1
- package/dist/services/prompt.service.d.ts +9 -0
- package/dist/services/prompt.service.js +637 -19
- package/dist/services/prompt.service.js.map +1 -1
- package/dist/services/validation.service.js +1 -1
- package/dist/services/validation.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docker-compose.yml +13 -0
- package/jest.config.js +12 -0
- package/package.json +8 -1
|
@@ -2,13 +2,22 @@ import { PromptService } from './prompt.service';
|
|
|
2
2
|
import { JenkinsFileService } from './jenkinsfile.service';
|
|
3
3
|
import { SecurityService } from './security.service';
|
|
4
4
|
import { ValidationService } from './validation.service';
|
|
5
|
+
import { EnvironmentService } from './environment.service';
|
|
6
|
+
import { IaCService } from './iac.service';
|
|
7
|
+
import { DashboardService } from './dashboard.service';
|
|
8
|
+
import { DockerComposeService } from './docker-compose.service';
|
|
5
9
|
export declare class CICDGeneratorService {
|
|
6
10
|
private readonly promptService;
|
|
7
11
|
private readonly jenkinsFileService;
|
|
8
12
|
private readonly securityService;
|
|
9
13
|
private readonly validationService;
|
|
10
|
-
|
|
14
|
+
private readonly environmentService;
|
|
15
|
+
private readonly iacService;
|
|
16
|
+
private readonly dashboardService;
|
|
17
|
+
private readonly dockerComposeService;
|
|
18
|
+
constructor(promptService: PromptService, jenkinsFileService: JenkinsFileService, securityService: SecurityService, validationService: ValidationService, environmentService: EnvironmentService, iacService: IaCService, dashboardService: DashboardService, dockerComposeService: DockerComposeService);
|
|
11
19
|
run(): Promise<void>;
|
|
12
20
|
private writeFiles;
|
|
21
|
+
private updateRootGitignore;
|
|
13
22
|
private displaySummary;
|
|
14
23
|
}
|
|
@@ -48,9 +48,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
48
48
|
exports.CICDGeneratorService = void 0;
|
|
49
49
|
const common_1 = require("@nestjs/common");
|
|
50
50
|
const prompt_service_1 = require("./prompt.service");
|
|
51
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
51
52
|
const jenkinsfile_service_1 = require("./jenkinsfile.service");
|
|
52
53
|
const security_service_1 = require("./security.service");
|
|
53
54
|
const validation_service_1 = require("./validation.service");
|
|
55
|
+
const environment_service_1 = require("./environment.service");
|
|
56
|
+
const iac_service_1 = require("./iac.service");
|
|
57
|
+
const dashboard_service_1 = require("./dashboard.service");
|
|
58
|
+
const docker_compose_service_1 = require("./docker-compose.service");
|
|
54
59
|
const fs = __importStar(require("fs-extra"));
|
|
55
60
|
const path = __importStar(require("path"));
|
|
56
61
|
const chalk_1 = __importDefault(require("chalk"));
|
|
@@ -60,11 +65,19 @@ let CICDGeneratorService = class CICDGeneratorService {
|
|
|
60
65
|
jenkinsFileService;
|
|
61
66
|
securityService;
|
|
62
67
|
validationService;
|
|
63
|
-
|
|
68
|
+
environmentService;
|
|
69
|
+
iacService;
|
|
70
|
+
dashboardService;
|
|
71
|
+
dockerComposeService;
|
|
72
|
+
constructor(promptService, jenkinsFileService, securityService, validationService, environmentService, iacService, dashboardService, dockerComposeService) {
|
|
64
73
|
this.promptService = promptService;
|
|
65
74
|
this.jenkinsFileService = jenkinsFileService;
|
|
66
75
|
this.securityService = securityService;
|
|
67
76
|
this.validationService = validationService;
|
|
77
|
+
this.environmentService = environmentService;
|
|
78
|
+
this.iacService = iacService;
|
|
79
|
+
this.dashboardService = dashboardService;
|
|
80
|
+
this.dockerComposeService = dockerComposeService;
|
|
68
81
|
}
|
|
69
82
|
async run() {
|
|
70
83
|
try {
|
|
@@ -73,49 +86,145 @@ let CICDGeneratorService = class CICDGeneratorService {
|
|
|
73
86
|
try {
|
|
74
87
|
const packageJson = await this.validationService.readPackageJson();
|
|
75
88
|
spinner.succeed('Project structure validated');
|
|
76
|
-
console.log(chalk_1.default.gray(`Found
|
|
89
|
+
console.log(chalk_1.default.gray(`Found project: ${packageJson.name}\n`));
|
|
77
90
|
}
|
|
78
91
|
catch (error) {
|
|
79
92
|
spinner.fail('Project validation failed');
|
|
80
93
|
throw error;
|
|
81
94
|
}
|
|
82
95
|
console.log(chalk_1.default.yellow('Please provide the following information:\n'));
|
|
83
|
-
const
|
|
96
|
+
const configPath = path.resolve(process.cwd(), 'jenkins-generator-config.json');
|
|
97
|
+
let config;
|
|
98
|
+
if (await fs.pathExists(configPath)) {
|
|
99
|
+
const loadConfig = await inquirer_1.default.prompt([
|
|
100
|
+
{
|
|
101
|
+
type: 'confirm',
|
|
102
|
+
name: 'usePreset',
|
|
103
|
+
message: 'Found existing jenkins-generator-config.json. Do you want to load it?',
|
|
104
|
+
default: true,
|
|
105
|
+
},
|
|
106
|
+
]);
|
|
107
|
+
if (loadConfig.usePreset) {
|
|
108
|
+
config = await fs.readJSON(configPath);
|
|
109
|
+
console.log(chalk_1.default.green('Configuration loaded successfully!\n'));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!config) {
|
|
113
|
+
config = await this.promptService.collectAllConfigurations();
|
|
114
|
+
const saveConfig = await inquirer_1.default.prompt([
|
|
115
|
+
{
|
|
116
|
+
type: 'confirm',
|
|
117
|
+
name: 'savePreset',
|
|
118
|
+
message: 'Do you want to save this configuration as a preset (jenkins-generator-config.json)?',
|
|
119
|
+
default: true,
|
|
120
|
+
},
|
|
121
|
+
]);
|
|
122
|
+
if (saveConfig.savePreset) {
|
|
123
|
+
await fs.writeJSON(configPath, config, { spaces: 2 });
|
|
124
|
+
console.log(chalk_1.default.green('Configuration saved to jenkins-generator-config.json\n'));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
84
127
|
const generatingSpinner = (0, ora_1.default)('Generating Jenkinsfile...').start();
|
|
85
128
|
const jenkinsfile = this.jenkinsFileService.generateJenkinsfile(config);
|
|
86
129
|
generatingSpinner.succeed('Jenkinsfile generated');
|
|
87
130
|
const credentialsGuide = this.jenkinsFileService.generateCredentialsSetupGuide(config);
|
|
88
131
|
const readme = this.jenkinsFileService.generateReadme(config);
|
|
132
|
+
let envTemplate = '';
|
|
133
|
+
if (config.project.externalServices &&
|
|
134
|
+
config.project.externalServices.length > 0) {
|
|
135
|
+
envTemplate = this.environmentService.generateEnvFileTemplate(config.project.externalServices);
|
|
136
|
+
}
|
|
137
|
+
const iacSpinner = (0, ora_1.default)('Generating Infrastructure as Code...').start();
|
|
138
|
+
const terraformConfig = this.iacService.generateTerraformConfig(config.cloud, config.project.projectName);
|
|
139
|
+
iacSpinner.succeed('Infrastructure as Code generated');
|
|
140
|
+
const dashboardSpinner = (0, ora_1.default)('Generating Deployment Dashboard...').start();
|
|
141
|
+
const dashboard = this.dashboardService.generateDeploymentDashboard(config);
|
|
142
|
+
dashboardSpinner.succeed('Deployment Dashboard generated');
|
|
143
|
+
let dockerCompose = '';
|
|
144
|
+
if (config.project.hasDockerfile) {
|
|
145
|
+
dockerCompose = this.dockerComposeService.generateDockerCompose(config);
|
|
146
|
+
}
|
|
89
147
|
const writingSpinner = (0, ora_1.default)('Writing files...').start();
|
|
90
|
-
await this.writeFiles(jenkinsfile, credentialsGuide, readme, config);
|
|
148
|
+
await this.writeFiles(jenkinsfile, credentialsGuide, readme, envTemplate, terraformConfig, dashboard, dockerCompose, config);
|
|
91
149
|
writingSpinner.succeed('Files written successfully');
|
|
92
150
|
this.displaySummary(config);
|
|
93
151
|
}
|
|
94
152
|
catch (error) {
|
|
95
|
-
console.error(chalk_1.default.red('\n❌ Error:'), error);
|
|
153
|
+
console.error(chalk_1.default.red('\n❌ Error:'), error.message);
|
|
154
|
+
throw error;
|
|
96
155
|
}
|
|
97
156
|
}
|
|
98
|
-
async writeFiles(jenkinsfile, credentialsGuide, readme, config) {
|
|
99
|
-
const
|
|
100
|
-
const cicdDir = path.join(
|
|
157
|
+
async writeFiles(jenkinsfile, credentialsGuide, readme, envTemplate, terraformConfig, dashboardContent, dockerComposeContent, config) {
|
|
158
|
+
const projectDir = process.cwd();
|
|
159
|
+
const cicdDir = path.join(projectDir, '.cicd');
|
|
101
160
|
await fs.ensureDir(cicdDir);
|
|
102
|
-
const jenkinsfilePath = path.join(
|
|
161
|
+
const jenkinsfilePath = path.join(projectDir, 'Jenkinsfile');
|
|
103
162
|
await fs.writeFile(jenkinsfilePath, jenkinsfile);
|
|
163
|
+
if (dockerComposeContent) {
|
|
164
|
+
await fs.writeFile(path.join(projectDir, 'docker-compose.yml'), dockerComposeContent);
|
|
165
|
+
}
|
|
104
166
|
const credentialsPath = path.join(cicdDir, 'CREDENTIALS_SETUP.md');
|
|
105
167
|
await fs.writeFile(credentialsPath, credentialsGuide);
|
|
106
168
|
const readmePath = path.join(cicdDir, 'README.md');
|
|
107
169
|
await fs.writeFile(readmePath, readme);
|
|
170
|
+
const envPath = path.join(projectDir, '.env.template');
|
|
171
|
+
await fs.writeFile(envPath, envTemplate);
|
|
172
|
+
const terraformDir = path.join(cicdDir, 'terraform');
|
|
173
|
+
await fs.ensureDir(terraformDir);
|
|
174
|
+
const terraformPath = path.join(terraformDir, 'main.tf');
|
|
175
|
+
await fs.writeFile(terraformPath, terraformConfig);
|
|
176
|
+
const dashboardPath = path.join(cicdDir, 'dashboard.html');
|
|
177
|
+
await fs.writeFile(dashboardPath, dashboardContent);
|
|
108
178
|
const configPath = path.join(cicdDir, 'config.encrypted.json');
|
|
109
|
-
const
|
|
110
|
-
await fs.writeFile(configPath,
|
|
111
|
-
|
|
112
|
-
await fs.writeFile(gitignorePath, 'config.encrypted.json\n*.log\n');
|
|
179
|
+
const encrypted = this.securityService.encryptCredentials(config);
|
|
180
|
+
await fs.writeFile(configPath, encrypted);
|
|
181
|
+
await this.updateRootGitignore(projectDir);
|
|
113
182
|
console.log(chalk_1.default.green('\n📁 Generated files:'));
|
|
114
183
|
console.log(chalk_1.default.gray(` ├─ Jenkinsfile (${jenkinsfilePath})`));
|
|
184
|
+
if (dockerComposeContent) {
|
|
185
|
+
console.log(chalk_1.default.gray(` ├─ docker-compose.yml`));
|
|
186
|
+
}
|
|
187
|
+
if (envTemplate) {
|
|
188
|
+
console.log(chalk_1.default.gray(` ├─ .env.template (for local development)`));
|
|
189
|
+
}
|
|
190
|
+
console.log(chalk_1.default.gray(` ├─ .cicd/terraform/main.tf`));
|
|
191
|
+
console.log(chalk_1.default.gray(` ├─ .cicd/dashboard.html`));
|
|
115
192
|
console.log(chalk_1.default.gray(` ├─ .cicd/CREDENTIALS_SETUP.md`));
|
|
116
193
|
console.log(chalk_1.default.gray(` ├─ .cicd/README.md`));
|
|
117
194
|
console.log(chalk_1.default.gray(` └─ .cicd/config.encrypted.json`));
|
|
118
195
|
}
|
|
196
|
+
async updateRootGitignore(rootDir) {
|
|
197
|
+
const gitignorePath = path.join(rootDir, '.gitignore');
|
|
198
|
+
try {
|
|
199
|
+
let gitignoreContent = '';
|
|
200
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
201
|
+
gitignoreContent = await fs.readFile(gitignorePath, 'utf-8');
|
|
202
|
+
}
|
|
203
|
+
const entriesToAdd = [
|
|
204
|
+
'# Environment variables',
|
|
205
|
+
'.env',
|
|
206
|
+
'.env.local',
|
|
207
|
+
'.env.*.local',
|
|
208
|
+
];
|
|
209
|
+
let needsUpdate = false;
|
|
210
|
+
const newEntries = [];
|
|
211
|
+
for (const entry of entriesToAdd) {
|
|
212
|
+
if (!gitignoreContent.includes(entry)) {
|
|
213
|
+
newEntries.push(entry);
|
|
214
|
+
needsUpdate = true;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (needsUpdate) {
|
|
218
|
+
const separator = gitignoreContent ? '\n\n' : '';
|
|
219
|
+
gitignoreContent += separator + newEntries.join('\n') + '\n';
|
|
220
|
+
await fs.writeFile(gitignorePath, gitignoreContent);
|
|
221
|
+
console.log(chalk_1.default.gray(' ├─ Updated .gitignore to exclude .env files'));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
console.log(chalk_1.default.yellow(' ⚠️ Could not update .gitignore (non-critical)'));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
119
228
|
displaySummary(config) {
|
|
120
229
|
console.log(chalk_1.default.green.bold('\n✅ CICD Pipeline Generated Successfully!\n'));
|
|
121
230
|
console.log(chalk_1.default.cyan('📋 Configuration Summary:'));
|
|
@@ -130,19 +239,37 @@ let CICDGeneratorService = class CICDGeneratorService {
|
|
|
130
239
|
console.log(chalk_1.default.white(` Instance: ${config.cloud.instanceType}`));
|
|
131
240
|
console.log(chalk_1.default.white(` Tests: ${config.project.runTests ? 'Enabled' : 'Disabled'}`));
|
|
132
241
|
console.log(chalk_1.default.white(` Auto-scaling: ${config.cloud.deploymentConfig.autoScaling ? 'Enabled' : 'Disabled'}`));
|
|
242
|
+
if (config.project.externalServices &&
|
|
243
|
+
config.project.externalServices.length > 0) {
|
|
244
|
+
console.log(chalk_1.default.white(` External Services: ${config.project.externalServices.length} configured`));
|
|
245
|
+
for (const service of config.project.externalServices) {
|
|
246
|
+
console.log(chalk_1.default.gray(` - ${service.name} (${service.service})`));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
133
249
|
console.log(chalk_1.default.gray('─'.repeat(60)));
|
|
134
250
|
console.log(chalk_1.default.yellow('\n📝 Next Steps:\n'));
|
|
135
251
|
console.log(chalk_1.default.white(' 1. Review the generated Jenkinsfile in your project root'));
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
252
|
+
if (config.project.externalServices &&
|
|
253
|
+
config.project.externalServices.length > 0) {
|
|
254
|
+
console.log(chalk_1.default.white(' 2. Copy .env.template to .env and fill in your values'));
|
|
255
|
+
console.log(chalk_1.default.white(' 3. Read .cicd/CREDENTIALS_SETUP.md for Jenkins credential setup'));
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
console.log(chalk_1.default.white(' 2. Read .cicd/CREDENTIALS_SETUP.md for Jenkins credential setup'));
|
|
259
|
+
}
|
|
260
|
+
console.log(chalk_1.default.white(' 4. Configure Jenkins credentials as specified'));
|
|
261
|
+
console.log(chalk_1.default.white(' 5. Create a new Jenkins Pipeline job'));
|
|
262
|
+
console.log(chalk_1.default.white(' 6. Point Jenkins to your repository'));
|
|
263
|
+
console.log(chalk_1.default.white(' 7. Run the pipeline and monitor deployment'));
|
|
141
264
|
console.log(chalk_1.default.yellow('\n⚠️ Important Security Notes:\n'));
|
|
142
|
-
console.log(chalk_1.default.red(' • NEVER commit .cicd/config.encrypted.json to version control'));
|
|
265
|
+
console.log(chalk_1.default.red(' • NEVER commit .env or .cicd/config.encrypted.json to version control'));
|
|
143
266
|
console.log(chalk_1.default.red(' • Always use Jenkins credential storage for sensitive data'));
|
|
144
267
|
console.log(chalk_1.default.red(' • Review and rotate credentials regularly'));
|
|
145
268
|
console.log(chalk_1.default.red(' • Keep your Jenkinsfile in version control'));
|
|
269
|
+
if (config.project.externalServices &&
|
|
270
|
+
config.project.externalServices.length > 0) {
|
|
271
|
+
console.log(chalk_1.default.red(' • .env.template is safe to commit, but NEVER commit .env'));
|
|
272
|
+
}
|
|
146
273
|
console.log(chalk_1.default.cyan('\n🚀 Your CI/CD pipeline is ready for deployment!\n'));
|
|
147
274
|
console.log(chalk_1.default.gray(`For detailed documentation, check .cicd/README.md\n`));
|
|
148
275
|
}
|
|
@@ -153,6 +280,10 @@ exports.CICDGeneratorService = CICDGeneratorService = __decorate([
|
|
|
153
280
|
__metadata("design:paramtypes", [prompt_service_1.PromptService,
|
|
154
281
|
jenkinsfile_service_1.JenkinsFileService,
|
|
155
282
|
security_service_1.SecurityService,
|
|
156
|
-
validation_service_1.ValidationService
|
|
283
|
+
validation_service_1.ValidationService,
|
|
284
|
+
environment_service_1.EnvironmentService,
|
|
285
|
+
iac_service_1.IaCService,
|
|
286
|
+
dashboard_service_1.DashboardService,
|
|
287
|
+
docker_compose_service_1.DockerComposeService])
|
|
157
288
|
], CICDGeneratorService);
|
|
158
289
|
//# sourceMappingURL=cicd-generator.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cicd-generator.service.js","sourceRoot":"","sources":["../../src/services/cicd-generator.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cicd-generator.service.js","sourceRoot":"","sources":["../../src/services/cicd-generator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,4 +6,5 @@ export declare class CloudProviderService {
|
|
|
6
6
|
generateDigitalOceanDeploymentScript(config: CloudConfig, dockerImageName: string): string;
|
|
7
7
|
generateDeploymentScript(config: CloudConfig, dockerImageName: string): string;
|
|
8
8
|
generateCredentialsEnvironmentVariables(config: CloudConfig): string;
|
|
9
|
+
private generateDeployedUrlExport;
|
|
9
10
|
}
|
|
@@ -10,14 +10,30 @@ exports.CloudProviderService = void 0;
|
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
let CloudProviderService = class CloudProviderService {
|
|
12
12
|
generateAWSDeploymentScript(config, dockerImageName) {
|
|
13
|
-
const { region, deploymentConfig } = config;
|
|
14
|
-
|
|
13
|
+
const { region, deploymentConfig, credentials } = config;
|
|
14
|
+
const awsCredentials = credentials;
|
|
15
|
+
let authLogic = `
|
|
15
16
|
#AWS Deployment Configuration
|
|
16
17
|
aws configure set aws_access_key_id \${AWS_ACCESS_KEY_ID}
|
|
17
18
|
aws configure set aws_secret_access_key \${AWS_SECRET_ACCESS_KEY}
|
|
18
|
-
aws configure set region ${region}
|
|
19
|
+
aws configure set region ${region}`;
|
|
20
|
+
if (awsCredentials.useOIDC && awsCredentials.oidcRoleArn) {
|
|
21
|
+
authLogic = `
|
|
22
|
+
# AWS OIDC Authentication
|
|
23
|
+
echo "Authenticating via OIDC..."
|
|
24
|
+
export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \\
|
|
25
|
+
$(aws sts assume-role-with-web-identity \\
|
|
26
|
+
--role-arn ${awsCredentials.oidcRoleArn} \\
|
|
27
|
+
--role-session-name JenkinsSession \\
|
|
28
|
+
--web-identity-token \${AWS_WEB_IDENTITY_TOKEN} \\
|
|
29
|
+
--query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \\
|
|
30
|
+
--output text))
|
|
31
|
+
aws configure set region ${region}`;
|
|
32
|
+
}
|
|
33
|
+
return `
|
|
34
|
+
${authLogic}
|
|
19
35
|
|
|
20
|
-
#Create/
|
|
36
|
+
#Create/Update ECS Cluster
|
|
21
37
|
aws ecs create-cluster --cluster-name ${dockerImageName}-cluster || true
|
|
22
38
|
|
|
23
39
|
#Register Task Definition
|
|
@@ -31,7 +47,7 @@ let CloudProviderService = class CloudProviderService {
|
|
|
31
47
|
"containerDefinitions": [
|
|
32
48
|
{
|
|
33
49
|
"name": "${dockerImageName}",
|
|
34
|
-
"image": "
|
|
50
|
+
"image": "\${DOCKER_IMAGE}",
|
|
35
51
|
"portMappings": [
|
|
36
52
|
{
|
|
37
53
|
"containerPort": ${deploymentConfig.port},
|
|
@@ -46,22 +62,23 @@ let CloudProviderService = class CloudProviderService {
|
|
|
46
62
|
"awslogs-stream-prefix": "ecs"
|
|
47
63
|
}
|
|
48
64
|
}
|
|
49
|
-
},
|
|
65
|
+
}],
|
|
50
66
|
"healthCheck": {
|
|
51
67
|
"command": ["CMD-SHELL", "curl -f http://localhost:${deploymentConfig.port}${deploymentConfig.healthCheckPath} || exit 1"],
|
|
52
68
|
"interval": 30,
|
|
53
69
|
"timeout": 5,
|
|
54
70
|
"retries": 3
|
|
55
71
|
}
|
|
56
|
-
}]
|
|
57
72
|
}
|
|
58
73
|
EOF
|
|
59
74
|
|
|
60
75
|
aws ecs register-task-definition --cli-input-json file://task-definition.json
|
|
61
76
|
|
|
62
|
-
#
|
|
77
|
+
# Check if ECS service exists
|
|
78
|
+
SERVICE_EXISTS=$(aws ecs describe-services --cluster ${dockerImageName}-cluster --services ${dockerImageName}-service --query 'services[0].status' --output text || echo "MISSING")
|
|
63
79
|
|
|
64
|
-
if[ "
|
|
80
|
+
if [ "$SERVICE_EXISTS" != "ACTIVE" ]; then
|
|
81
|
+
echo "Creating new ECS service..."
|
|
65
82
|
aws ecs create-service \\
|
|
66
83
|
--cluster ${dockerImageName}-cluster \\
|
|
67
84
|
--service-name ${dockerImageName}-service \\
|
|
@@ -70,25 +87,45 @@ let CloudProviderService = class CloudProviderService {
|
|
|
70
87
|
--launch-type FARGATE \\
|
|
71
88
|
--network-configuration "awsvpcConfiguration={subnets=[\${SUBNET_IDS}], securityGroups=[\${SECURITY_GROUP_IDS}], assignPublicIp=ENABLED}"
|
|
72
89
|
else
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
--force-new-deployment
|
|
90
|
+
echo "Updating existing ECS service with ${deploymentConfig.deploymentStrategy} strategy..."
|
|
91
|
+
if [ "${deploymentConfig.deploymentStrategy}" == "blue-green" ]; then
|
|
92
|
+
echo "Performing Blue-Green deployment..."
|
|
93
|
+
# Simulating blue-green by creating/updating a 'green' version
|
|
94
|
+
aws ecs update-service --cluster ${dockerImageName}-cluster --service ${dockerImageName}-service --task-definition ${dockerImageName} --force-new-deployment
|
|
95
|
+
elif [ "${deploymentConfig.deploymentStrategy}" == "canary" ]; then
|
|
96
|
+
echo "Performing Canary deployment (10% traffic)..."
|
|
97
|
+
aws ecs update-service --cluster ${dockerImageName}-cluster --service ${dockerImageName}-service --task-definition ${dockerImageName} --desired-count $(( ${deploymentConfig.minInstances || 1} + 1 ))
|
|
98
|
+
else
|
|
99
|
+
aws ecs update-service --cluster ${dockerImageName}-cluster --service ${dockerImageName}-service --task-definition ${dockerImageName} --force-new-deployment
|
|
100
|
+
fi
|
|
78
101
|
fi
|
|
79
102
|
|
|
80
|
-
|
|
81
|
-
|
|
103
|
+
${this.generateDeployedUrlExport(deploymentConfig, `TASK_ARN=$(aws ecs list-tasks --cluster ${dockerImageName}-cluster --service-name ${dockerImageName}-service --query 'taskArns[0]' --output text)
|
|
104
|
+
ENI_ID=$(aws ecs describe-tasks --cluster ${dockerImageName}-cluster --tasks $TASK_ARN --query 'tasks[0].attachments[0].details[?name==\`networkInterfaceId\`].value' --output text)
|
|
105
|
+
PUBLIC_IP=$(aws ec2 describe-network-interfaces --network-interface-ids $ENI_ID --query 'NetworkInterfaces[0].Association.PublicIp' --output text)
|
|
106
|
+
export DEPLOYED_URL="http://$PUBLIC_IP:${deploymentConfig.port}"`)}
|
|
82
107
|
`;
|
|
83
108
|
}
|
|
84
109
|
generateAzureDeploymentScript(config, dockerImageName) {
|
|
85
|
-
const { deploymentConfig } = config;
|
|
86
|
-
|
|
110
|
+
const { deploymentConfig, credentials } = config;
|
|
111
|
+
const azureCredentials = credentials;
|
|
112
|
+
let authLogic = `
|
|
87
113
|
# Azure Deployment Configuration
|
|
88
114
|
az login --service-principal \\
|
|
89
115
|
-u \${AZURE_CLIENT_ID} \\
|
|
90
116
|
-p \${AZURE_CLIENT_SECRET} \\
|
|
91
|
-
|
|
117
|
+
-t \${AZURE_TENANT_ID}`;
|
|
118
|
+
if (azureCredentials.useOIDC) {
|
|
119
|
+
authLogic = `
|
|
120
|
+
# Azure OIDC Authentication
|
|
121
|
+
echo "Authenticating via OIDC..."
|
|
122
|
+
az login --service-principal \\
|
|
123
|
+
-u \${AZURE_CLIENT_ID} \\
|
|
124
|
+
-t \${AZURE_TENANT_ID} \\
|
|
125
|
+
--federated-token \${AZURE_FEDERATED_TOKEN}`;
|
|
126
|
+
}
|
|
127
|
+
return `
|
|
128
|
+
${authLogic}
|
|
92
129
|
|
|
93
130
|
az account set --subscription \${AZURE_SUBSCRIPTION_ID}
|
|
94
131
|
|
|
@@ -106,35 +143,47 @@ let CloudProviderService = class CloudProviderService {
|
|
|
106
143
|
--registry-username \${ACR_USERNAME} \\
|
|
107
144
|
--registry-password \${ACR_PASSWORD} \\
|
|
108
145
|
--dns-name-label ${dockerImageName} \\
|
|
109
|
-
--ports ${deploymentConfig.port}
|
|
146
|
+
--ports ${deploymentConfig.port} \\
|
|
110
147
|
--environment-variables NODE_ENV=production \\
|
|
111
148
|
--restart-policy Always
|
|
112
|
-
|
|
113
|
-
|
|
149
|
+
|
|
150
|
+
${this.generateDeployedUrlExport(deploymentConfig, `export DEPLOYED_URL="http://${dockerImageName}.\${AZURE_REGION}.azurecontainer.io:${deploymentConfig.port}"`)}
|
|
114
151
|
`;
|
|
115
152
|
}
|
|
116
153
|
generateGCPDeploymentScript(config, dockerImageName) {
|
|
117
|
-
const { region, deploymentConfig } = config;
|
|
118
|
-
|
|
154
|
+
const { region, deploymentConfig, credentials } = config;
|
|
155
|
+
const gcpCredentials = credentials;
|
|
156
|
+
let authLogic = `
|
|
119
157
|
# GCP Deployment Configuration
|
|
120
158
|
gcloud auth activate-service-account --key-file=\${GCP_KEY_FILE}
|
|
121
159
|
gcloud config set project \${GCP_PROJECT_ID}
|
|
122
|
-
gcloud config set compute/region ${region}
|
|
160
|
+
gcloud config set compute/region ${region}`;
|
|
161
|
+
if (gcpCredentials.useOIDC) {
|
|
162
|
+
authLogic = `
|
|
163
|
+
# GCP OIDC Authentication
|
|
164
|
+
echo "Authenticating via OIDC..."
|
|
165
|
+
echo \${GCP_OIDC_TOKEN} > oidc_token.txt
|
|
166
|
+
gcloud auth login --cred-file=oidc_token.txt
|
|
167
|
+
gcloud config set project \${GCP_PROJECT_ID}
|
|
168
|
+
gcloud config set compute/region ${region}`;
|
|
169
|
+
}
|
|
170
|
+
return `
|
|
171
|
+
${authLogic}
|
|
123
172
|
|
|
124
173
|
# Deploy to Cloud Run
|
|
125
174
|
gcloud run deploy ${dockerImageName} \\
|
|
126
175
|
--image \${DOCKER_IMAGE} \\
|
|
127
176
|
--platform managed \\
|
|
128
|
-
--region ${region} \\
|
|
129
|
-
--allow-unauthenticated
|
|
130
177
|
--port ${deploymentConfig.port} \\
|
|
131
178
|
--memory 512Mi \\
|
|
132
179
|
--cpu 1 \\
|
|
133
180
|
--min-instances ${deploymentConfig.minInstances || 0} \\
|
|
134
181
|
--max-instances ${deploymentConfig.maxInstances || 1} \\
|
|
135
|
-
--set-env-vars NODE_ENV=production
|
|
182
|
+
--set-env-vars NODE_ENV=production \\
|
|
183
|
+
--region ${region} \\
|
|
184
|
+
--format='value(status.url)' > gcp_url.txt
|
|
136
185
|
|
|
137
|
-
|
|
186
|
+
${this.generateDeployedUrlExport(deploymentConfig, `export DEPLOYED_URL=$(cat gcp_url.txt)`)}
|
|
138
187
|
`;
|
|
139
188
|
}
|
|
140
189
|
generateDigitalOceanDeploymentScript(config, dockerImageName) {
|
|
@@ -163,7 +212,6 @@ let CloudProviderService = class CloudProviderService {
|
|
|
163
212
|
EOF
|
|
164
213
|
|
|
165
214
|
# Create or update app
|
|
166
|
-
|
|
167
215
|
APP_ID=\$(doctl apps list --format ID --no-header | head -n 1)
|
|
168
216
|
|
|
169
217
|
if [ -z "\$APP_ID" ]; then
|
|
@@ -172,7 +220,7 @@ let CloudProviderService = class CloudProviderService {
|
|
|
172
220
|
doctl apps update \$APP_ID --spec app-spec.yaml
|
|
173
221
|
fi
|
|
174
222
|
|
|
175
|
-
|
|
223
|
+
${this.generateDeployedUrlExport(deploymentConfig, `export DEPLOYED_URL=$(doctl apps get \$APP_ID --format DefaultIngress --no-header)`)}
|
|
176
224
|
`;
|
|
177
225
|
}
|
|
178
226
|
generateDeploymentScript(config, dockerImageName) {
|
|
@@ -192,27 +240,53 @@ let CloudProviderService = class CloudProviderService {
|
|
|
192
240
|
generateCredentialsEnvironmentVariables(config) {
|
|
193
241
|
const { provider, credentials } = config;
|
|
194
242
|
switch (provider) {
|
|
195
|
-
case 'aws':
|
|
243
|
+
case 'aws': {
|
|
244
|
+
const awsCreds = credentials;
|
|
245
|
+
if (awsCreds.useOIDC) {
|
|
246
|
+
return `
|
|
247
|
+
environment {
|
|
248
|
+
AWS_WEB_IDENTITY_TOKEN = credentials('aws-oidc-token')
|
|
249
|
+
}`;
|
|
250
|
+
}
|
|
196
251
|
return `
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
252
|
+
environment {
|
|
253
|
+
AWS_ACCESS_KEY_ID = credentials('aws-access-key-id')
|
|
254
|
+
AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key')
|
|
255
|
+
AWS_REGION = '${credentials['region']}'
|
|
256
|
+
}`;
|
|
257
|
+
}
|
|
258
|
+
case 'azure': {
|
|
259
|
+
const azCreds = credentials;
|
|
260
|
+
const baseEnv = `
|
|
261
|
+
AZURE_SUBSCRIPTION_ID = credentials('azure-subscription-id')
|
|
262
|
+
AZURE_TENANT_ID = credentials('azure-tenant-id')
|
|
263
|
+
AZURE_CLIENT_ID = credentials('azure-client-id')`;
|
|
264
|
+
if (azCreds.useOIDC) {
|
|
265
|
+
return `
|
|
266
|
+
environment {${baseEnv}
|
|
267
|
+
AZURE_FEDERATED_TOKEN = credentials('azure-federated-token')
|
|
268
|
+
}`;
|
|
269
|
+
}
|
|
203
270
|
return `
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
271
|
+
environment {${baseEnv}
|
|
272
|
+
AZURE_CLIENT_SECRET = credentials('azure-client-secret')
|
|
273
|
+
}`;
|
|
274
|
+
}
|
|
275
|
+
case 'gcp': {
|
|
276
|
+
const gcpCreds = credentials;
|
|
277
|
+
if (gcpCreds.useOIDC) {
|
|
278
|
+
return `
|
|
279
|
+
environment {
|
|
280
|
+
GCP_PROJECT_ID = credentials('gcp-project-id')
|
|
281
|
+
GCP_OIDC_TOKEN = credentials('gcp-oidc-token')
|
|
282
|
+
}`;
|
|
283
|
+
}
|
|
211
284
|
return `
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
285
|
+
environment {
|
|
286
|
+
GCP_PROJECT_ID = credentials('gcp-project-id')
|
|
287
|
+
GCP_KEY_FILE = credentials('gcp-key-file')
|
|
288
|
+
}`;
|
|
289
|
+
}
|
|
216
290
|
case 'digitalocean':
|
|
217
291
|
return `
|
|
218
292
|
environment {
|
|
@@ -222,6 +296,18 @@ let CloudProviderService = class CloudProviderService {
|
|
|
222
296
|
return '';
|
|
223
297
|
}
|
|
224
298
|
}
|
|
299
|
+
generateDeployedUrlExport(deploymentConfig, defaultUrlScript) {
|
|
300
|
+
if (deploymentConfig.useLoadBalancer && deploymentConfig.loadBalancerUrl) {
|
|
301
|
+
return `
|
|
302
|
+
export DEPLOYED_URL="${deploymentConfig.loadBalancerUrl}"
|
|
303
|
+
echo "DEPLOYED_URL=\$DEPLOYED_URL" >> deployment.env
|
|
304
|
+
echo "Deployment completed. Reachable at Load Balancer: \$DEPLOYED_URL"`;
|
|
305
|
+
}
|
|
306
|
+
return `
|
|
307
|
+
${defaultUrlScript}
|
|
308
|
+
echo "DEPLOYED_URL=\$DEPLOYED_URL" >> deployment.env
|
|
309
|
+
echo "Deployment completed. Reachable at: \$DEPLOYED_URL"`;
|
|
310
|
+
}
|
|
225
311
|
};
|
|
226
312
|
exports.CloudProviderService = CloudProviderService;
|
|
227
313
|
exports.CloudProviderService = CloudProviderService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-provider.service.js","sourceRoot":"","sources":["../../src/services/cloud-provider.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,2BAA2B,CACzB,MAAmB,EACnB,eAAuB;QAEvB,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cloud-provider.service.js","sourceRoot":"","sources":["../../src/services/cloud-provider.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,2BAA2B,CACzB,MAAmB,EACnB,eAAuB;QAEvB,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QACzD,MAAM,cAAc,GAAG,WAAkB,CAAC;QAE1C,IAAI,SAAS,GAAG;;;;+BAIW,MAAM,EAAE,CAAC;QAEpC,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;YACzD,SAAS,GAAG;;;;;iBAKD,cAAc,CAAC,WAAW;;;;;+BAKZ,MAAM,EAAE,CAAC;QACpC,CAAC;QAED,OAAO;MACL,SAAS;;;4CAG6B,eAAe;;;;;qBAKtC,eAAe;;;;;;;uBAOb,eAAe;;;;uCAIC,gBAAgB,CAAC,IAAI;;;;;;;6CAOf,eAAe;yCACnB,MAAM;;;;;;iEAOjC,gBAAgB,CAAC,IACnB,GAAG,gBAAgB,CAAC,eAAe;;;;;;;;;;;2DAWY,eAAe,uBAAuB,eAAe;;;;;wBAKxF,eAAe;6BACV,eAAe;gCACZ,eAAe;8BACjB,gBAAgB,CAAC,YAAY,IAAI,CAAC;;;;mDAKtD,gBAAgB,CAAC,kBACnB;gBACQ,gBAAgB,CAAC,kBAAkB;;;+CAGJ,eAAe,sBAAsB,eAAe,8BAA8B,eAAe;kBAC9H,gBAAgB,CAAC,kBAAkB;;+CAEN,eAAe,sBAAsB,eAAe,8BAA8B,eAAe,wBAC1I,gBAAgB,CAAC,YAAY,IAAI,CACnC;;+CAE2C,eAAe,sBAAsB,eAAe,8BAA8B,eAAe;;;;MAI1I,IAAI,CAAC,yBAAyB,CAC9B,gBAAgB,EAChB,2CAA2C,eAAe,2BAA2B,eAAe;gDAC1D,eAAe;;6CAElB,gBAAgB,CAAC,IAAI,GAAG,CAChE;KACA,CAAC;IACJ,CAAC;IAED,6BAA6B,CAC3B,MAAmB,EACnB,eAAuB;QAEvB,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,gBAAgB,GAAG,WAAkB,CAAC;QAE5C,IAAI,SAAS,GAAG;;;;;+BAKW,CAAC;QAE5B,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,SAAS,GAAG;;;;;;oDAMkC,CAAC;QACjD,CAAC;QAED,OAAO;MACL,SAAS;;;;;;;;;;iBAUE,eAAe;;;;;;;2BAOL,eAAe;kBACxB,gBAAgB,CAAC,IAAI;;;;MAIjC,IAAI,CAAC,yBAAyB,CAC9B,gBAAgB,EAChB,+BAA+B,eAAe,uCAAuC,gBAAgB,CAAC,IAAI,GAAG,CAC9G;KACA,CAAC;IACJ,CAAC;IAED,2BAA2B,CACzB,MAAmB,EACnB,eAAuB;QAEvB,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QACzD,MAAM,cAAc,GAAG,WAAkB,CAAC;QAE1C,IAAI,SAAS,GAAG;;;;uCAImB,MAAM,EAAE,CAAC;QAE5C,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,SAAS,GAAG;;;;;;uCAMqB,MAAM,EAAE,CAAC;QAC5C,CAAC;QAED,OAAO;MACL,SAAS;;;wBAGS,eAAe;;;iBAGtB,gBAAgB,CAAC,IAAI;;;0BAGZ,gBAAgB,CAAC,YAAY,IAAI,CAAC;0BAClC,gBAAgB,CAAC,YAAY,IAAI,CAAC;;mBAEzC,MAAM;;;MAGnB,IAAI,CAAC,yBAAyB,CAC9B,gBAAgB,EAChB,wCAAwC,CACzC;KACA,CAAC;IACJ,CAAC;IAED,oCAAoC,CAClC,MAAmB,EACnB,eAAuB;QAEvB,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;QAE5C,OAAO;;;;;;YAMC,eAAe;cACb,MAAM;;kBAEF,eAAe;;;;uBAIV,gBAAgB,CAAC,IAAI;4BAChB,gBAAgB,CAAC,YAAY,IAAI,CAAC;;;yBAGrC,gBAAgB,CAAC,eAAe;;;;;;;;;;;;;;;MAenD,IAAI,CAAC,yBAAyB,CAC9B,gBAAgB,EAChB,oFAAoF,CACrF;KACA,CAAC;IACJ,CAAC;IAED,wBAAwB,CACtB,MAAmB,EACnB,eAAuB;QAEvB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACnE,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACrE,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACnE,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,oCAAoC,CAC9C,MAAM,EACN,eAAe,CAChB,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,uCAAuC,CAAC,MAAmB;QACzD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEzC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,QAAQ,GAAG,WAAkB,CAAC;gBACpC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO;;;QAGT,CAAC;gBACD,CAAC;gBACD,OAAO;;;;wBAIS,WAAW,CAAC,QAAQ,CAAC;QACrC,CAAC;YACH,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAG,WAAkB,CAAC;gBACnC,MAAM,OAAO,GAAG;;;yDAGiC,CAAC;gBAElD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO;qBACI,OAAO;;QAEpB,CAAC;gBACD,CAAC;gBACD,OAAO;qBACM,OAAO;;QAEpB,CAAC;YACH,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,QAAQ,GAAG,WAAkB,CAAC;gBACpC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO;;;;QAIT,CAAC;gBACD,CAAC;gBACD,OAAO;;;;QAIP,CAAC;YACH,CAAC;YACD,KAAK,cAAc;gBACjB,OAAO;;;cAGD,CAAC;YACT;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,yBAAyB,CAC/B,gBAAqB,EACrB,gBAAwB;QAExB,IAAI,gBAAgB,CAAC,eAAe,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;YACzE,OAAO;2BACc,gBAAgB,CAAC,eAAe;;4EAEiB,CAAC;QACzE,CAAC;QAED,OAAO;MACL,gBAAgB;;8DAEwC,CAAC;IAC7D,CAAC;CACF,CAAA;AAtWY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CAsWhC"}
|