token-injectable-docker-builder 1.0.11 → 1.1.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/.jsii +29 -21
- package/API.md +32 -24
- package/lib/index.d.ts +15 -19
- package/lib/index.js +62 -47
- package/lib/integ.default.d.ts +1 -0
- package/lib/integ.default.js +20 -0
- package/package.json +4 -2
package/.jsii
CHANGED
|
@@ -3919,43 +3919,32 @@
|
|
|
3919
3919
|
"assembly": "token-injectable-docker-builder",
|
|
3920
3920
|
"base": "constructs.Construct",
|
|
3921
3921
|
"docs": {
|
|
3922
|
-
"example": "const dockerBuilder = new TokenInjectableDockerBuilder(this, 'DockerBuilder', {\n path: './docker',\n buildArgs: {\n TOKEN: 'my-secret-token',\n ENV: 'production'\n },\n});\n\nconst containerImage = dockerBuilder.getContainerImage();",
|
|
3923
3922
|
"stability": "stable",
|
|
3924
3923
|
"summary": "A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources."
|
|
3925
3924
|
},
|
|
3926
3925
|
"fqn": "token-injectable-docker-builder.TokenInjectableDockerBuilder",
|
|
3927
3926
|
"initializer": {
|
|
3928
3927
|
"docs": {
|
|
3929
|
-
"stability": "stable"
|
|
3930
|
-
"summary": "Creates a new `TokenInjectableDockerBuilder` instance."
|
|
3928
|
+
"stability": "stable"
|
|
3931
3929
|
},
|
|
3932
3930
|
"locationInModule": {
|
|
3933
3931
|
"filename": "src/index.ts",
|
|
3934
|
-
"line":
|
|
3932
|
+
"line": 58
|
|
3935
3933
|
},
|
|
3936
3934
|
"parameters": [
|
|
3937
3935
|
{
|
|
3938
|
-
"docs": {
|
|
3939
|
-
"summary": "The parent construct/stack."
|
|
3940
|
-
},
|
|
3941
3936
|
"name": "scope",
|
|
3942
3937
|
"type": {
|
|
3943
3938
|
"fqn": "constructs.Construct"
|
|
3944
3939
|
}
|
|
3945
3940
|
},
|
|
3946
3941
|
{
|
|
3947
|
-
"docs": {
|
|
3948
|
-
"summary": "The unique ID of the construct."
|
|
3949
|
-
},
|
|
3950
3942
|
"name": "id",
|
|
3951
3943
|
"type": {
|
|
3952
3944
|
"primitive": "string"
|
|
3953
3945
|
}
|
|
3954
3946
|
},
|
|
3955
3947
|
{
|
|
3956
|
-
"docs": {
|
|
3957
|
-
"summary": "Configuration properties for the construct."
|
|
3958
|
-
},
|
|
3959
3948
|
"name": "props",
|
|
3960
3949
|
"type": {
|
|
3961
3950
|
"fqn": "token-injectable-docker-builder.TokenInjectableDockerBuilderProps"
|
|
@@ -3966,7 +3955,7 @@
|
|
|
3966
3955
|
"kind": "class",
|
|
3967
3956
|
"locationInModule": {
|
|
3968
3957
|
"filename": "src/index.ts",
|
|
3969
|
-
"line":
|
|
3958
|
+
"line": 53
|
|
3970
3959
|
},
|
|
3971
3960
|
"name": "TokenInjectableDockerBuilder",
|
|
3972
3961
|
"properties": [
|
|
@@ -3977,7 +3966,7 @@
|
|
|
3977
3966
|
"immutable": true,
|
|
3978
3967
|
"locationInModule": {
|
|
3979
3968
|
"filename": "src/index.ts",
|
|
3980
|
-
"line":
|
|
3969
|
+
"line": 55
|
|
3981
3970
|
},
|
|
3982
3971
|
"name": "containerImage",
|
|
3983
3972
|
"type": {
|
|
@@ -3991,7 +3980,7 @@
|
|
|
3991
3980
|
"immutable": true,
|
|
3992
3981
|
"locationInModule": {
|
|
3993
3982
|
"filename": "src/index.ts",
|
|
3994
|
-
"line":
|
|
3983
|
+
"line": 56
|
|
3995
3984
|
},
|
|
3996
3985
|
"name": "dockerImageCode",
|
|
3997
3986
|
"type": {
|
|
@@ -4012,7 +4001,7 @@
|
|
|
4012
4001
|
"kind": "interface",
|
|
4013
4002
|
"locationInModule": {
|
|
4014
4003
|
"filename": "src/index.ts",
|
|
4015
|
-
"line":
|
|
4004
|
+
"line": 17
|
|
4016
4005
|
},
|
|
4017
4006
|
"name": "TokenInjectableDockerBuilderProps",
|
|
4018
4007
|
"properties": [
|
|
@@ -4025,7 +4014,7 @@
|
|
|
4025
4014
|
"immutable": true,
|
|
4026
4015
|
"locationInModule": {
|
|
4027
4016
|
"filename": "src/index.ts",
|
|
4028
|
-
"line":
|
|
4017
|
+
"line": 21
|
|
4029
4018
|
},
|
|
4030
4019
|
"name": "path",
|
|
4031
4020
|
"type": {
|
|
@@ -4043,7 +4032,7 @@
|
|
|
4043
4032
|
"immutable": true,
|
|
4044
4033
|
"locationInModule": {
|
|
4045
4034
|
"filename": "src/index.ts",
|
|
4046
|
-
"line":
|
|
4035
|
+
"line": 32
|
|
4047
4036
|
},
|
|
4048
4037
|
"name": "buildArgs",
|
|
4049
4038
|
"optional": true,
|
|
@@ -4055,11 +4044,30 @@
|
|
|
4055
4044
|
"kind": "map"
|
|
4056
4045
|
}
|
|
4057
4046
|
}
|
|
4047
|
+
},
|
|
4048
|
+
{
|
|
4049
|
+
"abstract": true,
|
|
4050
|
+
"docs": {
|
|
4051
|
+
"example": "'arn:aws:secretsmanager:us-east-1:123456789012:secret:DockerLoginSecret'",
|
|
4052
|
+
"remarks": "This secret should store a JSON object with the following structure:\n```json\n{\n \"username\": \"my-docker-username\",\n \"password\": \"my-docker-password\"\n}\n```\nIf not provided, the construct will skip Docker login during the build process.",
|
|
4053
|
+
"stability": "stable",
|
|
4054
|
+
"summary": "The ARN of the AWS Secrets Manager secret containing Docker login credentials."
|
|
4055
|
+
},
|
|
4056
|
+
"immutable": true,
|
|
4057
|
+
"locationInModule": {
|
|
4058
|
+
"filename": "src/index.ts",
|
|
4059
|
+
"line": 47
|
|
4060
|
+
},
|
|
4061
|
+
"name": "dockerLoginSecretArn",
|
|
4062
|
+
"optional": true,
|
|
4063
|
+
"type": {
|
|
4064
|
+
"primitive": "string"
|
|
4065
|
+
}
|
|
4058
4066
|
}
|
|
4059
4067
|
],
|
|
4060
4068
|
"symbolId": "src/index:TokenInjectableDockerBuilderProps"
|
|
4061
4069
|
}
|
|
4062
4070
|
},
|
|
4063
|
-
"version": "1.0
|
|
4064
|
-
"fingerprint": "
|
|
4071
|
+
"version": "1.1.0",
|
|
4072
|
+
"fingerprint": "tuBirTpAO6ASw4WPNfkzISXmZhdg7pfV7DPI20Q87/M="
|
|
4065
4073
|
}
|
package/API.md
CHANGED
|
@@ -6,21 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources.
|
|
8
8
|
|
|
9
|
-
*Example*
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
const dockerBuilder = new TokenInjectableDockerBuilder(this, 'DockerBuilder', {
|
|
13
|
-
path: './docker',
|
|
14
|
-
buildArgs: {
|
|
15
|
-
TOKEN: 'my-secret-token',
|
|
16
|
-
ENV: 'production'
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
const containerImage = dockerBuilder.getContainerImage();
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
|
|
24
9
|
#### Initializers <a name="Initializers" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer"></a>
|
|
25
10
|
|
|
26
11
|
```typescript
|
|
@@ -31,9 +16,9 @@ new TokenInjectableDockerBuilder(scope: Construct, id: string, props: TokenInjec
|
|
|
31
16
|
|
|
32
17
|
| **Name** | **Type** | **Description** |
|
|
33
18
|
| --- | --- | --- |
|
|
34
|
-
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> |
|
|
35
|
-
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.id">id</a></code> | <code>string</code> |
|
|
36
|
-
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.props">props</a></code> | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps">TokenInjectableDockerBuilderProps</a></code> |
|
|
19
|
+
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
|
|
20
|
+
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
|
|
21
|
+
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.props">props</a></code> | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps">TokenInjectableDockerBuilderProps</a></code> | *No description.* |
|
|
37
22
|
|
|
38
23
|
---
|
|
39
24
|
|
|
@@ -41,24 +26,18 @@ new TokenInjectableDockerBuilder(scope: Construct, id: string, props: TokenInjec
|
|
|
41
26
|
|
|
42
27
|
- *Type:* constructs.Construct
|
|
43
28
|
|
|
44
|
-
The parent construct/stack.
|
|
45
|
-
|
|
46
29
|
---
|
|
47
30
|
|
|
48
31
|
##### `id`<sup>Required</sup> <a name="id" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.id"></a>
|
|
49
32
|
|
|
50
33
|
- *Type:* string
|
|
51
34
|
|
|
52
|
-
The unique ID of the construct.
|
|
53
|
-
|
|
54
35
|
---
|
|
55
36
|
|
|
56
37
|
##### `props`<sup>Required</sup> <a name="props" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.props"></a>
|
|
57
38
|
|
|
58
39
|
- *Type:* <a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps">TokenInjectableDockerBuilderProps</a>
|
|
59
40
|
|
|
60
|
-
Configuration properties for the construct.
|
|
61
|
-
|
|
62
41
|
---
|
|
63
42
|
|
|
64
43
|
#### Methods <a name="Methods" id="Methods"></a>
|
|
@@ -166,6 +145,7 @@ const tokenInjectableDockerBuilderProps: TokenInjectableDockerBuilderProps = { .
|
|
|
166
145
|
| --- | --- | --- |
|
|
167
146
|
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.path">path</a></code> | <code>string</code> | The path to the directory containing the Dockerfile or source code. |
|
|
168
147
|
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.buildArgs">buildArgs</a></code> | <code>{[ key: string ]: string}</code> | Build arguments to pass to the Docker build process. |
|
|
148
|
+
| <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.dockerLoginSecretArn">dockerLoginSecretArn</a></code> | <code>string</code> | The ARN of the AWS Secrets Manager secret containing Docker login credentials. |
|
|
169
149
|
|
|
170
150
|
---
|
|
171
151
|
|
|
@@ -205,5 +185,33 @@ These are transformed into `--build-arg` flags.
|
|
|
205
185
|
```
|
|
206
186
|
|
|
207
187
|
|
|
188
|
+
##### `dockerLoginSecretArn`<sup>Optional</sup> <a name="dockerLoginSecretArn" id="token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.dockerLoginSecretArn"></a>
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
public readonly dockerLoginSecretArn: string;
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
- *Type:* string
|
|
195
|
+
|
|
196
|
+
The ARN of the AWS Secrets Manager secret containing Docker login credentials.
|
|
197
|
+
|
|
198
|
+
This secret should store a JSON object with the following structure:
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"username": "my-docker-username",
|
|
202
|
+
"password": "my-docker-password"
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
If not provided, the construct will skip Docker login during the build process.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
*Example*
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
'arn:aws:secretsmanager:us-east-1:123456789012:secret:DockerLoginSecret'
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
|
|
208
216
|
|
|
209
217
|
|
package/lib/index.d.ts
CHANGED
|
@@ -21,31 +21,27 @@ export interface TokenInjectableDockerBuilderProps {
|
|
|
21
21
|
readonly buildArgs?: {
|
|
22
22
|
[key: string]: string;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* The ARN of the AWS Secrets Manager secret containing Docker login credentials.
|
|
26
|
+
* This secret should store a JSON object with the following structure:
|
|
27
|
+
* ```json
|
|
28
|
+
* {
|
|
29
|
+
* "username": "my-docker-username",
|
|
30
|
+
* "password": "my-docker-password"
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
* If not provided, the construct will skip Docker login during the build process.
|
|
34
|
+
*
|
|
35
|
+
* @example 'arn:aws:secretsmanager:us-east-1:123456789012:secret:DockerLoginSecret'
|
|
36
|
+
*/
|
|
37
|
+
readonly dockerLoginSecretArn?: string;
|
|
24
38
|
}
|
|
25
39
|
/**
|
|
26
40
|
* A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* const dockerBuilder = new TokenInjectableDockerBuilder(this, 'DockerBuilder', {
|
|
30
|
-
* path: './docker',
|
|
31
|
-
* buildArgs: {
|
|
32
|
-
* TOKEN: 'my-secret-token',
|
|
33
|
-
* ENV: 'production'
|
|
34
|
-
* },
|
|
35
|
-
* });
|
|
36
|
-
*
|
|
37
|
-
* const containerImage = dockerBuilder.getContainerImage();
|
|
38
41
|
*/
|
|
39
42
|
export declare class TokenInjectableDockerBuilder extends Construct {
|
|
43
|
+
private readonly ecrRepository;
|
|
40
44
|
readonly containerImage: ContainerImage;
|
|
41
45
|
readonly dockerImageCode: DockerImageCode;
|
|
42
|
-
private readonly ecrRepository;
|
|
43
|
-
/**
|
|
44
|
-
* Creates a new `TokenInjectableDockerBuilder` instance.
|
|
45
|
-
*
|
|
46
|
-
* @param scope The parent construct/stack.
|
|
47
|
-
* @param id The unique ID of the construct.
|
|
48
|
-
* @param props Configuration properties for the construct.
|
|
49
|
-
*/
|
|
50
46
|
constructor(scope: Construct, id: string, props: TokenInjectableDockerBuilderProps);
|
|
51
47
|
}
|
package/lib/index.js
CHANGED
|
@@ -10,40 +10,39 @@ const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
|
|
|
10
10
|
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
11
11
|
const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
|
|
12
12
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
13
|
+
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
13
14
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
14
15
|
const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
|
|
15
16
|
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
16
17
|
const constructs_1 = require("constructs");
|
|
17
18
|
/**
|
|
18
19
|
* A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* const dockerBuilder = new TokenInjectableDockerBuilder(this, 'DockerBuilder', {
|
|
22
|
-
* path: './docker',
|
|
23
|
-
* buildArgs: {
|
|
24
|
-
* TOKEN: 'my-secret-token',
|
|
25
|
-
* ENV: 'production'
|
|
26
|
-
* },
|
|
27
|
-
* });
|
|
28
|
-
*
|
|
29
|
-
* const containerImage = dockerBuilder.getContainerImage();
|
|
30
20
|
*/
|
|
31
21
|
class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
32
|
-
/**
|
|
33
|
-
* Creates a new `TokenInjectableDockerBuilder` instance.
|
|
34
|
-
*
|
|
35
|
-
* @param scope The parent construct/stack.
|
|
36
|
-
* @param id The unique ID of the construct.
|
|
37
|
-
* @param props Configuration properties for the construct.
|
|
38
|
-
*/
|
|
39
22
|
constructor(scope, id, props) {
|
|
40
23
|
super(scope, id);
|
|
41
|
-
const { path: sourcePath, buildArgs } = props;
|
|
42
|
-
//
|
|
43
|
-
|
|
24
|
+
const { path: sourcePath, buildArgs, dockerLoginSecretArn } = props;
|
|
25
|
+
// Define a KMS key for ECR encryption
|
|
26
|
+
const encryptionKey = new aws_kms_1.Key(this, 'EcrEncryptionKey', {
|
|
27
|
+
enableKeyRotation: true,
|
|
28
|
+
});
|
|
29
|
+
// Create an ECR repository with lifecycle rules, encryption, and image scanning enabled
|
|
30
|
+
this.ecrRepository = new aws_ecr_1.Repository(this, 'ECRRepository', {
|
|
31
|
+
lifecycleRules: [
|
|
32
|
+
{
|
|
33
|
+
rulePriority: 1,
|
|
34
|
+
description: 'Remove untagged images after 30 days',
|
|
35
|
+
tagStatus: aws_ecr_1.TagStatus.UNTAGGED,
|
|
36
|
+
maxImageAge: aws_cdk_lib_1.Duration.days(1),
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
encryption: aws_ecr_1.RepositoryEncryption.KMS,
|
|
40
|
+
encryptionKey: encryptionKey,
|
|
41
|
+
imageScanOnPush: true,
|
|
42
|
+
});
|
|
44
43
|
// Package the source code as an asset
|
|
45
44
|
const sourceAsset = new aws_s3_assets_1.Asset(this, 'SourceAsset', {
|
|
46
|
-
path: sourcePath,
|
|
45
|
+
path: sourcePath,
|
|
47
46
|
});
|
|
48
47
|
// Transform buildArgs into a string of --build-arg KEY=VALUE
|
|
49
48
|
const buildArgsString = buildArgs
|
|
@@ -51,11 +50,16 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
|
51
50
|
.map(([key, value]) => `--build-arg ${key}=${value}`)
|
|
52
51
|
.join(' ')
|
|
53
52
|
: '';
|
|
54
|
-
//
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
// Conditional Dockerhub login commands
|
|
54
|
+
const dockerLoginCommands = dockerLoginSecretArn
|
|
55
|
+
? [
|
|
56
|
+
'echo "Retrieving Docker credentials from Secrets Manager..."',
|
|
57
|
+
`DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id ${dockerLoginSecretArn} --query SecretString --output text | jq -r .username)`,
|
|
58
|
+
`DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id ${dockerLoginSecretArn} --query SecretString --output text | jq -r .password)`,
|
|
59
|
+
'echo "Logging in to Docker..."',
|
|
60
|
+
'echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin',
|
|
61
|
+
]
|
|
62
|
+
: ['echo "No Docker credentials provided. Skipping login step."'];
|
|
59
63
|
// Create a CodeBuild project
|
|
60
64
|
const codeBuildProject = new aws_codebuild_1.Project(this, 'UICodeBuildProject', {
|
|
61
65
|
source: aws_codebuild_1.Source.s3({
|
|
@@ -64,14 +68,18 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
|
64
68
|
}),
|
|
65
69
|
environment: {
|
|
66
70
|
buildImage: aws_codebuild_1.LinuxBuildImage.STANDARD_7_0,
|
|
67
|
-
privileged: true,
|
|
71
|
+
privileged: true,
|
|
72
|
+
},
|
|
73
|
+
environmentVariables: {
|
|
74
|
+
ECR_REPO_URI: { value: this.ecrRepository.repositoryUri },
|
|
75
|
+
BUILD_ARGS: { value: buildArgsString },
|
|
68
76
|
},
|
|
69
|
-
environmentVariables: environmentVariables,
|
|
70
77
|
buildSpec: aws_codebuild_1.BuildSpec.fromObject({
|
|
71
78
|
version: '0.2',
|
|
72
79
|
phases: {
|
|
73
80
|
pre_build: {
|
|
74
81
|
commands: [
|
|
82
|
+
...dockerLoginCommands,
|
|
75
83
|
'echo "Retrieving AWS Account ID..."',
|
|
76
84
|
'export ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)',
|
|
77
85
|
'echo "Logging in to Amazon ECR..."',
|
|
@@ -93,33 +101,35 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
|
93
101
|
},
|
|
94
102
|
}),
|
|
95
103
|
});
|
|
96
|
-
// Grant permissions to
|
|
104
|
+
// Grant permissions to CodeBuild
|
|
97
105
|
this.ecrRepository.grantPullPush(codeBuildProject);
|
|
98
106
|
codeBuildProject.role.addToPrincipalPolicy(new aws_iam_1.PolicyStatement({
|
|
99
|
-
actions: ['ecr:GetAuthorizationToken'],
|
|
100
|
-
resources: [
|
|
101
|
-
}));
|
|
102
|
-
// Grant permissions to CodeBuild for CloudWatch Logs
|
|
103
|
-
codeBuildProject.role.addToPrincipalPolicy(new aws_iam_1.PolicyStatement({
|
|
104
|
-
actions: ['logs:PutLogEvents', 'logs:CreateLogGroup', 'logs:CreateLogStream'],
|
|
105
|
-
resources: [`arn:aws:logs:${aws_cdk_lib_1.Stack.of(this).region}:${aws_cdk_lib_1.Stack.of(this).account}:*`],
|
|
107
|
+
actions: ['ecr:GetAuthorizationToken', 'ecr:GetDownloadUrlForLayer', 'ecr:BatchCheckLayerAvailability'],
|
|
108
|
+
resources: [this.ecrRepository.repositoryArn],
|
|
106
109
|
}));
|
|
107
|
-
|
|
110
|
+
if (dockerLoginSecretArn) {
|
|
111
|
+
codeBuildProject.role.addToPrincipalPolicy(new aws_iam_1.PolicyStatement({
|
|
112
|
+
actions: ['secretsmanager:GetSecretValue'],
|
|
113
|
+
resources: [dockerLoginSecretArn],
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
// Grant CodeBuild access to the KMS key
|
|
117
|
+
encryptionKey.grantEncryptDecrypt(codeBuildProject.role);
|
|
118
|
+
// Create Lambda functions for onEvent and isComplete handlers
|
|
108
119
|
const onEventHandlerFunction = new aws_lambda_1.Function(this, 'OnEventHandlerFunction', {
|
|
109
|
-
runtime: aws_lambda_1.Runtime.
|
|
110
|
-
code: aws_lambda_1.Code.fromAsset(path.resolve(__dirname, '../onEvent')),
|
|
111
|
-
handler: 'onEvent.handler',
|
|
120
|
+
runtime: aws_lambda_1.Runtime.NODEJS_18_X,
|
|
121
|
+
code: aws_lambda_1.Code.fromAsset(path.resolve(__dirname, '../onEvent')),
|
|
122
|
+
handler: 'onEvent.handler',
|
|
112
123
|
timeout: aws_cdk_lib_1.Duration.minutes(15),
|
|
113
124
|
});
|
|
114
125
|
onEventHandlerFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
115
126
|
actions: ['codebuild:StartBuild'],
|
|
116
127
|
resources: [codeBuildProject.projectArn], // Restrict to specific project
|
|
117
128
|
}));
|
|
118
|
-
// Create Node.js Lambda function for isComplete
|
|
119
129
|
const isCompleteHandlerFunction = new aws_lambda_1.Function(this, 'IsCompleteHandlerFunction', {
|
|
120
|
-
runtime: aws_lambda_1.Runtime.
|
|
121
|
-
code: aws_lambda_1.Code.fromAsset(path.resolve(__dirname, '../isComplete')),
|
|
122
|
-
handler: 'isComplete.handler',
|
|
130
|
+
runtime: aws_lambda_1.Runtime.NODEJS_18_X,
|
|
131
|
+
code: aws_lambda_1.Code.fromAsset(path.resolve(__dirname, '../isComplete')),
|
|
132
|
+
handler: 'isComplete.handler',
|
|
123
133
|
timeout: aws_cdk_lib_1.Duration.minutes(15),
|
|
124
134
|
});
|
|
125
135
|
isCompleteHandlerFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
@@ -132,6 +142,11 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
|
132
142
|
],
|
|
133
143
|
resources: ['*'],
|
|
134
144
|
}));
|
|
145
|
+
// Grant Lambda functions access to KMS key and ECR
|
|
146
|
+
encryptionKey.grantEncryptDecrypt(onEventHandlerFunction);
|
|
147
|
+
encryptionKey.grantEncryptDecrypt(isCompleteHandlerFunction);
|
|
148
|
+
this.ecrRepository.grantPullPush(onEventHandlerFunction);
|
|
149
|
+
this.ecrRepository.grantPullPush(isCompleteHandlerFunction);
|
|
135
150
|
// Create a custom resource provider
|
|
136
151
|
const provider = new custom_resources_1.Provider(this, 'CustomResourceProvider', {
|
|
137
152
|
onEventHandler: onEventHandlerFunction,
|
|
@@ -153,5 +168,5 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
|
|
|
153
168
|
}
|
|
154
169
|
exports.TokenInjectableDockerBuilder = TokenInjectableDockerBuilder;
|
|
155
170
|
_a = JSII_RTTI_SYMBOL_1;
|
|
156
|
-
TokenInjectableDockerBuilder[_a] = { fqn: "token-injectable-docker-builder.TokenInjectableDockerBuilder", version: "1.0
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCLDZDQUE4RDtBQUM5RCw2REFBd0Y7QUFDeEYsaURBQWlEO0FBQ2pELGlEQUFxRDtBQUNyRCxpREFBc0Q7QUFDdEQsdURBQWtGO0FBQ2xGLDZEQUFrRDtBQUNsRCxtRUFBd0Q7QUFDeEQsMkNBQXVDO0FBd0J2Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSw0QkFBNkIsU0FBUSxzQkFBUztJQUt6RDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdDO1FBQ2hGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMseUJBQXlCO1FBRXhFLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksb0JBQVUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFM0Qsc0NBQXNDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUkscUJBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ2pELElBQUksRUFBRSxVQUFVLEVBQUUsd0NBQXdDO1NBQzNELENBQUMsQ0FBQztRQUVILDZEQUE2RDtRQUM3RCxNQUFNLGVBQWUsR0FBRyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztpQkFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2lCQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLGlF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aUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGVBQWUsR0FBRyw0QkFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7QUFySkgsb0VBc0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIFN0YWNrLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFByb2plY3QsIFNvdXJjZSwgTGludXhCdWlsZEltYWdlLCBCdWlsZFNwZWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCB7IENvbnRhaW5lckltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUsIENvZGUsIERvY2tlckltYWdlQ29kZSwgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIGBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyYCBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZSBvciBzb3VyY2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIERvY2tlciBidWlsZCBwcm9jZXNzLlxuICAgKiBUaGVzZSBhcmUgdHJhbnNmb3JtZWQgaW50byBgLS1idWlsZC1hcmdgIGZsYWdzLlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgVE9LRU46ICdteS1zZWNyZXQtdG9rZW4nLFxuICAgKiAgIEVOVjogJ3Byb2R1Y3Rpb24nXG4gICAqIH1cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cblxuLyoqXG4gKiBBIENESyBjb25zdHJ1Y3QgdG8gYnVpbGQgYW5kIHB1c2ggRG9ja2VyIGltYWdlcyB0byBhbiBFQ1IgcmVwb3NpdG9yeSB1c2luZyBDb2RlQnVpbGQgYW5kIExhbWJkYSBjdXN0b20gcmVzb3VyY2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkb2NrZXJCdWlsZGVyID0gbmV3IFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXIodGhpcywgJ0RvY2tlckJ1aWxkZXInLCB7XG4gKiAgIHBhdGg6ICcuL2RvY2tlcicsXG4gKiAgIGJ1aWxkQXJnczoge1xuICogICAgIFRPS0VOOiAnbXktc2VjcmV0LXRva2VuJyxcbiAqICAgICBFTlY6ICdwcm9kdWN0aW9uJ1xuICogICB9LFxuICogfSk7XG4gKlxuICogY29uc3QgY29udGFpbmVySW1hZ2UgPSBkb2NrZXJCdWlsZGVyLmdldENvbnRhaW5lckltYWdlKCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckltYWdlOiBDb250YWluZXJJbWFnZTtcbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckltYWdlQ29kZTogRG9ja2VySW1hZ2VDb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXJgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjb25zdHJ1Y3Qvc3RhY2suXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIElEIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgcGF0aDogc291cmNlUGF0aCwgYnVpbGRBcmdzIH0gPSBwcm9wczsgLy8gRGVmYXVsdCB0byBsaW51eC9hbWQ2NFxuXG4gICAgLy8gQ3JlYXRlIGFuIEVDUiByZXBvc2l0b3J5XG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0VDUlJlcG9zaXRvcnknKTtcblxuICAgIC8vIFBhY2thZ2UgdGhlIHNvdXJjZSBjb2RlIGFzIGFuIGFzc2V0XG4gICAgY29uc3Qgc291cmNlQXNzZXQgPSBuZXcgQXNzZXQodGhpcywgJ1NvdXJjZUFzc2V0Jywge1xuICAgICAgcGF0aDogc291cmNlUGF0aCwgLy8gUGF0aCB0byB0aGUgRG9ja2VyZmlsZSBvciBzb3VyY2UgY29kZVxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGJ1aWxkQXJncyBpbnRvIGEgc3RyaW5nIG9mIC0tYnVpbGQtYXJnIEtFWT1WQUxVRVxuICAgIGNvbnN0IGJ1aWxkQXJnc1N0cmluZyA9IGJ1aWxkQXJnc1xuICAgICAgPyBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYC0tYnVpbGQtYXJnICR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcgJylcbiAgICAgIDogJyc7XG5cbiAgICAvLyBQYXNzIHRoZSBidWlsZEFyZ3NTdHJpbmcgYW5kIHBsYXRmb3JtIGFzIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzOiB7IFtuYW1lOiBzdHJpbmddOiB7IHZhbHVlOiBzdHJpbmcgfSB9ID0ge1xuICAgICAgRUNSX1JFUE9fVVJJOiB7IHZhbHVlOiB0aGlzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSB9LFxuICAgICAgQlVJTERfQVJHUzogeyB2YWx1ZTogYnVpbGRBcmdzU3RyaW5nIH0sXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIENvZGVCdWlsZCBwcm9qZWN0XG4gICAgY29uc3QgY29kZUJ1aWxkUHJvamVjdCA9IG5ldyBQcm9qZWN0KHRoaXMsICdVSUNvZGVCdWlsZFByb2plY3QnLCB7XG4gICAgICBzb3VyY2U6IFNvdXJjZS5zMyh7XG4gICAgICAgIGJ1Y2tldDogc291cmNlQXNzZXQuYnVja2V0LFxuICAgICAgICBwYXRoOiBzb3VyY2VBc3NldC5zM09iamVjdEtleSxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCxcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSwgLy8gUmVxdWlyZWQgZm9yIERvY2tlciBidWlsZHNcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogZW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgJ2VjaG8gXCJSZXRyaWV2aW5nIEFXUyBBY2NvdW50IElELi4uXCInLFxuICAgICAgICAgICAgICAnZXhwb3J0IEFDQ09VTlRfSUQ9JChhd3Mgc3RzIGdldC1jYWxsZXItaWRlbnRpdHkgLS1xdWVyeSBBY2NvdW50IC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgICAgICAgJ2VjaG8gXCJMb2dnaW5nIGluIHRvIEFtYXpvbiBFQ1IuLi5cIicsXG4gICAgICAgICAgICAgICdhd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiAkQVdTX0RFRkFVTFRfUkVHSU9OIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJEFDQ09VTlRfSUQuZGtyLmVjci4kQVdTX0RFRkFVTFRfUkVHSU9OLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBCdWlsZCBwaGFzZTogQnVpbGRpbmcgdGhlIERvY2tlciBpbWFnZS4uLicsXG4gICAgICAgICAgICAgICdkb2NrZXIgYnVpbGQgJEJVSUxEX0FSR1MgLXQgJEVDUl9SRVBPX1VSSTpsYXRlc3QgJENPREVCVUlMRF9TUkNfRElSJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBQb3N0LWJ1aWxkIHBoYXNlOiBQdXNoaW5nIHRoZSBEb2NrZXIgaW1hZ2UuLi4nLFxuICAgICAgICAgICAgICAnZG9ja2VyIHB1c2ggJEVDUl9SRVBPX1VSSTpsYXRlc3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIEVDUlxuICAgIHRoaXMuZWNyUmVwb3NpdG9yeS5ncmFudFB1bGxQdXNoKGNvZGVCdWlsZFByb2plY3QpO1xuXG4gICAgY29kZUJ1aWxkUHJvamVjdC5yb2xlIS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBDb2RlQnVpbGQgZm9yIENsb3VkV2F0Y2ggTG9nc1xuICAgIGNvZGVCdWlsZFByb2plY3Qucm9sZSEuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydsb2dzOlB1dExvZ0V2ZW50cycsICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJywgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJ10sXG4gICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmxvZ3M6JHtTdGFjay5vZih0aGlzKS5yZWdpb259OiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06KmBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBOb2RlLmpzIExhbWJkYSBmdW5jdGlvbiBmb3Igb25FdmVudFxuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ09uRXZlbnRIYW5kbGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU19MQVRFU1QsIC8vIFVzZSBOb2RlLmpzIHJ1bnRpbWVcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi9vbkV2ZW50JykpLCAvLyBQYXRoIHRvIGhhbmRsZXIgY29kZVxuICAgICAgaGFuZGxlcjogJ29uRXZlbnQuaGFuZGxlcicsIC8vIEVudHJ5IHBvaW50IChhZGp1c3QgYXMgbmVlZGVkKVxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgfSk7XG5cbiAgICBvbkV2ZW50SGFuZGxlckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2NvZGVidWlsZDpTdGFydEJ1aWxkJ10sXG4gICAgICAgIHJlc291cmNlczogW2NvZGVCdWlsZFByb2plY3QucHJvamVjdEFybl0sIC8vIFJlc3RyaWN0IHRvIHNwZWNpZmljIHByb2plY3RcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTm9kZS5qcyBMYW1iZGEgZnVuY3Rpb24gZm9yIGlzQ29tcGxldGVcbiAgICBjb25zdCBpc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfTEFURVNULFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL2lzQ29tcGxldGUnKSksIC8vIFBhdGggdG8gaGFuZGxlciBjb2RlXG4gICAgICBoYW5kbGVyOiAnaXNDb21wbGV0ZS5oYW5kbGVyJywgLy8gRW50cnkgcG9pbnQgKGFkanVzdCBhcyBuZWVkZWQpXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIGlzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWJ1aWxkOkJhdGNoR2V0QnVpbGRzJyxcbiAgICAgICAgICAnY29kZWJ1aWxkOkxpc3RCdWlsZHNGb3JQcm9qZWN0JyxcbiAgICAgICAgICAnbG9nczpHZXRMb2dFdmVudHMnLFxuICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nU3RyZWFtcycsXG4gICAgICAgICAgJ2xvZ3M6RGVzY3JpYmVMb2dHcm91cHMnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHRoaXMsICdDdXN0b21SZXNvdXJjZVByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jdGlvbixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pO1xuXG4gICAgLy8gRGVmaW5lIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBjb25zdCBidWlsZFRyaWdnZXJSZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQnVpbGRUcmlnZ2VyUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUHJvamVjdE5hbWU6IGNvZGVCdWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIFRyaWdnZXI6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYnVpbGRUcmlnZ2VyUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KGNvZGVCdWlsZFByb2plY3QpO1xuICAgIHRoaXMuY29udGFpbmVySW1hZ2UgPSBDb250YWluZXJJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeSh0aGlzLmVjclJlcG9zaXRvcnkpO1xuICAgIHRoaXMuZG9ja2VySW1hZ2VDb2RlID0gRG9ja2VySW1hZ2VDb2RlLmZyb21FY3IodGhpcy5lY3JSZXBvc2l0b3J5KTtcbiAgfVxufVxuIl19
|
|
171
|
+
TokenInjectableDockerBuilder[_a] = { fqn: "token-injectable-docker-builder.TokenInjectableDockerBuilder", version: "1.1.0" };
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCLDZDQUF1RDtBQUN2RCw2REFBd0Y7QUFDeEYsaURBQWtGO0FBQ2xGLGlEQUFxRDtBQUNyRCxpREFBc0Q7QUFDdEQsaURBQTBDO0FBQzFDLHVEQUFrRjtBQUNsRiw2REFBa0Q7QUFDbEQsbUVBQXdEO0FBQ3hELDJDQUF1QztBQXNDdkM7O0dBRUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBS3pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0M7UUFDaEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFcEUsc0NBQXNDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBRyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUN0RCxpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQztRQUVILHdGQUF3RjtRQUN4RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksb0JBQVUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ3pELGNBQWMsRUFBRTtnQkFDZDtvQkFDRSxZQUFZLEVBQUUsQ0FBQztvQkFDZixXQUFXLEVBQUUsc0NBQXNDO29CQUNuRCxTQUFTLEVBQUUsbUJBQVMsQ0FBQyxRQUFRO29CQUM3QixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUM5QjthQUNGO1lBQ0QsVUFBVSxFQUFFLDhCQUFvQixDQUFDLEdBQUc7WUFDcEMsYUFBYSxFQUFFLGFBQWE7WUFDNUIsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsc0NBQXNDO1FB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Q0FBQztRQUMxRCxhQUFhLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFNUQsb0NBQW9DO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDNUQsY0FBYyxFQUFFLHNCQUFzQjtZQUN0QyxpQkFBaUIsRUFBRSx5QkFBeUI7WUFDNUMsYUFBYSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFFSCw2QkFBNkI7UUFDN0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQzVFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7Z0JBQ3pDLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsd0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGVBQWUsR0FBRyw0QkFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7QUFoTEgsb0VBaUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUHJvamVjdCwgU291cmNlLCBMaW51eEJ1aWxkSW1hZ2UsIEJ1aWxkU3BlYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSwgUmVwb3NpdG9yeUVuY3J5cHRpb24sIFRhZ1N0YXR1cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0IHsgQ29udGFpbmVySW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBSdW50aW1lLCBDb2RlLCBEb2NrZXJJbWFnZUNvZGUsIEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBBc3NldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBgVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlcmAgY29uc3RydWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIERvY2tlcmZpbGUgb3Igc291cmNlIGNvZGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBEb2NrZXIgYnVpbGQgcHJvY2Vzcy5cbiAgICogVGhlc2UgYXJlIHRyYW5zZm9ybWVkIGludG8gYC0tYnVpbGQtYXJnYCBmbGFncy5cbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIFRPS0VOOiAnbXktc2VjcmV0LXRva2VuJyxcbiAgICogICBFTlY6ICdwcm9kdWN0aW9uJ1xuICAgKiB9XG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIERvY2tlciBsb2dpbiBjcmVkZW50aWFscy5cbiAgICogVGhpcyBzZWNyZXQgc2hvdWxkIHN0b3JlIGEgSlNPTiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICogYGBganNvblxuICAgKiB7XG4gICAqICAgXCJ1c2VybmFtZVwiOiBcIm15LWRvY2tlci11c2VybmFtZVwiLFxuICAgKiAgIFwicGFzc3dvcmRcIjogXCJteS1kb2NrZXItcGFzc3dvcmRcIlxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3Qgd2lsbCBza2lwIERvY2tlciBsb2dpbiBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuXG4gICAqXG4gICAqIEBleGFtcGxlICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMToxMjM0NTY3ODkwMTI6c2VjcmV0OkRvY2tlckxvZ2luU2VjcmV0J1xuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyTG9naW5TZWNyZXRBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBDREsgY29uc3RydWN0IHRvIGJ1aWxkIGFuZCBwdXNoIERvY2tlciBpbWFnZXMgdG8gYW4gRUNSIHJlcG9zaXRvcnkgdXNpbmcgQ29kZUJ1aWxkIGFuZCBMYW1iZGEgY3VzdG9tIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG4gIHB1YmxpYyByZWFkb25seSBjb250YWluZXJJbWFnZTogQ29udGFpbmVySW1hZ2U7XG4gIHB1YmxpYyByZWFkb25seSBkb2NrZXJJbWFnZUNvZGU6IERvY2tlckltYWdlQ29kZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgcGF0aDogc291cmNlUGF0aCwgYnVpbGRBcmdzLCBkb2NrZXJMb2dpblNlY3JldEFybiB9ID0gcHJvcHM7XG5cbiAgICAvLyBEZWZpbmUgYSBLTVMga2V5IGZvciBFQ1IgZW5jcnlwdGlvblxuICAgIGNvbnN0IGVuY3J5cHRpb25LZXkgPSBuZXcgS2V5KHRoaXMsICdFY3JFbmNyeXB0aW9uS2V5Jywge1xuICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgYW4gRUNSIHJlcG9zaXRvcnkgd2l0aCBsaWZlY3ljbGUgcnVsZXMsIGVuY3J5cHRpb24sIGFuZCBpbWFnZSBzY2FubmluZyBlbmFibGVkXG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0VDUlJlcG9zaXRvcnknLCB7XG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVByaW9yaXR5OiAxLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVtb3ZlIHVudGFnZ2VkIGltYWdlcyBhZnRlciAzMCBkYXlzJyxcbiAgICAgICAgICB0YWdTdGF0dXM6IFRhZ1N0YXR1cy5VTlRBR0dFRCxcbiAgICAgICAgICBtYXhJbWFnZUFnZTogRHVyYXRpb24uZGF5cygxKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBlbmNyeXB0aW9uOiBSZXBvc2l0b3J5RW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBlbmNyeXB0aW9uS2V5LFxuICAgICAgaW1hZ2VTY2FuT25QdXNoOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gUGFja2FnZSB0aGUgc291cmNlIGNvZGUgYXMgYW4gYXNzZXRcbiAgICBjb25zdCBzb3VyY2VBc3NldCA9IG5ldyBBc3NldCh0aGlzLCAnU291cmNlQXNzZXQnLCB7XG4gICAgICBwYXRoOiBzb3VyY2VQYXRoLFxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGJ1aWxkQXJncyBpbnRvIGEgc3RyaW5nIG9mIC0tYnVpbGQtYXJnIEtFWT1WQUxVRVxuICAgIGNvbnN0IGJ1aWxkQXJnc1N0cmluZyA9IGJ1aWxkQXJnc1xuICAgICAgPyBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYC0tYnVpbGQtYXJnICR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcgJylcbiAgICAgIDogJyc7XG5cbiAgICAvLyBDb25kaXRpb25hbCBEb2NrZXJodWIgbG9naW4gY29tbWFuZHNcbiAgICBjb25zdCBkb2NrZXJMb2dpbkNvbW1hbmRzID0gZG9ja2VyTG9naW5TZWNyZXRBcm5cbiAgICAgID8gW1xuICAgICAgICAnZWNobyBcIlJldHJpZXZpbmcgRG9ja2VyIGNyZWRlbnRpYWxzIGZyb20gU2VjcmV0cyBNYW5hZ2VyLi4uXCInLFxuICAgICAgICBgRE9DS0VSX1VTRVJOQU1FPSQoYXdzIHNlY3JldHNtYW5hZ2VyIGdldC1zZWNyZXQtdmFsdWUgLS1zZWNyZXQtaWQgJHtkb2NrZXJMb2dpblNlY3JldEFybn0gLS1xdWVyeSBTZWNyZXRTdHJpbmcgLS1vdXRwdXQgdGV4dCB8IGpxIC1yIC51c2VybmFtZSlgLFxuICAgICAgICBgRE9DS0VSX1BBU1NXT1JEPSQoYXdzIHNlY3JldHNtYW5hZ2VyIGdldC1zZWNyZXQtdmFsdWUgLS1zZWNyZXQtaWQgJHtkb2NrZXJMb2dpblNlY3JldEFybn0gLS1xdWVyeSBTZWNyZXRTdHJpbmcgLS1vdXRwdXQgdGV4dCB8IGpxIC1yIC5wYXNzd29yZClgLFxuICAgICAgICAnZWNobyBcIkxvZ2dpbmcgaW4gdG8gRG9ja2VyLi4uXCInLFxuICAgICAgICAnZWNobyAkRE9DS0VSX1BBU1NXT1JEIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgJERPQ0tFUl9VU0VSTkFNRSAtLXBhc3N3b3JkLXN0ZGluJyxcbiAgICAgIF1cbiAgICAgIDogWydlY2hvIFwiTm8gRG9ja2VyIGNyZWRlbnRpYWxzIHByb3ZpZGVkLiBTa2lwcGluZyBsb2dpbiBzdGVwLlwiJ107XG5cbiAgICAvLyBDcmVhdGUgYSBDb2RlQnVpbGQgcHJvamVjdFxuICAgIGNvbnN0IGNvZGVCdWlsZFByb2plY3QgPSBuZXcgUHJvamVjdCh0aGlzLCAnVUlDb2RlQnVpbGRQcm9qZWN0Jywge1xuICAgICAgc291cmNlOiBTb3VyY2UuczMoe1xuICAgICAgICBidWNrZXQ6IHNvdXJjZUFzc2V0LmJ1Y2tldCxcbiAgICAgICAgcGF0aDogc291cmNlQXNzZXQuczNPYmplY3RLZXksXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzAsXG4gICAgICAgIHByaXZpbGVnZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgRUNSX1JFUE9fVVJJOiB7IHZhbHVlOiB0aGlzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSB9LFxuICAgICAgICBCVUlMRF9BUkdTOiB7IHZhbHVlOiBidWlsZEFyZ3NTdHJpbmcgfSxcbiAgICAgIH0sXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgLi4uZG9ja2VyTG9naW5Db21tYW5kcyxcbiAgICAgICAgICAgICAgJ2VjaG8gXCJSZXRyaWV2aW5nIEFXUyBBY2NvdW50IElELi4uXCInLFxuICAgICAgICAgICAgICAnZXhwb3J0IEFDQ09VTlRfSUQ9JChhd3Mgc3RzIGdldC1jYWxsZXItaWRlbnRpdHkgLS1xdWVyeSBBY2NvdW50IC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgICAgICAgJ2VjaG8gXCJMb2dnaW5nIGluIHRvIEFtYXpvbiBFQ1IuLi5cIicsXG4gICAgICAgICAgICAgICdhd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiAkQVdTX0RFRkFVTFRfUkVHSU9OIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJEFDQ09VTlRfSUQuZGtyLmVjci4kQVdTX0RFRkFVTFRfUkVHSU9OLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBCdWlsZCBwaGFzZTogQnVpbGRpbmcgdGhlIERvY2tlciBpbWFnZS4uLicsXG4gICAgICAgICAgICAgICdkb2NrZXIgYnVpbGQgJEJVSUxEX0FSR1MgLXQgJEVDUl9SRVBPX1VSSTpsYXRlc3QgJENPREVCVUlMRF9TUkNfRElSJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBQb3N0LWJ1aWxkIHBoYXNlOiBQdXNoaW5nIHRoZSBEb2NrZXIgaW1hZ2UuLi4nLFxuICAgICAgICAgICAgICAnZG9ja2VyIHB1c2ggJEVDUl9SRVBPX1VSSTpsYXRlc3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBDb2RlQnVpbGRcbiAgICB0aGlzLmVjclJlcG9zaXRvcnkuZ3JhbnRQdWxsUHVzaChjb2RlQnVpbGRQcm9qZWN0KTtcblxuICAgIGNvZGVCdWlsZFByb2plY3Qucm9sZSEuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJywgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJywgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5lY3JSZXBvc2l0b3J5LnJlcG9zaXRvcnlBcm5dLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmIChkb2NrZXJMb2dpblNlY3JldEFybikge1xuICAgICAgY29kZUJ1aWxkUHJvamVjdC5yb2xlIS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2RvY2tlckxvZ2luU2VjcmV0QXJuXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEdyYW50IENvZGVCdWlsZCBhY2Nlc3MgdG8gdGhlIEtNUyBrZXlcbiAgICBlbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQoY29kZUJ1aWxkUHJvamVjdC5yb2xlISk7XG5cbiAgICAvLyBDcmVhdGUgTGFtYmRhIGZ1bmN0aW9ucyBmb3Igb25FdmVudCBhbmQgaXNDb21wbGV0ZSBoYW5kbGVyc1xuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ09uRXZlbnRIYW5kbGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL29uRXZlbnQnKSksXG4gICAgICBoYW5kbGVyOiAnb25FdmVudC5oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgb25FdmVudEhhbmRsZXJGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydjb2RlYnVpbGQ6U3RhcnRCdWlsZCddLFxuICAgICAgICByZXNvdXJjZXM6IFtjb2RlQnVpbGRQcm9qZWN0LnByb2plY3RBcm5dLCAvLyBSZXN0cmljdCB0byBzcGVjaWZpYyBwcm9qZWN0XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGlzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL2lzQ29tcGxldGUnKSksXG4gICAgICBoYW5kbGVyOiAnaXNDb21wbGV0ZS5oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgaXNDb21wbGV0ZUhhbmRsZXJGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHMnLFxuICAgICAgICAgICdjb2RlYnVpbGQ6TGlzdEJ1aWxkc0ZvclByb2plY3QnLFxuICAgICAgICAgICdsb2dzOkdldExvZ0V2ZW50cycsXG4gICAgICAgICAgJ2xvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zJyxcbiAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ0dyb3VwcycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gR3JhbnQgTGFtYmRhIGZ1bmN0aW9ucyBhY2Nlc3MgdG8gS01TIGtleSBhbmQgRUNSXG4gICAgZW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24pO1xuICAgIGVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChpc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uKTtcbiAgICB0aGlzLmVjclJlcG9zaXRvcnkuZ3JhbnRQdWxsUHVzaChvbkV2ZW50SGFuZGxlckZ1bmN0aW9uKTtcbiAgICB0aGlzLmVjclJlcG9zaXRvcnkuZ3JhbnRQdWxsUHVzaChpc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uKTtcblxuICAgIC8vIENyZWF0ZSBhIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHRoaXMsICdDdXN0b21SZXNvdXJjZVByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jdGlvbixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pO1xuXG4gICAgLy8gRGVmaW5lIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBjb25zdCBidWlsZFRyaWdnZXJSZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQnVpbGRUcmlnZ2VyUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUHJvamVjdE5hbWU6IGNvZGVCdWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIFRyaWdnZXI6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYnVpbGRUcmlnZ2VyUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KGNvZGVCdWlsZFByb2plY3QpO1xuICAgIHRoaXMuY29udGFpbmVySW1hZ2UgPSBDb250YWluZXJJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeSh0aGlzLmVjclJlcG9zaXRvcnkpO1xuICAgIHRoaXMuZG9ja2VySW1hZ2VDb2RlID0gRG9ja2VySW1hZ2VDb2RlLmZyb21FY3IodGhpcy5lY3JSZXBvc2l0b3J5KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const index_1 = require("./index");
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'IntegTestingStack');
|
|
8
|
+
new index_1.TokenInjectableDockerBuilder(stack, 'Builder', {
|
|
9
|
+
path: path.resolve(__dirname, '../test-docker'),
|
|
10
|
+
buildArgs: {
|
|
11
|
+
SAMPLE_ARG_1: 'SAMPLE_VALUE_1',
|
|
12
|
+
SAMPLE_ARG_2: 'SAMPLE_VALUE_2',
|
|
13
|
+
SAMPLE_ARG_3: 'SAMPLE_VALUE_3',
|
|
14
|
+
SAMPLE_ARG_4: 'SAMPLE_VALUE_4',
|
|
15
|
+
SAMPLE_ARG_5: 'SAMPLE_VALUE_5',
|
|
16
|
+
SAMPLE_ARG_6: 'SAMPLE_VALUE_6',
|
|
17
|
+
},
|
|
18
|
+
dockerLoginSecretArn: 'arn:aws:secretsmanager:us-east-1:281318412783:secret:DockerLogin-jR8U8w',
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBQzdCLG1DQUFtQztBQUNuQyxtQ0FBdUQ7QUFFdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBRXRELElBQUksb0NBQTRCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUNqRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7SUFDL0MsU0FBUyxFQUFFO1FBQ1QsWUFBWSxFQUFFLGdCQUFnQjtRQUM5QixZQUFZLEVBQUUsZ0JBQWdCO1FBQzlCLFlBQVksRUFBRSxnQkFBZ0I7UUFDOUIsWUFBWSxFQUFFLGdCQUFnQjtRQUM5QixZQUFZLEVBQUUsZ0JBQWdCO1FBQzlCLFlBQVksRUFBRSxnQkFBZ0I7S0FDL0I7SUFDRCxvQkFBb0IsRUFBRSx5RUFBeUU7Q0FDaEcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyIH0gZnJvbSAnLi9pbmRleCc7XG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soYXBwLCAnSW50ZWdUZXN0aW5nU3RhY2snKTtcblxubmV3IFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXIoc3RhY2ssICdCdWlsZGVyJywge1xuICBwYXRoOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vdGVzdC1kb2NrZXInKSxcbiAgYnVpbGRBcmdzOiB7XG4gICAgU0FNUExFX0FSR18xOiAnU0FNUExFX1ZBTFVFXzEnLFxuICAgIFNBTVBMRV9BUkdfMjogJ1NBTVBMRV9WQUxVRV8yJyxcbiAgICBTQU1QTEVfQVJHXzM6ICdTQU1QTEVfVkFMVUVfMycsXG4gICAgU0FNUExFX0FSR180OiAnU0FNUExFX1ZBTFVFXzQnLFxuICAgIFNBTVBMRV9BUkdfNTogJ1NBTVBMRV9WQUxVRV81JyxcbiAgICBTQU1QTEVfQVJHXzY6ICdTQU1QTEVfVkFMVUVfNicsXG4gIH0sXG4gIGRvY2tlckxvZ2luU2VjcmV0QXJuOiAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjp1cy1lYXN0LTE6MjgxMzE4NDEyNzgzOnNlY3JldDpEb2NrZXJMb2dpbi1qUjhVOHcnLFxufSk7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"unbump": "npx projen unbump",
|
|
29
29
|
"upgrade": "npx projen upgrade",
|
|
30
30
|
"watch": "npx projen watch",
|
|
31
|
-
"projen": "npx projen"
|
|
31
|
+
"projen": "npx projen",
|
|
32
|
+
"local-deploy": "cdk deploy --app \"npx ts-node src/integ.default.ts\"",
|
|
33
|
+
"local-destroy": "cdk destroy --app \"npx ts-node src/integ.default.ts\""
|
|
32
34
|
},
|
|
33
35
|
"author": {
|
|
34
36
|
"name": "AlexTech314",
|
|
@@ -94,7 +96,7 @@
|
|
|
94
96
|
"publishConfig": {
|
|
95
97
|
"access": "public"
|
|
96
98
|
},
|
|
97
|
-
"version": "1.0
|
|
99
|
+
"version": "1.1.0",
|
|
98
100
|
"jest": {
|
|
99
101
|
"coverageProvider": "v8",
|
|
100
102
|
"testMatch": [
|