@goldstack/template-docker-image-aws 0.3.30
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/README.md +3 -0
- package/bin/template +8 -0
- package/dist/apiDockerImageAws.d.ts +40 -0
- package/dist/apiDockerImageAws.d.ts.map +1 -0
- package/dist/apiDockerImageAws.js +283 -0
- package/dist/apiDockerImageAws.js.map +1 -0
- package/dist/infraAwsDockerImage.d.ts +8 -0
- package/dist/infraAwsDockerImage.d.ts.map +1 -0
- package/dist/infraAwsDockerImage.js +86 -0
- package/dist/infraAwsDockerImage.js.map +1 -0
- package/dist/schemas/configSchema.json +170 -0
- package/dist/templateDockerImageAws.d.ts +8 -0
- package/dist/templateDockerImageAws.d.ts.map +1 -0
- package/dist/templateDockerImageAws.js +94 -0
- package/dist/templateDockerImageAws.js.map +1 -0
- package/dist/types/AWSDockerImagePackage.d.ts +54 -0
- package/dist/types/AWSDockerImagePackage.d.ts.map +1 -0
- package/dist/types/AWSDockerImagePackage.js +3 -0
- package/dist/types/AWSDockerImagePackage.js.map +1 -0
- package/package.json +76 -0
package/README.md
ADDED
package/bin/template
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import ECS from 'aws-sdk/clients/ecs';
|
|
2
|
+
import CloudWatchLogs from 'aws-sdk/clients/cloudwatchlogs';
|
|
3
|
+
import { AWSDockerImageDeployment, AWSDockerImagePackage } from './types/AWSDockerImagePackage';
|
|
4
|
+
import { DeploymentState } from '@goldstack/infra';
|
|
5
|
+
interface GetLogsParams {
|
|
6
|
+
taskId: string;
|
|
7
|
+
deployment: AWSDockerImageDeployment;
|
|
8
|
+
deploymentState: DeploymentState;
|
|
9
|
+
config: AWSDockerImagePackage;
|
|
10
|
+
limit?: number;
|
|
11
|
+
nextToken?: string;
|
|
12
|
+
startTime?: number;
|
|
13
|
+
endTime?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const getLogs: (params: GetLogsParams) => Promise<CloudWatchLogs.OutputLogEvents>;
|
|
16
|
+
interface EnvVarDefinition {
|
|
17
|
+
name: string;
|
|
18
|
+
value: string;
|
|
19
|
+
}
|
|
20
|
+
interface RunParams {
|
|
21
|
+
cmd: string[];
|
|
22
|
+
env?: EnvVarDefinition[];
|
|
23
|
+
imageHash?: string;
|
|
24
|
+
deployment: AWSDockerImageDeployment;
|
|
25
|
+
config: AWSDockerImagePackage;
|
|
26
|
+
deploymentState: DeploymentState;
|
|
27
|
+
}
|
|
28
|
+
export declare const getTaskStatus: (deployment: AWSDockerImageDeployment, taskExecutionArn: string) => Promise<ECS.Task>;
|
|
29
|
+
export interface StartTaskResult {
|
|
30
|
+
taskArn: string;
|
|
31
|
+
taskId: string;
|
|
32
|
+
awsLogsGroup: string;
|
|
33
|
+
awsLogsConsoleLink: string;
|
|
34
|
+
ecsConsoleLink: string;
|
|
35
|
+
}
|
|
36
|
+
export declare const startTask: (params: RunParams) => Promise<StartTaskResult>;
|
|
37
|
+
export declare const runTask: (params: RunParams) => Promise<StartTaskResult>;
|
|
38
|
+
export declare const apiDockerImageAwsCli: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment, args: string[]) => Promise<void>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=apiDockerImageAws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiDockerImageAws.d.ts","sourceRoot":"","sources":["../src/apiDockerImageAws.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAqB1B,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,wBAAwB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,WACV,aAAa,KACpB,QAAQ,eAAe,eAAe,CA6CxC,CAAC;AAEF,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,eACZ,wBAAwB,oBAClB,MAAM,KACvB,QAAQ,IAAI,IAAI,CAalB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,WACZ,SAAS,KAChB,QAAQ,eAAe,CAsIzB,CAAC;AAEF,eAAO,MAAM,OAAO,WAAkB,SAAS,KAAG,QAAQ,eAAe,CA+ExE,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,qBAAqB,cACjB,wBAAwB,QAC9B,MAAM,EAAE,KACb,QAAQ,IAAI,CAiDd,CAAC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.apiDockerImageAwsCli = exports.runTask = exports.startTask = exports.getTaskStatus = exports.getLogs = void 0;
|
|
7
|
+
const ecs_1 = __importDefault(require("aws-sdk/clients/ecs"));
|
|
8
|
+
const cloudwatchlogs_1 = __importDefault(require("aws-sdk/clients/cloudwatchlogs"));
|
|
9
|
+
const assert_1 = __importDefault(require("assert"));
|
|
10
|
+
const infra_aws_1 = require("@goldstack/infra-aws");
|
|
11
|
+
const infra_1 = require("@goldstack/infra");
|
|
12
|
+
const createECS = async (deployment) => {
|
|
13
|
+
const awsUser = await (0, infra_aws_1.getAWSUser)(deployment.awsUser);
|
|
14
|
+
return new ecs_1.default({
|
|
15
|
+
apiVersion: '2014-11-13',
|
|
16
|
+
credentials: awsUser,
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const createCloudWatchLogs = async (deployment) => {
|
|
20
|
+
const awsUser = await (0, infra_aws_1.getAWSUser)(deployment.awsUser);
|
|
21
|
+
return new cloudwatchlogs_1.default({
|
|
22
|
+
credentials: awsUser,
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const getLogs = async (params) => {
|
|
26
|
+
const ecs = await createECS(params.deployment);
|
|
27
|
+
const deploymentState = params.deploymentState;
|
|
28
|
+
const taskId = params.taskId;
|
|
29
|
+
const tasks = await ecs
|
|
30
|
+
.describeTasks({
|
|
31
|
+
tasks: [taskId],
|
|
32
|
+
cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
|
|
33
|
+
})
|
|
34
|
+
.promise();
|
|
35
|
+
(0, assert_1.default)(tasks.tasks);
|
|
36
|
+
const task = tasks.tasks[0];
|
|
37
|
+
(0, assert_1.default)(task.taskDefinitionArn);
|
|
38
|
+
const taskDefinitionResponse = await ecs
|
|
39
|
+
.describeTaskDefinition({
|
|
40
|
+
taskDefinition: task.taskDefinitionArn.split('/')[1],
|
|
41
|
+
})
|
|
42
|
+
.promise();
|
|
43
|
+
const taskDefinition = taskDefinitionResponse.taskDefinition;
|
|
44
|
+
(0, assert_1.default)(taskDefinition);
|
|
45
|
+
const containerDefinitions = taskDefinition.containerDefinitions;
|
|
46
|
+
(0, assert_1.default)(containerDefinitions);
|
|
47
|
+
const logConfiguration = containerDefinitions[0].logConfiguration;
|
|
48
|
+
(0, assert_1.default)(logConfiguration);
|
|
49
|
+
(0, assert_1.default)(logConfiguration.options);
|
|
50
|
+
const awsLogsGroup = logConfiguration.options['awslogs-group'];
|
|
51
|
+
const awsLogsPrefix = logConfiguration.options['awslogs-stream-prefix'];
|
|
52
|
+
const cwlogs = await createCloudWatchLogs(params.deployment);
|
|
53
|
+
const logEvents = await cwlogs
|
|
54
|
+
.getLogEvents({
|
|
55
|
+
logGroupName: awsLogsGroup,
|
|
56
|
+
logStreamName: `${awsLogsPrefix}/main/${taskId}`,
|
|
57
|
+
limit: params.limit,
|
|
58
|
+
nextToken: params.nextToken,
|
|
59
|
+
startTime: params.startTime,
|
|
60
|
+
endTime: params.endTime,
|
|
61
|
+
})
|
|
62
|
+
.promise();
|
|
63
|
+
return logEvents.events || [];
|
|
64
|
+
};
|
|
65
|
+
exports.getLogs = getLogs;
|
|
66
|
+
const getTaskStatus = async (deployment, taskExecutionArn) => {
|
|
67
|
+
const ecs = await createECS(deployment);
|
|
68
|
+
const tasksState = await ecs
|
|
69
|
+
.describeTasks({ tasks: [taskExecutionArn] })
|
|
70
|
+
.promise();
|
|
71
|
+
if (tasksState.failures && tasksState.failures.length > 0) {
|
|
72
|
+
throw new Error(`Cannot determine state of launched tast. ${tasksState.failures[0].reason}`);
|
|
73
|
+
}
|
|
74
|
+
(0, assert_1.default)(tasksState.tasks);
|
|
75
|
+
return tasksState.tasks[0];
|
|
76
|
+
};
|
|
77
|
+
exports.getTaskStatus = getTaskStatus;
|
|
78
|
+
const startTask = async (params) => {
|
|
79
|
+
const deployment = params.deployment;
|
|
80
|
+
const ecs = await createECS(params.deployment);
|
|
81
|
+
const config = params.config;
|
|
82
|
+
const deploymentState = params.deploymentState;
|
|
83
|
+
if (!deploymentState) {
|
|
84
|
+
throw new Error(`Deployment state for '${params.deployment.name}' is not defined. Make sure to have deployed the image to this environment.`);
|
|
85
|
+
}
|
|
86
|
+
const repo = (0, infra_1.readTerraformStateVariable)(deploymentState, 'repo_url');
|
|
87
|
+
let imageName;
|
|
88
|
+
let imageHash = params.imageHash;
|
|
89
|
+
if (!params.imageHash) {
|
|
90
|
+
if (!deploymentState['latest']) {
|
|
91
|
+
throw new Error(`Cannot run image since image has not been deployed for deployment '${params.deployment.name}'.`);
|
|
92
|
+
}
|
|
93
|
+
imageName = deploymentState['latest'];
|
|
94
|
+
imageHash = deploymentState['latest'].split(':')[1];
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
imageName = `${repo}:${imageHash}`;
|
|
98
|
+
}
|
|
99
|
+
const awsLogsGroup = '/ecs/' + repo + '/' + imageHash;
|
|
100
|
+
const taskDefinition = (await ecs
|
|
101
|
+
.registerTaskDefinition({
|
|
102
|
+
containerDefinitions: [
|
|
103
|
+
{
|
|
104
|
+
name: 'main',
|
|
105
|
+
command: params.cmd,
|
|
106
|
+
environment: params.env,
|
|
107
|
+
image: imageName,
|
|
108
|
+
logConfiguration: {
|
|
109
|
+
logDriver: 'awslogs',
|
|
110
|
+
options: {
|
|
111
|
+
'awslogs-create-group': 'true',
|
|
112
|
+
'awslogs-region': deployment.awsRegion,
|
|
113
|
+
'awslogs-group': awsLogsGroup,
|
|
114
|
+
'awslogs-stream-prefix': 'ecs',
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
taskRoleArn: (0, infra_1.readTerraformStateVariable)(deploymentState, 'ecs_task_role_arn'),
|
|
120
|
+
networkMode: 'awsvpc',
|
|
121
|
+
cpu: '1 vcpu',
|
|
122
|
+
memory: '4 GB',
|
|
123
|
+
executionRoleArn: (0, infra_1.readTerraformStateVariable)(deploymentState, 'ecs_task_execution_role_arn'),
|
|
124
|
+
requiresCompatibilities: ['FARGATE'],
|
|
125
|
+
family: `temp-${config.configuration.imageTag}-${new Date().getTime()}-${imageHash}`,
|
|
126
|
+
})
|
|
127
|
+
.promise()).taskDefinition;
|
|
128
|
+
(0, assert_1.default)(taskDefinition);
|
|
129
|
+
const clusterName = (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name');
|
|
130
|
+
const runTaskResponse = await ecs
|
|
131
|
+
.runTask({
|
|
132
|
+
cluster: clusterName,
|
|
133
|
+
count: 1,
|
|
134
|
+
launchType: 'FARGATE',
|
|
135
|
+
networkConfiguration: {
|
|
136
|
+
awsvpcConfiguration: {
|
|
137
|
+
subnets: [(0, infra_1.readTerraformStateVariable)(deploymentState, 'subnet')],
|
|
138
|
+
assignPublicIp: 'ENABLED',
|
|
139
|
+
securityGroups: [
|
|
140
|
+
(0, infra_1.readTerraformStateVariable)(deploymentState, 'container_security_group'),
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
taskDefinition: `${taskDefinition.family}:${taskDefinition.revision}`,
|
|
145
|
+
// command does not need to overriden here since it is defined in the task definition
|
|
146
|
+
overrides: {},
|
|
147
|
+
})
|
|
148
|
+
.promise();
|
|
149
|
+
const tasks = runTaskResponse.tasks;
|
|
150
|
+
if (!tasks) {
|
|
151
|
+
throw new Error(`Task definitions not supplied after running define tasks for ${imageName}`);
|
|
152
|
+
}
|
|
153
|
+
const taskExecution = tasks[0];
|
|
154
|
+
(0, assert_1.default)(taskExecution.taskArn);
|
|
155
|
+
const taskId = taskExecution.taskArn.split('/')[1];
|
|
156
|
+
const cloudWatchLink = `https://${deployment.awsRegion}.console.aws.amazon.com/cloudwatch/home?region=${deployment.awsRegion}#logsV2:log-groups/log-group/${awsLogsGroup.replace(/\//g, '$252F')}/log-events/${`ecs/main/${taskExecution.taskArn.split('/')[2]}`
|
|
157
|
+
.replace('$', '$2524')
|
|
158
|
+
.replace('[', '$255B')
|
|
159
|
+
.replace(']', '$255D')
|
|
160
|
+
.replace(/\//g, '$252F')}`;
|
|
161
|
+
const ecsConsoleLink = `https://${deployment.awsRegion}.console.aws.amazon.com/ecs/home?region=${deployment.awsRegion}#/clusters/${clusterName}/tasks/${taskExecution.taskArn.split('/')[2]}/details`;
|
|
162
|
+
return {
|
|
163
|
+
taskArn: taskExecution.taskArn,
|
|
164
|
+
taskId,
|
|
165
|
+
awsLogsGroup,
|
|
166
|
+
ecsConsoleLink,
|
|
167
|
+
awsLogsConsoleLink: cloudWatchLink,
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
exports.startTask = startTask;
|
|
171
|
+
const runTask = async (params) => {
|
|
172
|
+
var _a, _b;
|
|
173
|
+
const deployment = params.deployment;
|
|
174
|
+
const ecs = await createECS(deployment);
|
|
175
|
+
const result = await (0, exports.startTask)(params);
|
|
176
|
+
const taskId = result.taskArn.split('/')[1];
|
|
177
|
+
console.log(`Started task ${result.taskArn}`);
|
|
178
|
+
const deploymentState = params.deploymentState;
|
|
179
|
+
let tasks = await ecs
|
|
180
|
+
.describeTasks({
|
|
181
|
+
tasks: [taskId],
|
|
182
|
+
cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
|
|
183
|
+
})
|
|
184
|
+
.promise();
|
|
185
|
+
(0, assert_1.default)(tasks.tasks);
|
|
186
|
+
let task = tasks.tasks[0];
|
|
187
|
+
console.log(`Task status: ${task.lastStatus}`);
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
189
|
+
const waitForStateRunning = 'tasksRunning';
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
+
const waitForParams = {
|
|
192
|
+
tasks: [taskId],
|
|
193
|
+
cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
|
|
194
|
+
};
|
|
195
|
+
await ecs.waitFor(waitForStateRunning, waitForParams).promise();
|
|
196
|
+
console.log('Task started up successfully ...');
|
|
197
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
198
|
+
const waitForStateStopped = 'tasksStopped';
|
|
199
|
+
await ecs.waitFor(waitForStateStopped, waitForParams).promise();
|
|
200
|
+
console.log('Task stopped on ECS.');
|
|
201
|
+
tasks = await ecs
|
|
202
|
+
.describeTasks({
|
|
203
|
+
tasks: [taskId],
|
|
204
|
+
cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
|
|
205
|
+
})
|
|
206
|
+
.promise();
|
|
207
|
+
(0, assert_1.default)(tasks.tasks);
|
|
208
|
+
task = tasks.tasks[0];
|
|
209
|
+
const taskDefinition = {
|
|
210
|
+
family: (_a = task.taskDefinitionArn) === null || _a === void 0 ? void 0 : _a.split('/')[1].split(':')[0],
|
|
211
|
+
revision: (_b = task.taskDefinitionArn) === null || _b === void 0 ? void 0 : _b.split('/')[1].split(':')[1],
|
|
212
|
+
};
|
|
213
|
+
const logEvents = await (0, exports.getLogs)({
|
|
214
|
+
deployment,
|
|
215
|
+
taskId,
|
|
216
|
+
deploymentState,
|
|
217
|
+
config: params.config,
|
|
218
|
+
});
|
|
219
|
+
console.log('Logs from container:');
|
|
220
|
+
for (const event of logEvents) {
|
|
221
|
+
console.log(`> ${event.timestamp} ${event.message}`);
|
|
222
|
+
}
|
|
223
|
+
await ecs
|
|
224
|
+
.deregisterTaskDefinition({
|
|
225
|
+
taskDefinition: `${taskDefinition.family}:${taskDefinition.revision}`,
|
|
226
|
+
})
|
|
227
|
+
.promise();
|
|
228
|
+
(0, assert_1.default)(task.containers);
|
|
229
|
+
const taskContainer = task.containers[0];
|
|
230
|
+
const exitCode = taskContainer.exitCode;
|
|
231
|
+
console.log(`Container exited with code ${exitCode}`);
|
|
232
|
+
if (exitCode !== 0) {
|
|
233
|
+
throw new Error(`Error running container: ${taskContainer.reason}`);
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
};
|
|
237
|
+
exports.runTask = runTask;
|
|
238
|
+
const apiDockerImageAwsCli = async (config, deployment, args) => {
|
|
239
|
+
if (args.length < 1) {
|
|
240
|
+
throw new Error('Please specify an operation along with the image command. Supported operations ["run"]');
|
|
241
|
+
}
|
|
242
|
+
const [, deploymentName] = args;
|
|
243
|
+
const deploymentState = (0, infra_1.readDeploymentState)('./', deploymentName);
|
|
244
|
+
const operation = args[0];
|
|
245
|
+
if (operation === 'run') {
|
|
246
|
+
const [, , ...remainingArgs] = args;
|
|
247
|
+
const taskArn = await (0, exports.runTask)({
|
|
248
|
+
cmd: remainingArgs,
|
|
249
|
+
deployment,
|
|
250
|
+
deploymentState,
|
|
251
|
+
config,
|
|
252
|
+
});
|
|
253
|
+
console.log(taskArn);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (operation === 'start') {
|
|
257
|
+
const [, , ...remainingArgs] = args;
|
|
258
|
+
const taskArn = await (0, exports.startTask)({
|
|
259
|
+
cmd: remainingArgs,
|
|
260
|
+
deployment,
|
|
261
|
+
deploymentState,
|
|
262
|
+
config,
|
|
263
|
+
});
|
|
264
|
+
console.log(taskArn);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (operation === 'logs') {
|
|
268
|
+
const [, , taskArn] = args;
|
|
269
|
+
const logEvents = await (0, exports.getLogs)({
|
|
270
|
+
deployment,
|
|
271
|
+
taskId: taskArn.split('/')[1],
|
|
272
|
+
deploymentState,
|
|
273
|
+
config,
|
|
274
|
+
});
|
|
275
|
+
for (const event of logEvents) {
|
|
276
|
+
console.log(`${event.timestamp} ${event.message}`);
|
|
277
|
+
}
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
throw new Error(`Unknown operation for image command: ${operation}`);
|
|
281
|
+
};
|
|
282
|
+
exports.apiDockerImageAwsCli = apiDockerImageAwsCli;
|
|
283
|
+
//# sourceMappingURL=apiDockerImageAws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiDockerImageAws.js","sourceRoot":"","sources":["../src/apiDockerImageAws.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AWSDockerImagePackage, AWSDockerImageDeployment } from './types/AWSDockerImagePackage';
|
|
2
|
+
import { DeploymentState } from '@goldstack/infra';
|
|
3
|
+
export declare const getConfigSchema: () => object;
|
|
4
|
+
export declare const deploy: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment) => Promise<void>;
|
|
5
|
+
export declare const getDeploymentState: (deploymentName: string, deploymentsState: any) => DeploymentState;
|
|
6
|
+
export declare const getRepo: (deploymentName: string, deploymentsState?: any) => string;
|
|
7
|
+
export declare const infraAwsDockerImageCli: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment, args: string[]) => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=infraAwsDockerImage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraAwsDockerImage.d.ts","sourceRoot":"","sources":["../src/infraAwsDockerImage.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EAIL,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,eAAe,QAAO,MAAsB,CAAC;AAE1D,eAAO,MAAM,MAAM,WACT,qBAAqB,cACjB,wBAAwB,KACnC,QAAQ,IAAI,CA0Cd,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBACb,MAAM,oBAEJ,GAAG,KACpB,eAWF,CAAC;AAEF,eAAO,MAAM,OAAO,mBACF,MAAM,qBAEH,GAAG,KACrB,MAGF,CAAC;AAEF,eAAO,MAAM,sBAAsB,WACzB,qBAAqB,cACjB,wBAAwB,QAC9B,MAAM,EAAE,KACb,QAAQ,IAAI,CAad,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.infraAwsDockerImageCli = exports.getRepo = exports.getDeploymentState = exports.deploy = exports.getConfigSchema = void 0;
|
|
7
|
+
const configSchema_json_1 = __importDefault(require("./schemas/configSchema.json"));
|
|
8
|
+
const utils_terraform_aws_1 = require("@goldstack/utils-terraform-aws");
|
|
9
|
+
const utils_sh_1 = require("@goldstack/utils-sh");
|
|
10
|
+
const utils_git_1 = require("@goldstack/utils-git");
|
|
11
|
+
const utils_docker_1 = require("@goldstack/utils-docker");
|
|
12
|
+
const utils_aws_cli_1 = require("@goldstack/utils-aws-cli");
|
|
13
|
+
const infra_aws_1 = require("@goldstack/infra-aws");
|
|
14
|
+
const infra_1 = require("@goldstack/infra");
|
|
15
|
+
const getConfigSchema = () => configSchema_json_1.default;
|
|
16
|
+
exports.getConfigSchema = getConfigSchema;
|
|
17
|
+
const deploy = async (config, deployment) => {
|
|
18
|
+
const deploymentState = (0, infra_1.readDeploymentState)('./', deployment.name, {
|
|
19
|
+
createIfNotExist: true,
|
|
20
|
+
});
|
|
21
|
+
const repoUrl = (0, infra_1.readTerraformStateVariable)(deploymentState, 'repo_url');
|
|
22
|
+
(0, utils_docker_1.assertDocker)();
|
|
23
|
+
const ecrLoginPassword = (0, utils_aws_cli_1.awsCli)({
|
|
24
|
+
credentials: await (0, infra_aws_1.getAWSUser)(deployment.awsUser),
|
|
25
|
+
region: deployment.awsRegion,
|
|
26
|
+
command: `ecr get-login-password --region ${deployment.awsRegion}`,
|
|
27
|
+
options: {
|
|
28
|
+
silent: true,
|
|
29
|
+
},
|
|
30
|
+
}).trim();
|
|
31
|
+
(0, utils_sh_1.exec)(`docker login --username AWS --password ${ecrLoginPassword} ${repoUrl}`);
|
|
32
|
+
let commitHash = undefined;
|
|
33
|
+
try {
|
|
34
|
+
commitHash = (0, utils_git_1.hash)();
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.warn(`Cannot determine commit hash for tagging docker image: ${e}`);
|
|
38
|
+
}
|
|
39
|
+
if (!commitHash) {
|
|
40
|
+
(0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag} ${repoUrl}`);
|
|
41
|
+
(0, utils_sh_1.exec)(`docker push ${repoUrl}`);
|
|
42
|
+
deploymentState['latest'] = `${repoUrl}:latest`;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
(0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag}:${commitHash} ${repoUrl}:${commitHash}`);
|
|
46
|
+
(0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag}:${commitHash} ${repoUrl}:latest`);
|
|
47
|
+
(0, utils_sh_1.exec)(`docker push ${repoUrl}:${commitHash}`);
|
|
48
|
+
(0, utils_sh_1.exec)(`docker push ${repoUrl}:latest`);
|
|
49
|
+
deploymentState['latest'] = `${repoUrl}:${commitHash}`;
|
|
50
|
+
}
|
|
51
|
+
(0, infra_1.writeDeploymentState)('./', deploymentState);
|
|
52
|
+
};
|
|
53
|
+
exports.deploy = deploy;
|
|
54
|
+
const getDeploymentState = (deploymentName,
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
deploymentsState) => {
|
|
57
|
+
let state;
|
|
58
|
+
if (deploymentsState) {
|
|
59
|
+
state = (0, infra_1.getDeploymentState)((0, infra_1.validateDeploymentsState)(deploymentsState), deploymentName);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
state = (0, infra_1.readDeploymentState)('./', deploymentName);
|
|
63
|
+
}
|
|
64
|
+
return state;
|
|
65
|
+
};
|
|
66
|
+
exports.getDeploymentState = getDeploymentState;
|
|
67
|
+
const getRepo = (deploymentName,
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
|
+
deploymentsState) => {
|
|
70
|
+
const state = (0, exports.getDeploymentState)(deploymentName, deploymentsState);
|
|
71
|
+
return (0, infra_1.readTerraformStateVariable)(state, 'repo_url');
|
|
72
|
+
};
|
|
73
|
+
exports.getRepo = getRepo;
|
|
74
|
+
const infraAwsDockerImageCli = async (config, deployment, args) => {
|
|
75
|
+
if (args.length < 1) {
|
|
76
|
+
throw new Error('Please provide the operation in the arguments: "init", "plan", "apply", "deploy", "destroy".');
|
|
77
|
+
}
|
|
78
|
+
const [operation] = args;
|
|
79
|
+
if (operation === 'deploy') {
|
|
80
|
+
await (0, exports.deploy)(config, deployment);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
await (0, utils_terraform_aws_1.terraformAwsCli)(args);
|
|
84
|
+
};
|
|
85
|
+
exports.infraAwsDockerImageCli = infraAwsDockerImageCli;
|
|
86
|
+
//# sourceMappingURL=infraAwsDockerImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraAwsDockerImage.js","sourceRoot":"","sources":["../src/infraAwsDockerImage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/AWSDockerImagePackage",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"AWSDeploymentRegion": {
|
|
6
|
+
"description": "AWS region that infrastructure should be deployed to.",
|
|
7
|
+
"enum": [
|
|
8
|
+
"us-east-1",
|
|
9
|
+
"us-west-1",
|
|
10
|
+
"us-west-2",
|
|
11
|
+
"af-south-1",
|
|
12
|
+
"ap-east-1",
|
|
13
|
+
"ap-south-1",
|
|
14
|
+
"ap-northeast-3",
|
|
15
|
+
"ap-northeast-2",
|
|
16
|
+
"ap-southeast-1",
|
|
17
|
+
"ap-southeast-2",
|
|
18
|
+
"ap-northeast-1",
|
|
19
|
+
"ca-central-1",
|
|
20
|
+
"eu-central-1",
|
|
21
|
+
"eu-west-1",
|
|
22
|
+
"eu-west-2",
|
|
23
|
+
"eu-south-1",
|
|
24
|
+
"eu-west-3",
|
|
25
|
+
"eu-north-1",
|
|
26
|
+
"me-south-1",
|
|
27
|
+
"sa-east-1"
|
|
28
|
+
],
|
|
29
|
+
"title": "AWS Deployment Region",
|
|
30
|
+
"type": "string"
|
|
31
|
+
},
|
|
32
|
+
"AWSDockerImageConfiguration": {
|
|
33
|
+
"description": "Configures a docker image deployed to AWS.",
|
|
34
|
+
"properties": {
|
|
35
|
+
"imageTag": {
|
|
36
|
+
"description": "Defines the tag for identifying the docker image.",
|
|
37
|
+
"title": "Image Tag",
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"infrastructure": {
|
|
41
|
+
"$ref": "#/definitions/AWSDockerImageInfrastructureConfiguration"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"required": [
|
|
45
|
+
"imageTag",
|
|
46
|
+
"infrastructure"
|
|
47
|
+
],
|
|
48
|
+
"title": "AWS Docker Image Configuration",
|
|
49
|
+
"type": "object"
|
|
50
|
+
},
|
|
51
|
+
"AWSDockerImageInfrastructureConfiguration": {
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"description": "Infrastructure Configuration for deploying a static website.",
|
|
54
|
+
"properties": {
|
|
55
|
+
"deployments": {
|
|
56
|
+
"$ref": "#/definitions/Deployments"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"required": [
|
|
60
|
+
"deployments"
|
|
61
|
+
],
|
|
62
|
+
"title": "AWS Static Website Infrastructure Configuration",
|
|
63
|
+
"type": "object"
|
|
64
|
+
},
|
|
65
|
+
"AWSDockerImageInfrastructureDeployment": {
|
|
66
|
+
"description": "Configures a static website deployment.",
|
|
67
|
+
"properties": {
|
|
68
|
+
"awsRegion": {
|
|
69
|
+
"$ref": "#/definitions/AWSDeploymentRegion"
|
|
70
|
+
},
|
|
71
|
+
"awsUser": {
|
|
72
|
+
"$ref": "#/definitions/AWSUserName"
|
|
73
|
+
},
|
|
74
|
+
"name": {
|
|
75
|
+
"$ref": "#/definitions/DeploymentName"
|
|
76
|
+
},
|
|
77
|
+
"repositoryName": {
|
|
78
|
+
"description": "Defines the name for the docker repository. This name must be unique in the AWS region.",
|
|
79
|
+
"title": "Repository Name",
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
"terraformVariables": {
|
|
83
|
+
"$ref": "#/definitions/TerraformVariables"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"required": [
|
|
87
|
+
"awsRegion",
|
|
88
|
+
"awsUser",
|
|
89
|
+
"name",
|
|
90
|
+
"repositoryName"
|
|
91
|
+
],
|
|
92
|
+
"title": "Deployment",
|
|
93
|
+
"type": "object"
|
|
94
|
+
},
|
|
95
|
+
"AWSDockerImagePackage": {
|
|
96
|
+
"additionalProperties": false,
|
|
97
|
+
"description": "A docker image hosted on AWS.",
|
|
98
|
+
"properties": {
|
|
99
|
+
"configuration": {
|
|
100
|
+
"$ref": "#/definitions/AWSDockerImageConfiguration"
|
|
101
|
+
},
|
|
102
|
+
"name": {
|
|
103
|
+
"$ref": "#/definitions/Name"
|
|
104
|
+
},
|
|
105
|
+
"template": {
|
|
106
|
+
"$ref": "#/definitions/Template"
|
|
107
|
+
},
|
|
108
|
+
"templateVersion": {
|
|
109
|
+
"$ref": "#/definitions/TemplateVersion"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"required": [
|
|
113
|
+
"configuration",
|
|
114
|
+
"name",
|
|
115
|
+
"template",
|
|
116
|
+
"templateVersion"
|
|
117
|
+
],
|
|
118
|
+
"title": "AWS Docker Image Package",
|
|
119
|
+
"type": "object"
|
|
120
|
+
},
|
|
121
|
+
"AWSUserName": {
|
|
122
|
+
"description": "Name of the AWS user that is used to perform the deployment.",
|
|
123
|
+
"title": "AWS User Name",
|
|
124
|
+
"type": "string"
|
|
125
|
+
},
|
|
126
|
+
"DeploymentName": {
|
|
127
|
+
"description": "Identifier for this deployment. No spaces allowed in name.",
|
|
128
|
+
"pattern": "^[^\\s]*$",
|
|
129
|
+
"title": "Deployment Name",
|
|
130
|
+
"type": "string"
|
|
131
|
+
},
|
|
132
|
+
"Deployments": {
|
|
133
|
+
"description": "Places where the website should be deployed to.",
|
|
134
|
+
"items": {
|
|
135
|
+
"$ref": "#/definitions/AWSDockerImageInfrastructureDeployment"
|
|
136
|
+
},
|
|
137
|
+
"title": "Deployments",
|
|
138
|
+
"type": "array"
|
|
139
|
+
},
|
|
140
|
+
"Name": {
|
|
141
|
+
"description": "Name of this package.",
|
|
142
|
+
"title": "Package Name",
|
|
143
|
+
"type": "string"
|
|
144
|
+
},
|
|
145
|
+
"Template": {
|
|
146
|
+
"description": "Name of the template used for creating this package.",
|
|
147
|
+
"pattern": "^[^\\s]*$",
|
|
148
|
+
"title": "Template",
|
|
149
|
+
"type": "string"
|
|
150
|
+
},
|
|
151
|
+
"TemplateVersion": {
|
|
152
|
+
"description": "Latest template version that was applied to this package.",
|
|
153
|
+
"title": "Template Version",
|
|
154
|
+
"type": "string"
|
|
155
|
+
},
|
|
156
|
+
"TerraformVariable": {
|
|
157
|
+
"description": "Name of the property that should be converted into a Terraform variable.",
|
|
158
|
+
"title": "Terraform Variable",
|
|
159
|
+
"type": "string"
|
|
160
|
+
},
|
|
161
|
+
"TerraformVariables": {
|
|
162
|
+
"description": "Define which of the deployment variables will be made available for terraform.",
|
|
163
|
+
"items": {
|
|
164
|
+
"$ref": "#/definitions/TerraformVariable"
|
|
165
|
+
},
|
|
166
|
+
"title": "Terraform Variables",
|
|
167
|
+
"type": "array"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { getRepo, getDeploymentState } from './infraAwsDockerImage';
|
|
2
|
+
import { AWSDockerImagePackage, AWSDockerImageDeployment } from './types/AWSDockerImagePackage';
|
|
3
|
+
export { AWSDockerImagePackage, AWSDockerImageDeployment };
|
|
4
|
+
export { runTask, startTask, getLogs, StartTaskResult, } from './apiDockerImageAws';
|
|
5
|
+
export declare const getConfig: () => AWSDockerImagePackage;
|
|
6
|
+
export declare const getDeployment: (deploymentName: string) => AWSDockerImageDeployment;
|
|
7
|
+
export declare const run: (args: string[]) => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=templateDockerImageAws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDockerImageAws.d.ts","sourceRoot":"","sources":["../src/templateDockerImageAws.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,SAAS,QAAO,qBAQ5B,CAAC;AAEF,eAAO,MAAM,aAAa,mBACR,MAAM,KACrB,wBASF,CAAC;AA2BF,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,KAAG,QAAQ,IAAI,CA4CtD,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.run = exports.getDeployment = exports.getConfig = exports.getLogs = exports.startTask = exports.runTask = exports.getDeploymentState = exports.getRepo = void 0;
|
|
7
|
+
const utils_cli_1 = require("@goldstack/utils-cli");
|
|
8
|
+
const infraAwsDockerImage_1 = require("./infraAwsDockerImage");
|
|
9
|
+
var infraAwsDockerImage_2 = require("./infraAwsDockerImage");
|
|
10
|
+
Object.defineProperty(exports, "getRepo", { enumerable: true, get: function () { return infraAwsDockerImage_2.getRepo; } });
|
|
11
|
+
Object.defineProperty(exports, "getDeploymentState", { enumerable: true, get: function () { return infraAwsDockerImage_2.getDeploymentState; } });
|
|
12
|
+
const apiDockerImageAws_1 = require("./apiDockerImageAws");
|
|
13
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
14
|
+
const utils_package_1 = require("@goldstack/utils-package");
|
|
15
|
+
const utils_terraform_1 = require("@goldstack/utils-terraform");
|
|
16
|
+
const utils_package_config_1 = require("@goldstack/utils-package-config");
|
|
17
|
+
var apiDockerImageAws_2 = require("./apiDockerImageAws");
|
|
18
|
+
Object.defineProperty(exports, "runTask", { enumerable: true, get: function () { return apiDockerImageAws_2.runTask; } });
|
|
19
|
+
Object.defineProperty(exports, "startTask", { enumerable: true, get: function () { return apiDockerImageAws_2.startTask; } });
|
|
20
|
+
Object.defineProperty(exports, "getLogs", { enumerable: true, get: function () { return apiDockerImageAws_2.getLogs; } });
|
|
21
|
+
const getConfig = () => {
|
|
22
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
23
|
+
packagePath: './',
|
|
24
|
+
});
|
|
25
|
+
return packageConfig.getConfig();
|
|
26
|
+
};
|
|
27
|
+
exports.getConfig = getConfig;
|
|
28
|
+
const getDeployment = (deploymentName) => {
|
|
29
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
30
|
+
packagePath: './',
|
|
31
|
+
});
|
|
32
|
+
const config = packageConfig.getConfig();
|
|
33
|
+
return packageConfig.getDeployment(config, deploymentName);
|
|
34
|
+
};
|
|
35
|
+
exports.getDeployment = getDeployment;
|
|
36
|
+
const imageCommands = () => {
|
|
37
|
+
const deploymentPositional = (yargs) => {
|
|
38
|
+
return yargs.positional('deployment', {
|
|
39
|
+
type: 'string',
|
|
40
|
+
describe: 'Name of the deployment this command should be applied to',
|
|
41
|
+
demandOption: true,
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
return (yargs) => {
|
|
45
|
+
return yargs
|
|
46
|
+
.command('run <deployment>', 'Runs the image', deploymentPositional)
|
|
47
|
+
.command('start <deployment>', 'Starts the image', deploymentPositional)
|
|
48
|
+
.command('logs <taskId>', 'Prints the logs for an image', (yargs) => {
|
|
49
|
+
return yargs.positional('taskId', {
|
|
50
|
+
type: 'string',
|
|
51
|
+
describe: 'Id of the tasks for which logs should be obtained.',
|
|
52
|
+
demandOption: true,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const run = async (args) => {
|
|
58
|
+
await (0, utils_cli_1.wrapCli)(async () => {
|
|
59
|
+
const argv = (0, utils_package_1.buildCli)({
|
|
60
|
+
yargs: yargs_1.default,
|
|
61
|
+
deployCommands: (0, utils_package_1.buildDeployCommands)(),
|
|
62
|
+
infraCommands: (0, utils_terraform_1.infraCommands)(),
|
|
63
|
+
})
|
|
64
|
+
.command('image', 'Commands for working with images.', imageCommands())
|
|
65
|
+
.help().argv;
|
|
66
|
+
const packageConfig = new utils_package_config_1.PackageConfig({
|
|
67
|
+
packagePath: './',
|
|
68
|
+
});
|
|
69
|
+
const config = packageConfig.getConfig();
|
|
70
|
+
const command = argv._[0];
|
|
71
|
+
const [, , , ...opArgs] = args;
|
|
72
|
+
if (command === 'infra') {
|
|
73
|
+
const deploymentName = opArgs[1];
|
|
74
|
+
const deployment = packageConfig.getDeployment(config, deploymentName);
|
|
75
|
+
await (0, infraAwsDockerImage_1.infraAwsDockerImageCli)(config, deployment, opArgs);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (command === 'deploy') {
|
|
79
|
+
const deploymentName = opArgs[0];
|
|
80
|
+
const deployment = packageConfig.getDeployment(config, deploymentName);
|
|
81
|
+
await (0, infraAwsDockerImage_1.infraAwsDockerImageCli)(config, deployment, ['deploy', ...opArgs]);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (command === 'image') {
|
|
85
|
+
const deploymentName = opArgs[1];
|
|
86
|
+
const deployment = packageConfig.getDeployment(config, deploymentName);
|
|
87
|
+
await (0, apiDockerImageAws_1.apiDockerImageAwsCli)(config, deployment, opArgs);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
throw new Error('Unknown command: ' + command);
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
exports.run = run;
|
|
94
|
+
//# sourceMappingURL=templateDockerImageAws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateDockerImageAws.js","sourceRoot":"","sources":["../src/templateDockerImageAws.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Package, Configuration } from '@goldstack/utils-package';
|
|
2
|
+
import { AWSDeployment } from '@goldstack/infra-aws';
|
|
3
|
+
import { TerraformDeployment } from '@goldstack/utils-terraform';
|
|
4
|
+
import { Deployment } from '@goldstack/infra';
|
|
5
|
+
/**
|
|
6
|
+
* Defines the name for the docker repository. This name must be unique in the AWS region.
|
|
7
|
+
*
|
|
8
|
+
* @title Repository Name
|
|
9
|
+
*/
|
|
10
|
+
declare type RepositoryName = string;
|
|
11
|
+
export interface AWSDockerImageDeploymentConfiguration {
|
|
12
|
+
repositoryName: RepositoryName;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Configures a static website deployment.
|
|
16
|
+
*
|
|
17
|
+
* @title Deployment
|
|
18
|
+
*/
|
|
19
|
+
export interface AWSDockerImageDeployment extends Deployment, AWSDeployment, TerraformDeployment {
|
|
20
|
+
configuration: AWSDockerImageDeploymentConfiguration;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Places where the website should be deployed to.
|
|
24
|
+
*
|
|
25
|
+
* @title Deployments
|
|
26
|
+
*/
|
|
27
|
+
export declare type Deployments = AWSDockerImageDeployment[];
|
|
28
|
+
/**
|
|
29
|
+
* Defines the tag for identifying the docker image.
|
|
30
|
+
*
|
|
31
|
+
* @title Image Tag
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
declare type ImageTag = string;
|
|
35
|
+
/**
|
|
36
|
+
* Configures a docker image deployed to AWS.
|
|
37
|
+
*
|
|
38
|
+
* @title AWS Docker Image Configuration
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
export interface AWSDockerImagePackageConfiguration extends Configuration {
|
|
42
|
+
imageTag: ImageTag;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A docker image hosted on AWS.
|
|
46
|
+
*
|
|
47
|
+
* @title AWS Docker Image Package
|
|
48
|
+
*/
|
|
49
|
+
export interface AWSDockerImagePackage extends Package {
|
|
50
|
+
configuration: AWSDockerImagePackageConfiguration;
|
|
51
|
+
deployments: Deployments;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=AWSDockerImagePackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSDockerImagePackage.d.ts","sourceRoot":"","sources":["../../src/types/AWSDockerImagePackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,aAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,qCAAqC;IACpD,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBACf,SAAQ,UAAU,EAChB,aAAa,EACb,mBAAmB;IACrB,aAAa,EAAE,qCAAqC,CAAC;CACtD;AAED;;;;GAIG;AACH,oBAAY,WAAW,GAAG,wBAAwB,EAAE,CAAC;AAErD;;;;;GAKG;AACH,aAAK,QAAQ,GAAG,MAAM,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,WAAW,kCAAmC,SAAQ,aAAa;IACvE,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,OAAO;IACpD,aAAa,EAAE,kCAAkC,CAAC;IAClD,WAAW,EAAE,WAAW,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSDockerImagePackage.js","sourceRoot":"","sources":["../../src/types/AWSDockerImagePackage.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@goldstack/template-docker-image-aws",
|
|
3
|
+
"version": "0.3.30",
|
|
4
|
+
"description": "Utilities for packages that are deployed as Docker Images using AWS Fargate",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"goldstack",
|
|
7
|
+
"utility",
|
|
8
|
+
"infrastructure",
|
|
9
|
+
"IaC",
|
|
10
|
+
"fargate",
|
|
11
|
+
"ecs",
|
|
12
|
+
"aws",
|
|
13
|
+
"docker",
|
|
14
|
+
"configuration"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://goldstack.party",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/goldstack/goldstack/issues"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/goldstack/goldstack.git"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"author": "Max Rohde",
|
|
26
|
+
"sideEffects": false,
|
|
27
|
+
"main": "dist/templateDockerImageAws.js",
|
|
28
|
+
"bin": {
|
|
29
|
+
"template": "./bin/template",
|
|
30
|
+
"template-docker-image-aws": "./bin/template"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "yarn clean && yarn compile",
|
|
34
|
+
"build:watch": "yarn clean && yarn compile:watch",
|
|
35
|
+
"clean": "rm -rf ./dist",
|
|
36
|
+
"compile": "tsc -p tsconfig.json",
|
|
37
|
+
"compile:watch": "tsc -p tsconfig.json --watch",
|
|
38
|
+
"compile:watch:light": "nodemon --watch ./src/ -e '*' --exec 'yarn compile'",
|
|
39
|
+
"coverage": "jest --collect-coverage --passWithNoTests --config=./jest.config.js",
|
|
40
|
+
"generate:schema": "utils-package-config-generate AWSDockerImage && cp schemas/* ../../../templates/packages/docker-image-aws/schemas",
|
|
41
|
+
"prepublishOnly": "yarn run build",
|
|
42
|
+
"publish": "utils-git changed --exec \"yarn npm publish $@\"",
|
|
43
|
+
"test:ci": "jest --passWithNoTests --config=./jest.config.js",
|
|
44
|
+
"version:apply": "utils-git changed --exec \"yarn version $@ && yarn version apply\"",
|
|
45
|
+
"version:apply:force": "yarn version $@ && yarn version apply"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@goldstack/infra": "0.3.15",
|
|
49
|
+
"@goldstack/infra-aws": "0.3.17",
|
|
50
|
+
"@goldstack/utils-aws-cli": "0.3.20",
|
|
51
|
+
"@goldstack/utils-cli": "0.2.5",
|
|
52
|
+
"@goldstack/utils-config": "0.3.14",
|
|
53
|
+
"@goldstack/utils-docker": "0.3.15",
|
|
54
|
+
"@goldstack/utils-git": "0.1.26",
|
|
55
|
+
"@goldstack/utils-log": "0.2.6",
|
|
56
|
+
"@goldstack/utils-package": "0.3.15",
|
|
57
|
+
"@goldstack/utils-package-config": "0.3.15",
|
|
58
|
+
"@goldstack/utils-s3-deployment": "0.3.20",
|
|
59
|
+
"@goldstack/utils-sh": "0.4.13",
|
|
60
|
+
"@goldstack/utils-template": "0.3.14",
|
|
61
|
+
"@goldstack/utils-terraform": "0.3.23",
|
|
62
|
+
"@goldstack/utils-terraform-aws": "0.3.23",
|
|
63
|
+
"aws-sdk": "2.721.0",
|
|
64
|
+
"yargs": "^15.4.1"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@goldstack/utils-git": "0.1.26",
|
|
68
|
+
"@goldstack/utils-package-config-generate": "0.2.5",
|
|
69
|
+
"@types/jest": "^26.0.21",
|
|
70
|
+
"@types/node": "^14.0.6",
|
|
71
|
+
"@types/yargs": "^15.0.5",
|
|
72
|
+
"jest": "^26.6.3",
|
|
73
|
+
"ts-jest": "^26.5.4",
|
|
74
|
+
"typescript": "^4.4.3"
|
|
75
|
+
}
|
|
76
|
+
}
|