terraform-cdk-serverless-github-actions-runner-controller 0.0.7 → 0.0.9
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 +19 -2
- package/biome.jsonc +25 -52
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/lib/aws.d.ts +4 -4
- package/lib/lib/aws.js +145 -145
- package/lib/lib/azure.d.ts +1 -1
- package/lib/lib/azure.js +132 -132
- package/lib/lib/gcp.d.ts +1 -1
- package/lib/lib/gcp.js +82 -82
- package/lib/lib/variables.d.ts +2 -2
- package/lib/lib/variables.js +11 -11
- package/lib/tfModules.js +17 -17
- package/modules/azure-container-apps/README.md +17 -17
- package/modules/azure-container-apps/cdk.tf.json +1 -1
- package/modules/google-cloud-run/README.md +16 -16
- package/modules/google-cloud-run/cdk.tf.json +1 -1
- package/package.json +11 -9
- package/renovate.json5 +2 -2
package/lib/lib/gcp.d.ts
CHANGED
package/lib/lib/gcp.js
CHANGED
|
@@ -18,72 +18,72 @@ const variables_1 = require("./variables");
|
|
|
18
18
|
class Gcp extends constructs_1.Construct {
|
|
19
19
|
constructor(scope, id) {
|
|
20
20
|
super(scope, id);
|
|
21
|
-
const location =
|
|
22
|
-
const project =
|
|
23
|
-
new provider_1.GoogleProvider(this,
|
|
21
|
+
const location = "europe-north1";
|
|
22
|
+
const project = "gha-runner-example";
|
|
23
|
+
new provider_1.GoogleProvider(this, "google", {
|
|
24
24
|
project,
|
|
25
25
|
region: location,
|
|
26
26
|
});
|
|
27
|
-
new provider_2.NullProvider(this,
|
|
27
|
+
new provider_2.NullProvider(this, "null");
|
|
28
28
|
const { pat, githubConfigUrl } = (0, variables_1.commonVariables)(this);
|
|
29
|
-
const registry = new artifact_registry_repository_1.ArtifactRegistryRepository(this,
|
|
30
|
-
format:
|
|
31
|
-
mode:
|
|
32
|
-
repositoryId:
|
|
33
|
-
description:
|
|
29
|
+
const registry = new artifact_registry_repository_1.ArtifactRegistryRepository(this, "registry", {
|
|
30
|
+
format: "DOCKER",
|
|
31
|
+
mode: "REMOTE_REPOSITORY",
|
|
32
|
+
repositoryId: "gha-runner-test",
|
|
33
|
+
description: "Repository to host run and resulting images from GHA runs",
|
|
34
34
|
remoteRepositoryConfig: {
|
|
35
35
|
dockerRepository: {
|
|
36
36
|
customRepository: {
|
|
37
|
-
uri:
|
|
37
|
+
uri: "https://ghcr.io",
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
|
-
const jobSa = new service_account_1.ServiceAccount(this,
|
|
43
|
-
accountId:
|
|
42
|
+
const jobSa = new service_account_1.ServiceAccount(this, "jobServiceAccount", {
|
|
43
|
+
accountId: "gha-runner-job-sa",
|
|
44
44
|
});
|
|
45
|
-
const runnerRole = new project_iam_custom_role_1.ProjectIamCustomRole(this,
|
|
46
|
-
roleId:
|
|
47
|
-
title:
|
|
45
|
+
const runnerRole = new project_iam_custom_role_1.ProjectIamCustomRole(this, "runnerRole", {
|
|
46
|
+
roleId: "ghaRunnerRole",
|
|
47
|
+
title: "GHA Runner Role",
|
|
48
48
|
permissions: [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
"artifactregistry.dockerimages.get",
|
|
50
|
+
"artifactregistry.dockerimages.list",
|
|
51
|
+
"run.jobs.run",
|
|
52
|
+
"run.jobs.create",
|
|
53
|
+
"run.jobs.delete",
|
|
54
|
+
"run.jobs.list",
|
|
55
55
|
// Needed for waiting
|
|
56
|
-
|
|
56
|
+
"run.executions.get",
|
|
57
57
|
],
|
|
58
58
|
});
|
|
59
|
-
const jobPolicyMember = new cdktf_1.TerraformLocal(this,
|
|
60
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
59
|
+
const jobPolicyMember = new cdktf_1.TerraformLocal(this, "ghaMember", `serviceAccount:${jobSa.email}`);
|
|
60
|
+
new project_iam_member_1.ProjectIamMember(this, "runnerRoleBinding", {
|
|
61
61
|
member: jobPolicyMember.toString(),
|
|
62
62
|
project,
|
|
63
63
|
role: runnerRole.id,
|
|
64
64
|
});
|
|
65
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
65
|
+
new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingStorage", {
|
|
66
66
|
member: jobPolicyMember.toString(),
|
|
67
67
|
project,
|
|
68
|
-
role:
|
|
68
|
+
role: "roles/storage.admin",
|
|
69
69
|
});
|
|
70
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
70
|
+
new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingRunServiceAgent", {
|
|
71
71
|
member: jobPolicyMember.toString(),
|
|
72
72
|
project,
|
|
73
|
-
role:
|
|
73
|
+
role: "roles/run.serviceAgent",
|
|
74
74
|
});
|
|
75
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
75
|
+
new project_iam_member_1.ProjectIamMember(this, "runnerRoleBindingRunViewer", {
|
|
76
76
|
member: jobPolicyMember.toString(),
|
|
77
77
|
project,
|
|
78
|
-
role:
|
|
78
|
+
role: "roles/run.viewer",
|
|
79
79
|
});
|
|
80
|
-
const storageName =
|
|
81
|
-
const createBucket = new cdktf_1.TerraformLocal(this,
|
|
80
|
+
const storageName = "gha-runner-job-externals";
|
|
81
|
+
const createBucket = new cdktf_1.TerraformLocal(this, "bucketModification", `CLOUDSDK_CORE_DISABLE_PROMPTS=1 gcloud alpha storage buckets create gs://${storageName} --project=${project} --location=${location} --uniform-bucket-level-access --enable-hierarchical-namespace`);
|
|
82
82
|
// Hierarchial namespaces can't be enabled with Terraform.
|
|
83
|
-
const bucketCreation = new resource_1.Resource(this,
|
|
83
|
+
const bucketCreation = new resource_1.Resource(this, "gcloud", {
|
|
84
84
|
provisioners: [
|
|
85
85
|
{
|
|
86
|
-
type:
|
|
86
|
+
type: "local-exec",
|
|
87
87
|
command: createBucket.fqn,
|
|
88
88
|
},
|
|
89
89
|
],
|
|
@@ -92,9 +92,9 @@ class Gcp extends constructs_1.Construct {
|
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
94
|
// TODO: check caching https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images
|
|
95
|
-
const runnerJob = new cloud_run_v2_job_1.CloudRunV2Job(this,
|
|
95
|
+
const runnerJob = new cloud_run_v2_job_1.CloudRunV2Job(this, "ghaJob", {
|
|
96
96
|
deletionProtection: false,
|
|
97
|
-
name:
|
|
97
|
+
name: "gha-runner-job",
|
|
98
98
|
location,
|
|
99
99
|
template: {
|
|
100
100
|
template: {
|
|
@@ -103,41 +103,41 @@ class Gcp extends constructs_1.Construct {
|
|
|
103
103
|
image: `${registry.location}-docker.pkg.dev/${project}/${registry.repositoryId}/hi-fi/actions-runner:cr`,
|
|
104
104
|
env: [
|
|
105
105
|
{
|
|
106
|
-
name:
|
|
106
|
+
name: "CLOUDSDK_RUN_REGION",
|
|
107
107
|
value: location,
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
name:
|
|
110
|
+
name: "GOOGLE_CLOUD_PROJECT",
|
|
111
111
|
value: project,
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
|
-
name:
|
|
114
|
+
name: "EXTERNAL_STORAGE_NAME",
|
|
115
115
|
value: storageName,
|
|
116
116
|
},
|
|
117
117
|
// FUSE mounts directory as root with 777 fo directories and 555 for other files. As path is owned always by root, utime or permission change is not possible. These options prevent tar to try those
|
|
118
118
|
{
|
|
119
|
-
name:
|
|
120
|
-
value:
|
|
119
|
+
name: "TAR_OPTIONS",
|
|
120
|
+
value: "--touch --no-overwrite-dir --no-same-owner",
|
|
121
121
|
},
|
|
122
122
|
],
|
|
123
123
|
volumeMounts: [
|
|
124
124
|
{
|
|
125
|
-
name:
|
|
126
|
-
mountPath:
|
|
125
|
+
name: "externals",
|
|
126
|
+
mountPath: "/home/runner/_work/externals",
|
|
127
127
|
},
|
|
128
128
|
],
|
|
129
|
-
command: [
|
|
129
|
+
command: ["/home/runner/ephemeral_runner.sh"],
|
|
130
130
|
resources: {
|
|
131
131
|
limits: {
|
|
132
|
-
cpu:
|
|
133
|
-
memory:
|
|
132
|
+
cpu: "1",
|
|
133
|
+
memory: "2Gi",
|
|
134
134
|
},
|
|
135
135
|
},
|
|
136
136
|
},
|
|
137
137
|
],
|
|
138
138
|
volumes: [
|
|
139
139
|
{
|
|
140
|
-
name:
|
|
140
|
+
name: "externals",
|
|
141
141
|
gcs: {
|
|
142
142
|
bucket: storageName,
|
|
143
143
|
},
|
|
@@ -149,52 +149,52 @@ class Gcp extends constructs_1.Construct {
|
|
|
149
149
|
},
|
|
150
150
|
dependsOn: [bucketCreation],
|
|
151
151
|
});
|
|
152
|
-
const autoscalerSa = new service_account_1.ServiceAccount(this,
|
|
153
|
-
accountId:
|
|
152
|
+
const autoscalerSa = new service_account_1.ServiceAccount(this, "autoscalerServiceAccount", {
|
|
153
|
+
accountId: "autoscaler-sa",
|
|
154
154
|
});
|
|
155
|
-
new project_iam_custom_role_1.ProjectIamCustomRole(this,
|
|
156
|
-
roleId:
|
|
157
|
-
title:
|
|
155
|
+
new project_iam_custom_role_1.ProjectIamCustomRole(this, "autoscalerRole", {
|
|
156
|
+
roleId: "ghaAutoscalerRole",
|
|
157
|
+
title: "GHA Autoscaler Role",
|
|
158
158
|
permissions: [
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
"artifactregistry.dockerimages.get",
|
|
160
|
+
"artifactregistry.dockerimages.list",
|
|
161
|
+
"run.jobs.run",
|
|
162
|
+
"run.jobs.create",
|
|
163
|
+
"run.jobs.delete",
|
|
164
164
|
],
|
|
165
165
|
});
|
|
166
|
-
const autoscalerPolicyMember = new cdktf_1.TerraformLocal(this,
|
|
166
|
+
const autoscalerPolicyMember = new cdktf_1.TerraformLocal(this, "autoscalerMember", `serviceAccount:${autoscalerSa.email}`);
|
|
167
167
|
// TODO: replace 2 following with more specific ones.
|
|
168
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
168
|
+
new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingRun", {
|
|
169
169
|
member: autoscalerPolicyMember.toString(),
|
|
170
170
|
project,
|
|
171
|
-
role:
|
|
171
|
+
role: "roles/run.developer",
|
|
172
172
|
});
|
|
173
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
173
|
+
new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingStorage", {
|
|
174
174
|
member: autoscalerPolicyMember.toString(),
|
|
175
175
|
project,
|
|
176
|
-
role:
|
|
176
|
+
role: "roles/storage.admin",
|
|
177
177
|
});
|
|
178
|
-
new project_iam_member_1.ProjectIamMember(this,
|
|
178
|
+
new project_iam_member_1.ProjectIamMember(this, "autoscalerRoleBindingRunServiceAgent", {
|
|
179
179
|
member: autoscalerPolicyMember.toString(),
|
|
180
180
|
project,
|
|
181
|
-
role:
|
|
181
|
+
role: "roles/run.serviceAgent",
|
|
182
182
|
});
|
|
183
|
-
new cloud_run_service_1.CloudRunService(this,
|
|
183
|
+
new cloud_run_service_1.CloudRunService(this, "autoscalerService", {
|
|
184
184
|
location,
|
|
185
|
-
name:
|
|
185
|
+
name: "gha-autoscaler",
|
|
186
186
|
metadata: {
|
|
187
187
|
annotations: {
|
|
188
|
-
|
|
188
|
+
"run.googleapis.com/ingress": "internal",
|
|
189
189
|
},
|
|
190
190
|
},
|
|
191
191
|
template: {
|
|
192
192
|
metadata: {
|
|
193
193
|
annotations: {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
194
|
+
"autoscaling.knative.dev/maxScale": "1",
|
|
195
|
+
"autoscaling.knative.dev/minScale": "1",
|
|
196
|
+
"run.googleapis.com/cpu-throttling": "false",
|
|
197
|
+
"run.googleapis.com/startup-cpu-boost": "false",
|
|
198
198
|
},
|
|
199
199
|
},
|
|
200
200
|
spec: {
|
|
@@ -204,35 +204,35 @@ class Gcp extends constructs_1.Construct {
|
|
|
204
204
|
image: `${registry.location}-docker.pkg.dev/${project}/${registry.repositoryId}/hi-fi/gha-runners-on-managed-env:test`,
|
|
205
205
|
env: [
|
|
206
206
|
{
|
|
207
|
-
name:
|
|
207
|
+
name: "PAT",
|
|
208
208
|
value: pat.value,
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
|
-
name:
|
|
211
|
+
name: "GITHUB_CONFIG_URL",
|
|
212
212
|
value: githubConfigUrl.value,
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
|
-
name:
|
|
215
|
+
name: "JOB_NAME",
|
|
216
216
|
value: runnerJob.name,
|
|
217
217
|
},
|
|
218
218
|
{
|
|
219
|
-
name:
|
|
220
|
-
value:
|
|
219
|
+
name: "SCALE_SET_NAME",
|
|
220
|
+
value: "cr-runner-set",
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
|
-
name:
|
|
223
|
+
name: "CLOUDSDK_RUN_REGION",
|
|
224
224
|
value: location,
|
|
225
225
|
},
|
|
226
226
|
{
|
|
227
|
-
name:
|
|
227
|
+
name: "GOOGLE_CLOUD_PROJECT",
|
|
228
228
|
value: project,
|
|
229
229
|
},
|
|
230
230
|
],
|
|
231
231
|
resources: {
|
|
232
232
|
// Service would work for much lower, but these are minimum values for "always on" mode
|
|
233
233
|
limits: {
|
|
234
|
-
cpu:
|
|
235
|
-
memory:
|
|
234
|
+
cpu: "1000m",
|
|
235
|
+
memory: "512Mi",
|
|
236
236
|
},
|
|
237
237
|
},
|
|
238
238
|
},
|
|
@@ -245,5 +245,5 @@ class Gcp extends constructs_1.Construct {
|
|
|
245
245
|
}
|
|
246
246
|
exports.Gcp = Gcp;
|
|
247
247
|
_a = JSII_RTTI_SYMBOL_1;
|
|
248
|
-
Gcp[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Gcp", version: "0.0.
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nY3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwR0FBb0c7QUFDcEcsb0ZBQThFO0FBQzlFLGtGQUEyRTtBQUMzRSxnR0FBeUY7QUFDekYsc0ZBQWdGO0FBQ2hGLGtFQUFvRTtBQUNwRSxnRkFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLGdFQUE0RDtBQUM1RCxpQ0FBc0M7QUFDdEMsMkNBQXNDO0FBQ3RDLDJDQUE2QztBQUU3QyxNQUFhLEdBQUksU0FBUSxzQkFBUztJQUNoQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQTtRQUVwQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNqQyxPQUFPO1lBQ1AsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQyxDQUFBO1FBRUYsSUFBSSx1QkFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUU5QixNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlEQUEwQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEUsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixZQUFZLEVBQUUsaUJBQWlCO1lBQy9CLFdBQVcsRUFBRSwyREFBMkQ7WUFDeEUsc0JBQXNCLEVBQUU7Z0JBQ3RCLGdCQUFnQixFQUFFO29CQUNoQixnQkFBZ0IsRUFBRTt3QkFDaEIsR0FBRyxFQUFFLGlCQUFpQjtxQkFDdkI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDMUQsU0FBUyxFQUFFLG1CQUFtQjtTQUMvQixDQUFDLENBQUE7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLDhDQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDOUQsTUFBTSxFQUFFLGVBQWU7WUFDdkIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQUU7Z0JBQ1gsbUNBQW1DO2dCQUNuQyxvQ0FBb0M7Z0JBQ3BDLGNBQWM7Z0JBQ2QsaUJBQWlCO2dCQUNqQixpQkFBaUI7Z0JBQ2pCLGVBQWU7Z0JBQ2YscUJBQXFCO2dCQUNyQixvQkFBb0I7YUFDckI7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLHNCQUFjLENBQ3hDLElBQUksRUFDSixXQUFXLEVBQ1gsa0JBQWtCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FDaEMsQ0FBQTtRQUVELElBQUkscUNBQWdCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQzlDLE1BQU0sRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE9BQU87WUFDUCxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUU7U0FDcEIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxxQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDckQsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDbEMsT0FBTztZQUNQLElBQUksRUFBRSxxQkFBcUI7U0FDNUIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxxQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0NBQWtDLEVBQUU7WUFDN0QsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDbEMsT0FBTztZQUNQLElBQUksRUFBRSx3QkFBd0I7U0FDL0IsQ0FBQyxDQUFBO1FBRUYsSUFBSSxxQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7WUFDdkQsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDbEMsT0FBTztZQUNQLElBQUksRUFBRSxrQkFBa0I7U0FDekIsQ0FBQyxDQUFBO1FBRUYsTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUE7UUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxzQkFBYyxDQUNyQyxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLDRFQUE0RSxXQUFXLGNBQWMsT0FBTyxlQUFlLFFBQVEsZ0VBQWdFLENBQ3BNLENBQUE7UUFFRCwwREFBMEQ7UUFDMUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbEQsWUFBWSxFQUFFO2dCQUNaO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUc7aUJBQzFCO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO2FBQ3RCO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsbUdBQW1HO1FBQ25HLE1BQU0sU0FBUyxHQUFHLElBQUksZ0NBQWEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2xELGtCQUFrQixFQUFFLEtBQUs7WUFDekIsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixRQUFRO1lBQ1IsUUFBUSxFQUFFO2dCQUNSLFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsS0FBSyxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsbUJBQW1CLE9BQU8sSUFBSSxRQUFRLENBQUMsWUFBWSwwQkFBMEI7NEJBQ3hHLEdBQUcsRUFBRTtnQ0FDSDtvQ0FDRSxJQUFJLEVBQUUscUJBQXFCO29DQUMzQixLQUFLLEVBQUUsUUFBUTtpQ0FDaEI7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHNCQUFzQjtvQ0FDNUIsS0FBSyxFQUFFLE9BQU87aUNBQ2Y7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHVCQUF1QjtvQ0FDN0IsS0FBSyxFQUFFLFdBQVc7aUNBQ25CO2dDQUNELHFNQUFxTTtnQ0FDck07b0NBQ0UsSUFBSSxFQUFFLGFBQWE7b0NBQ25CLEtBQUssRUFBRSw0Q0FBNEM7aUNBQ3BEOzZCQUNGOzRCQUNELFlBQVksRUFBRTtnQ0FDWjtvQ0FDRSxJQUFJLEVBQUUsV0FBVztvQ0FDakIsU0FBUyxFQUFFLDhCQUE4QjtpQ0FDMUM7NkJBQ0Y7NEJBQ0QsT0FBTyxFQUFFLENBQUMsa0NBQWtDLENBQUM7NEJBQzdDLFNBQVMsRUFBRTtnQ0FDVCxNQUFNLEVBQUU7b0NBQ04sR0FBRyxFQUFFLEdBQUc7b0NBQ1IsTUFBTSxFQUFFLEtBQUs7aUNBQ2Q7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQOzRCQUNFLElBQUksRUFBRSxXQUFXOzRCQUNqQixHQUFHLEVBQUU7Z0NBQ0gsTUFBTSxFQUFFLFdBQVc7NkJBQ3BCO3lCQUNGO3FCQUNGO29CQUNELFVBQVUsRUFBRSxDQUFDO29CQUNiLGNBQWMsRUFBRSxLQUFLLENBQUMsS0FBSztpQkFDNUI7YUFDRjtZQUNELFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUM1QixDQUFDLENBQUE7UUFFRixNQUFNLFlBQVksR0FBRyxJQUFJLGdDQUFjLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3hFLFNBQVMsRUFBRSxlQUFlO1NBQzNCLENBQUMsQ0FBQTtRQUVGLElBQUksOENBQW9CLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxtQkFBbUI7WUFDM0IsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixXQUFXLEVBQUU7Z0JBQ1gsbUNBQW1DO2dCQUNuQyxvQ0FBb0M7Z0JBQ3BDLGNBQWM7Z0JBQ2QsaUJBQWlCO2dCQUNqQixpQkFBaUI7YUFDbEI7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLHNCQUFzQixHQUFHLElBQUksc0JBQWMsQ0FDL0MsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixrQkFBa0IsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUN2QyxDQUFBO1FBRUQscURBQXFEO1FBQ3JELElBQUkscUNBQWdCLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3JELE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUU7WUFDekMsT0FBTztZQUNQLElBQUksRUFBRSxxQkFBcUI7U0FDNUIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxxQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUU7WUFDekQsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtZQUN6QyxPQUFPO1lBQ1AsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QixDQUFDLENBQUE7UUFFRixJQUFJLHFDQUFnQixDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRTtZQUNqRSxNQUFNLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO1lBQ3pDLE9BQU87WUFDUCxJQUFJLEVBQUUsd0JBQXdCO1NBQy9CLENBQUMsQ0FBQTtRQUVGLElBQUksbUNBQWUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDN0MsUUFBUTtZQUNSLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsUUFBUSxFQUFFO2dCQUNSLFdBQVcsRUFBRTtvQkFDWCw0QkFBNEIsRUFBRSxVQUFVO2lCQUN6QzthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLFFBQVEsRUFBRTtvQkFDUixXQUFXLEVBQUU7d0JBQ1gsa0NBQWtDLEVBQUUsR0FBRzt3QkFDdkMsa0NBQWtDLEVBQUUsR0FBRzt3QkFDdkMsbUNBQW1DLEVBQUUsT0FBTzt3QkFDNUMsc0NBQXNDLEVBQUUsT0FBTztxQkFDaEQ7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLG9CQUFvQixFQUFFLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxLQUFLLEVBQUUsR0FBRyxRQUFRLENBQUMsUUFBUSxtQkFBbUIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxZQUFZLHdDQUF3Qzs0QkFDdEgsR0FBRyxFQUFFO2dDQUNIO29DQUNFLElBQUksRUFBRSxLQUFLO29DQUNYLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztpQ0FDakI7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLG1CQUFtQjtvQ0FDekIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLO2lDQUM3QjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsVUFBVTtvQ0FDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJO2lDQUN0QjtnQ0FDRDtvQ0FDRSxJQUFJLEVBQUUsZ0JBQWdCO29DQUN0QixLQUFLLEVBQUUsZUFBZTtpQ0FDdkI7Z0NBQ0Q7b0NBQ0UsSUFBSSxFQUFFLHFCQUFxQjtvQ0FDM0IsS0FBSyxFQUFFLFFBQVE7aUNBQ2hCO2dDQUNEO29DQUNFLElBQUksRUFBRSxzQkFBc0I7b0NBQzVCLEtBQUssRUFBRSxPQUFPO2lDQUNmOzZCQUNGOzRCQUNELFNBQVMsRUFBRTtnQ0FDVCx1RkFBdUY7Z0NBQ3ZGLE1BQU0sRUFBRTtvQ0FDTixHQUFHLEVBQUUsT0FBTztvQ0FDWixNQUFNLEVBQUUsT0FBTztpQ0FDaEI7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEtBQUs7aUJBQ3ZDO2FBQ0Y7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOztBQXBRSCxrQkFxUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1nb29nbGUvbGliL2FydGlmYWN0LXJlZ2lzdHJ5LXJlcG9zaXRvcnknXG5pbXBvcnQgeyBDbG91ZFJ1blNlcnZpY2UgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9jbG91ZC1ydW4tc2VydmljZSdcbmltcG9ydCB7IENsb3VkUnVuVjJKb2IgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9jbG91ZC1ydW4tdjItam9iJ1xuaW1wb3J0IHsgUHJvamVjdElhbUN1c3RvbVJvbGUgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm9qZWN0LWlhbS1jdXN0b20tcm9sZSdcbmltcG9ydCB7IFByb2plY3RJYW1NZW1iZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm9qZWN0LWlhbS1tZW1iZXInXG5pbXBvcnQgeyBHb29nbGVQcm92aWRlciB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1nb29nbGUvbGliL3Byb3ZpZGVyJ1xuaW1wb3J0IHsgU2VydmljZUFjY291bnQgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9zZXJ2aWNlLWFjY291bnQnXG5pbXBvcnQgeyBOdWxsUHJvdmlkZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItbnVsbC9saWIvcHJvdmlkZXInXG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1udWxsL2xpYi9yZXNvdXJjZSdcbmltcG9ydCB7IFRlcnJhZm9ybUxvY2FsIH0gZnJvbSAnY2RrdGYnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuaW1wb3J0IHsgY29tbW9uVmFyaWFibGVzIH0gZnJvbSAnLi92YXJpYWJsZXMnXG5cbmV4cG9ydCBjbGFzcyBHY3AgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgbG9jYXRpb24gPSAnZXVyb3BlLW5vcnRoMSdcbiAgICBjb25zdCBwcm9qZWN0ID0gJ2doYS1ydW5uZXItZXhhbXBsZSdcblxuICAgIG5ldyBHb29nbGVQcm92aWRlcih0aGlzLCAnZ29vZ2xlJywge1xuICAgICAgcHJvamVjdCxcbiAgICAgIHJlZ2lvbjogbG9jYXRpb24sXG4gICAgfSlcblxuICAgIG5ldyBOdWxsUHJvdmlkZXIodGhpcywgJ251bGwnKVxuXG4gICAgY29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpXG5cbiAgICBjb25zdCByZWdpc3RyeSA9IG5ldyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSh0aGlzLCAncmVnaXN0cnknLCB7XG4gICAgICBmb3JtYXQ6ICdET0NLRVInLFxuICAgICAgbW9kZTogJ1JFTU9URV9SRVBPU0lUT1JZJyxcbiAgICAgIHJlcG9zaXRvcnlJZDogJ2doYS1ydW5uZXItdGVzdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1JlcG9zaXRvcnkgdG8gaG9zdCBydW4gYW5kIHJlc3VsdGluZyBpbWFnZXMgZnJvbSBHSEEgcnVucycsXG4gICAgICByZW1vdGVSZXBvc2l0b3J5Q29uZmlnOiB7XG4gICAgICAgIGRvY2tlclJlcG9zaXRvcnk6IHtcbiAgICAgICAgICBjdXN0b21SZXBvc2l0b3J5OiB7XG4gICAgICAgICAgICB1cmk6ICdodHRwczovL2doY3IuaW8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBqb2JTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCAnam9iU2VydmljZUFjY291bnQnLCB7XG4gICAgICBhY2NvdW50SWQ6ICdnaGEtcnVubmVyLWpvYi1zYScsXG4gICAgfSlcblxuICAgIGNvbnN0IHJ1bm5lclJvbGUgPSBuZXcgUHJvamVjdElhbUN1c3RvbVJvbGUodGhpcywgJ3J1bm5lclJvbGUnLCB7XG4gICAgICByb2xlSWQ6ICdnaGFSdW5uZXJSb2xlJyxcbiAgICAgIHRpdGxlOiAnR0hBIFJ1bm5lciBSb2xlJyxcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICdhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXQnLFxuICAgICAgICAnYXJ0aWZhY3RyZWdpc3RyeS5kb2NrZXJpbWFnZXMubGlzdCcsXG4gICAgICAgICdydW4uam9icy5ydW4nLFxuICAgICAgICAncnVuLmpvYnMuY3JlYXRlJyxcbiAgICAgICAgJ3J1bi5qb2JzLmRlbGV0ZScsXG4gICAgICAgICdydW4uam9icy5saXN0JyxcbiAgICAgICAgLy8gTmVlZGVkIGZvciB3YWl0aW5nXG4gICAgICAgICdydW4uZXhlY3V0aW9ucy5nZXQnLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgY29uc3Qgam9iUG9saWN5TWVtYmVyID0gbmV3IFRlcnJhZm9ybUxvY2FsKFxuICAgICAgdGhpcyxcbiAgICAgICdnaGFNZW1iZXInLFxuICAgICAgYHNlcnZpY2VBY2NvdW50OiR7am9iU2EuZW1haWx9YCxcbiAgICApXG5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAncnVubmVyUm9sZUJpbmRpbmcnLCB7XG4gICAgICBtZW1iZXI6IGpvYlBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6IHJ1bm5lclJvbGUuaWQsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsICdydW5uZXJSb2xlQmluZGluZ1N0b3JhZ2UnLCB7XG4gICAgICBtZW1iZXI6IGpvYlBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9zdG9yYWdlLmFkbWluJyxcbiAgICB9KVxuXG4gICAgbmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgJ3J1bm5lclJvbGVCaW5kaW5nUnVuU2VydmljZUFnZW50Jywge1xuICAgICAgbWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcbiAgICAgIHByb2plY3QsXG4gICAgICByb2xlOiAncm9sZXMvcnVuLnNlcnZpY2VBZ2VudCcsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsICdydW5uZXJSb2xlQmluZGluZ1J1blZpZXdlcicsIHtcbiAgICAgIG1lbWJlcjogam9iUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG4gICAgICBwcm9qZWN0LFxuICAgICAgcm9sZTogJ3JvbGVzL3J1bi52aWV3ZXInLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdG9yYWdlTmFtZSA9ICdnaGEtcnVubmVyLWpvYi1leHRlcm5hbHMnXG4gICAgY29uc3QgY3JlYXRlQnVja2V0ID0gbmV3IFRlcnJhZm9ybUxvY2FsKFxuICAgICAgdGhpcyxcbiAgICAgICdidWNrZXRNb2RpZmljYXRpb24nLFxuICAgICAgYENMT1VEU0RLX0NPUkVfRElTQUJMRV9QUk9NUFRTPTEgZ2Nsb3VkIGFscGhhIHN0b3JhZ2UgYnVja2V0cyBjcmVhdGUgZ3M6Ly8ke3N0b3JhZ2VOYW1lfSAtLXByb2plY3Q9JHtwcm9qZWN0fSAtLWxvY2F0aW9uPSR7bG9jYXRpb259IC0tdW5pZm9ybS1idWNrZXQtbGV2ZWwtYWNjZXNzIC0tZW5hYmxlLWhpZXJhcmNoaWNhbC1uYW1lc3BhY2VgLFxuICAgIClcblxuICAgIC8vIEhpZXJhcmNoaWFsIG5hbWVzcGFjZXMgY2FuJ3QgYmUgZW5hYmxlZCB3aXRoIFRlcnJhZm9ybS5cbiAgICBjb25zdCBidWNrZXRDcmVhdGlvbiA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnZ2Nsb3VkJywge1xuICAgICAgcHJvdmlzaW9uZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbG9jYWwtZXhlYycsXG4gICAgICAgICAgY29tbWFuZDogY3JlYXRlQnVja2V0LmZxbixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBmcW46IGNyZWF0ZUJ1Y2tldC5mcW4sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICAvLyBUT0RPOiBjaGVjayBjYWNoaW5nIGh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9hcnRpZmFjdC1yZWdpc3RyeS9kb2NzL3B1bGwtY2FjaGVkLWRvY2tlcmh1Yi1pbWFnZXNcbiAgICBjb25zdCBydW5uZXJKb2IgPSBuZXcgQ2xvdWRSdW5WMkpvYih0aGlzLCAnZ2hhSm9iJywge1xuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBmYWxzZSxcbiAgICAgIG5hbWU6ICdnaGEtcnVubmVyLWpvYicsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbWFnZTogYCR7cmVnaXN0cnkubG9jYXRpb259LWRvY2tlci5wa2cuZGV2LyR7cHJvamVjdH0vJHtyZWdpc3RyeS5yZXBvc2l0b3J5SWR9L2hpLWZpL2FjdGlvbnMtcnVubmVyOmNyYCxcbiAgICAgICAgICAgICAgZW52OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0NMT1VEU0RLX1JVTl9SRUdJT04nLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0dPT0dMRV9DTE9VRF9QUk9KRUNUJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9qZWN0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0VYVEVSTkFMX1NUT1JBR0VfTkFNRScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogc3RvcmFnZU5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBGVVNFIG1vdW50cyBkaXJlY3RvcnkgYXMgcm9vdCB3aXRoIDc3NyBmbyBkaXJlY3RvcmllcyBhbmQgNTU1IGZvciBvdGhlciBmaWxlcy4gQXMgcGF0aCBpcyBvd25lZCBhbHdheXMgYnkgcm9vdCwgdXRpbWUgb3IgcGVybWlzc2lvbiBjaGFuZ2UgaXMgbm90IHBvc3NpYmxlLiBUaGVzZSBvcHRpb25zIHByZXZlbnQgdGFyIHRvIHRyeSB0aG9zZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdUQVJfT1BUSU9OUycsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogJy0tdG91Y2ggLS1uby1vdmVyd3JpdGUtZGlyIC0tbm8tc2FtZS1vd25lcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgdm9sdW1lTW91bnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ2V4dGVybmFscycsXG4gICAgICAgICAgICAgICAgICBtb3VudFBhdGg6ICcvaG9tZS9ydW5uZXIvX3dvcmsvZXh0ZXJuYWxzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBjb21tYW5kOiBbJy9ob21lL3J1bm5lci9lcGhlbWVyYWxfcnVubmVyLnNoJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICAgICAgY3B1OiAnMScsXG4gICAgICAgICAgICAgICAgICBtZW1vcnk6ICcyR2knLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdm9sdW1lczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZXh0ZXJuYWxzJyxcbiAgICAgICAgICAgICAgZ2NzOiB7XG4gICAgICAgICAgICAgICAgYnVja2V0OiBzdG9yYWdlTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiAwLFxuICAgICAgICAgIHNlcnZpY2VBY2NvdW50OiBqb2JTYS5lbWFpbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFtidWNrZXRDcmVhdGlvbl0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCAnYXV0b3NjYWxlclNlcnZpY2VBY2NvdW50Jywge1xuICAgICAgYWNjb3VudElkOiAnYXV0b3NjYWxlci1zYScsXG4gICAgfSlcblxuICAgIG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCAnYXV0b3NjYWxlclJvbGUnLCB7XG4gICAgICByb2xlSWQ6ICdnaGFBdXRvc2NhbGVyUm9sZScsXG4gICAgICB0aXRsZTogJ0dIQSBBdXRvc2NhbGVyIFJvbGUnLFxuICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgJ2FydGlmYWN0cmVnaXN0cnkuZG9ja2VyaW1hZ2VzLmdldCcsXG4gICAgICAgICdhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0JyxcbiAgICAgICAgJ3J1bi5qb2JzLnJ1bicsXG4gICAgICAgICdydW4uam9icy5jcmVhdGUnLFxuICAgICAgICAncnVuLmpvYnMuZGVsZXRlJyxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJQb2xpY3lNZW1iZXIgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG4gICAgICB0aGlzLFxuICAgICAgJ2F1dG9zY2FsZXJNZW1iZXInLFxuICAgICAgYHNlcnZpY2VBY2NvdW50OiR7YXV0b3NjYWxlclNhLmVtYWlsfWAsXG4gICAgKVxuXG4gICAgLy8gVE9ETzogcmVwbGFjZSAyIGZvbGxvd2luZyB3aXRoIG1vcmUgc3BlY2lmaWMgb25lcy5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAnYXV0b3NjYWxlclJvbGVCaW5kaW5nUnVuJywge1xuICAgICAgbWVtYmVyOiBhdXRvc2NhbGVyUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG4gICAgICBwcm9qZWN0LFxuICAgICAgcm9sZTogJ3JvbGVzL3J1bi5kZXZlbG9wZXInLFxuICAgIH0pXG5cbiAgICBuZXcgUHJvamVjdElhbU1lbWJlcih0aGlzLCAnYXV0b3NjYWxlclJvbGVCaW5kaW5nU3RvcmFnZScsIHtcbiAgICAgIG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9zdG9yYWdlLmFkbWluJyxcbiAgICB9KVxuXG4gICAgbmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgJ2F1dG9zY2FsZXJSb2xlQmluZGluZ1J1blNlcnZpY2VBZ2VudCcsIHtcbiAgICAgIG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuICAgICAgcHJvamVjdCxcbiAgICAgIHJvbGU6ICdyb2xlcy9ydW4uc2VydmljZUFnZW50JyxcbiAgICB9KVxuXG4gICAgbmV3IENsb3VkUnVuU2VydmljZSh0aGlzLCAnYXV0b3NjYWxlclNlcnZpY2UnLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6ICdnaGEtYXV0b3NjYWxlcicsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgICdydW4uZ29vZ2xlYXBpcy5jb20vaW5ncmVzcyc6ICdpbnRlcm5hbCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgICAgJ2F1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21heFNjYWxlJzogJzEnLFxuICAgICAgICAgICAgJ2F1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21pblNjYWxlJzogJzEnLFxuICAgICAgICAgICAgJ3J1bi5nb29nbGVhcGlzLmNvbS9jcHUtdGhyb3R0bGluZyc6ICdmYWxzZScsXG4gICAgICAgICAgICAncnVuLmdvb2dsZWFwaXMuY29tL3N0YXJ0dXAtY3B1LWJvb3N0JzogJ2ZhbHNlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGVjOiB7XG4gICAgICAgICAgY29udGFpbmVyQ29uY3VycmVuY3k6IDEsXG4gICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbWFnZTogYCR7cmVnaXN0cnkubG9jYXRpb259LWRvY2tlci5wa2cuZGV2LyR7cHJvamVjdH0vJHtyZWdpc3RyeS5yZXBvc2l0b3J5SWR9L2hpLWZpL2doYS1ydW5uZXJzLW9uLW1hbmFnZWQtZW52OnRlc3RgLFxuICAgICAgICAgICAgICBlbnY6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnUEFUJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXQudmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnR0lUSFVCX0NPTkZJR19VUkwnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGdpdGh1YkNvbmZpZ1VybC52YWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdKT0JfTkFNRScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcnVubmVySm9iLm5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnU0NBTEVfU0VUX05BTUUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjci1ydW5uZXItc2V0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdDTE9VRFNES19SVU5fUkVHSU9OJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdHT09HTEVfQ0xPVURfUFJPSkVDVCcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvamVjdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgICAvLyBTZXJ2aWNlIHdvdWxkIHdvcmsgZm9yIG11Y2ggbG93ZXIsIGJ1dCB0aGVzZSBhcmUgbWluaW11bSB2YWx1ZXMgZm9yIFwiYWx3YXlzIG9uXCIgbW9kZVxuICAgICAgICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgICAgICAgY3B1OiAnMTAwMG0nLFxuICAgICAgICAgICAgICAgICAgbWVtb3J5OiAnNTEyTWknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2VydmljZUFjY291bnROYW1lOiBhdXRvc2NhbGVyU2EuZW1haWwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
248
|
+
Gcp[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Gcp", version: "0.0.9" };
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nY3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwR0FBcUc7QUFDckcsb0ZBQStFO0FBQy9FLGtGQUE0RTtBQUM1RSxnR0FBMEY7QUFDMUYsc0ZBQWlGO0FBQ2pGLGtFQUFxRTtBQUNyRSxnRkFBNEU7QUFDNUUsZ0VBQWlFO0FBQ2pFLGdFQUE2RDtBQUM3RCxpQ0FBdUM7QUFDdkMsMkNBQXVDO0FBQ3ZDLDJDQUE4QztBQUU5QyxNQUFhLEdBQUksU0FBUSxzQkFBUztJQUNqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQztRQUVyQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNsQyxPQUFPO1lBQ1AsTUFBTSxFQUFFLFFBQVE7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQixNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlEQUEwQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDakUsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixZQUFZLEVBQUUsaUJBQWlCO1lBQy9CLFdBQVcsRUFBRSwyREFBMkQ7WUFDeEUsc0JBQXNCLEVBQUU7Z0JBQ3ZCLGdCQUFnQixFQUFFO29CQUNqQixnQkFBZ0IsRUFBRTt3QkFDakIsR0FBRyxFQUFFLGlCQUFpQjtxQkFDdEI7aUJBQ0Q7YUFDRDtTQUNELENBQUMsQ0FBQztRQUVILE1BQU0s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QUN6QixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7aUNBQzVCO2dDQUNEO29DQUNDLElBQUksRUFBRSxVQUFVO29DQUNoQixLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUk7aUNBQ3JCO2dDQUNEO29DQUNDLElBQUksRUFBRSxnQkFBZ0I7b0NBQ3RCLEtBQUssRUFBRSxlQUFlO2lDQUN0QjtnQ0FDRDtvQ0FDQyxJQUFJLEVBQUUscUJBQXFCO29DQUMzQixLQUFLLEVBQUUsUUFBUTtpQ0FDZjtnQ0FDRDtvQ0FDQyxJQUFJLEVBQUUsc0JBQXNCO29DQUM1QixLQUFLLEVBQUUsT0FBTztpQ0FDZDs2QkFDRDs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1YsdUZBQXVGO2dDQUN2RixNQUFNLEVBQUU7b0NBQ1AsR0FBRyxFQUFFLE9BQU87b0NBQ1osTUFBTSxFQUFFLE9BQU87aUNBQ2Y7NkJBQ0Q7eUJBQ0Q7cUJBQ0Q7b0JBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEtBQUs7aUJBQ3RDO2FBQ0Q7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDOztBQXBRRixrQkFxUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFJlZ2lzdHJ5UmVwb3NpdG9yeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9hcnRpZmFjdC1yZWdpc3RyeS1yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDbG91ZFJ1blNlcnZpY2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvY2xvdWQtcnVuLXNlcnZpY2VcIjtcbmltcG9ydCB7IENsb3VkUnVuVjJKb2IgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvY2xvdWQtcnVuLXYyLWpvYlwiO1xuaW1wb3J0IHsgUHJvamVjdElhbUN1c3RvbVJvbGUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvcHJvamVjdC1pYW0tY3VzdG9tLXJvbGVcIjtcbmltcG9ydCB7IFByb2plY3RJYW1NZW1iZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvcHJvamVjdC1pYW0tbWVtYmVyXCI7XG5pbXBvcnQgeyBHb29nbGVQcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItZ29vZ2xlL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgU2VydmljZUFjY291bnQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWdvb2dsZS9saWIvc2VydmljZS1hY2NvdW50XCI7XG5pbXBvcnQgeyBOdWxsUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLW51bGwvbGliL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItbnVsbC9saWIvcmVzb3VyY2VcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUxvY2FsIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY29tbW9uVmFyaWFibGVzIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBHY3AgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdGNvbnN0IGxvY2F0aW9uID0gXCJldXJvcGUtbm9ydGgxXCI7XG5cdFx0Y29uc3QgcHJvamVjdCA9IFwiZ2hhLXJ1bm5lci1leGFtcGxlXCI7XG5cblx0XHRuZXcgR29vZ2xlUHJvdmlkZXIodGhpcywgXCJnb29nbGVcIiwge1xuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJlZ2lvbjogbG9jYXRpb24sXG5cdFx0fSk7XG5cblx0XHRuZXcgTnVsbFByb3ZpZGVyKHRoaXMsIFwibnVsbFwiKTtcblxuXHRcdGNvbnN0IHsgcGF0LCBnaXRodWJDb25maWdVcmwgfSA9IGNvbW1vblZhcmlhYmxlcyh0aGlzKTtcblxuXHRcdGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEFydGlmYWN0UmVnaXN0cnlSZXBvc2l0b3J5KHRoaXMsIFwicmVnaXN0cnlcIiwge1xuXHRcdFx0Zm9ybWF0OiBcIkRPQ0tFUlwiLFxuXHRcdFx0bW9kZTogXCJSRU1PVEVfUkVQT1NJVE9SWVwiLFxuXHRcdFx0cmVwb3NpdG9yeUlkOiBcImdoYS1ydW5uZXItdGVzdFwiLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiUmVwb3NpdG9yeSB0byBob3N0IHJ1biBhbmQgcmVzdWx0aW5nIGltYWdlcyBmcm9tIEdIQSBydW5zXCIsXG5cdFx0XHRyZW1vdGVSZXBvc2l0b3J5Q29uZmlnOiB7XG5cdFx0XHRcdGRvY2tlclJlcG9zaXRvcnk6IHtcblx0XHRcdFx0XHRjdXN0b21SZXBvc2l0b3J5OiB7XG5cdFx0XHRcdFx0XHR1cmk6IFwiaHR0cHM6Ly9naGNyLmlvXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBqb2JTYSA9IG5ldyBTZXJ2aWNlQWNjb3VudCh0aGlzLCBcImpvYlNlcnZpY2VBY2NvdW50XCIsIHtcblx0XHRcdGFjY291bnRJZDogXCJnaGEtcnVubmVyLWpvYi1zYVwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcnVubmVyUm9sZSA9IG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCBcInJ1bm5lclJvbGVcIiwge1xuXHRcdFx0cm9sZUlkOiBcImdoYVJ1bm5lclJvbGVcIixcblx0XHRcdHRpdGxlOiBcIkdIQSBSdW5uZXIgUm9sZVwiLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXRcIixcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0XCIsXG5cdFx0XHRcdFwicnVuLmpvYnMucnVuXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuY3JlYXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuZGVsZXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMubGlzdFwiLFxuXHRcdFx0XHQvLyBOZWVkZWQgZm9yIHdhaXRpbmdcblx0XHRcdFx0XCJydW4uZXhlY3V0aW9ucy5nZXRcIixcblx0XHRcdF0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBqb2JQb2xpY3lNZW1iZXIgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJnaGFNZW1iZXJcIixcblx0XHRcdGBzZXJ2aWNlQWNjb3VudDoke2pvYlNhLmVtYWlsfWAsXG5cdFx0KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBydW5uZXJSb2xlLmlkLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJydW5uZXJSb2xlQmluZGluZ1N0b3JhZ2VcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3N0b3JhZ2UuYWRtaW5cIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdSdW5TZXJ2aWNlQWdlbnRcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3J1bi5zZXJ2aWNlQWdlbnRcIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwicnVubmVyUm9sZUJpbmRpbmdSdW5WaWV3ZXJcIiwge1xuXHRcdFx0bWVtYmVyOiBqb2JQb2xpY3lNZW1iZXIudG9TdHJpbmcoKSxcblx0XHRcdHByb2plY3QsXG5cdFx0XHRyb2xlOiBcInJvbGVzL3J1bi52aWV3ZXJcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHN0b3JhZ2VOYW1lID0gXCJnaGEtcnVubmVyLWpvYi1leHRlcm5hbHNcIjtcblx0XHRjb25zdCBjcmVhdGVCdWNrZXQgPSBuZXcgVGVycmFmb3JtTG9jYWwoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJidWNrZXRNb2RpZmljYXRpb25cIixcblx0XHRcdGBDTE9VRFNES19DT1JFX0RJU0FCTEVfUFJPTVBUUz0xIGdjbG91ZCBhbHBoYSBzdG9yYWdlIGJ1Y2tldHMgY3JlYXRlIGdzOi8vJHtzdG9yYWdlTmFtZX0gLS1wcm9qZWN0PSR7cHJvamVjdH0gLS1sb2NhdGlvbj0ke2xvY2F0aW9ufSAtLXVuaWZvcm0tYnVja2V0LWxldmVsLWFjY2VzcyAtLWVuYWJsZS1oaWVyYXJjaGljYWwtbmFtZXNwYWNlYCxcblx0XHQpO1xuXG5cdFx0Ly8gSGllcmFyY2hpYWwgbmFtZXNwYWNlcyBjYW4ndCBiZSBlbmFibGVkIHdpdGggVGVycmFmb3JtLlxuXHRcdGNvbnN0IGJ1Y2tldENyZWF0aW9uID0gbmV3IFJlc291cmNlKHRoaXMsIFwiZ2Nsb3VkXCIsIHtcblx0XHRcdHByb3Zpc2lvbmVyczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogXCJsb2NhbC1leGVjXCIsXG5cdFx0XHRcdFx0Y29tbWFuZDogY3JlYXRlQnVja2V0LmZxbixcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHR0cmlnZ2Vyczoge1xuXHRcdFx0XHRmcW46IGNyZWF0ZUJ1Y2tldC5mcW4sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Ly8gVE9ETzogY2hlY2sgY2FjaGluZyBodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vYXJ0aWZhY3QtcmVnaXN0cnkvZG9jcy9wdWxsLWNhY2hlZC1kb2NrZXJodWItaW1hZ2VzXG5cdFx0Y29uc3QgcnVubmVySm9iID0gbmV3IENsb3VkUnVuVjJKb2IodGhpcywgXCJnaGFKb2JcIiwge1xuXHRcdFx0ZGVsZXRpb25Qcm90ZWN0aW9uOiBmYWxzZSxcblx0XHRcdG5hbWU6IFwiZ2hhLXJ1bm5lci1qb2JcIixcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0XHRjb250YWluZXJzOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGltYWdlOiBgJHtyZWdpc3RyeS5sb2NhdGlvbn0tZG9ja2VyLnBrZy5kZXYvJHtwcm9qZWN0fS8ke3JlZ2lzdHJ5LnJlcG9zaXRvcnlJZH0vaGktZmkvYWN0aW9ucy1ydW5uZXI6Y3JgLFxuXHRcdFx0XHRcdFx0XHRlbnY6IFtcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkNMT1VEU0RLX1JVTl9SRUdJT05cIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBsb2NhdGlvbixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiR09PR0xFX0NMT1VEX1BST0pFQ1RcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBwcm9qZWN0LFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJFWFRFUk5BTF9TVE9SQUdFX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzdG9yYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdC8vIEZVU0UgbW91bnRzIGRpcmVjdG9yeSBhcyByb290IHdpdGggNzc3IGZvIGRpcmVjdG9yaWVzIGFuZCA1NTUgZm9yIG90aGVyIGZpbGVzLiBBcyBwYXRoIGlzIG93bmVkIGFsd2F5cyBieSByb290LCB1dGltZSBvciBwZXJtaXNzaW9uIGNoYW5nZSBpcyBub3QgcG9zc2libGUuIFRoZXNlIG9wdGlvbnMgcHJldmVudCB0YXIgdG8gdHJ5IHRob3NlXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJUQVJfT1BUSU9OU1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFwiLS10b3VjaCAtLW5vLW92ZXJ3cml0ZS1kaXIgLS1uby1zYW1lLW93bmVyXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0dm9sdW1lTW91bnRzOiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJleHRlcm5hbHNcIixcblx0XHRcdFx0XHRcdFx0XHRcdG1vdW50UGF0aDogXCIvaG9tZS9ydW5uZXIvX3dvcmsvZXh0ZXJuYWxzXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0Y29tbWFuZDogW1wiL2hvbWUvcnVubmVyL2VwaGVtZXJhbF9ydW5uZXIuc2hcIl0sXG5cdFx0XHRcdFx0XHRcdHJlc291cmNlczoge1xuXHRcdFx0XHRcdFx0XHRcdGxpbWl0czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3B1OiBcIjFcIixcblx0XHRcdFx0XHRcdFx0XHRcdG1lbW9yeTogXCIyR2lcIixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogXCJleHRlcm5hbHNcIixcblx0XHRcdFx0XHRcdFx0Z2NzOiB7XG5cdFx0XHRcdFx0XHRcdFx0YnVja2V0OiBzdG9yYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRtYXhSZXRyaWVzOiAwLFxuXHRcdFx0XHRcdHNlcnZpY2VBY2NvdW50OiBqb2JTYS5lbWFpbCxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRkZXBlbmRzT246IFtidWNrZXRDcmVhdGlvbl0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBhdXRvc2NhbGVyU2EgPSBuZXcgU2VydmljZUFjY291bnQodGhpcywgXCJhdXRvc2NhbGVyU2VydmljZUFjY291bnRcIiwge1xuXHRcdFx0YWNjb3VudElkOiBcImF1dG9zY2FsZXItc2FcIixcblx0XHR9KTtcblxuXHRcdG5ldyBQcm9qZWN0SWFtQ3VzdG9tUm9sZSh0aGlzLCBcImF1dG9zY2FsZXJSb2xlXCIsIHtcblx0XHRcdHJvbGVJZDogXCJnaGFBdXRvc2NhbGVyUm9sZVwiLFxuXHRcdFx0dGl0bGU6IFwiR0hBIEF1dG9zY2FsZXIgUm9sZVwiLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5nZXRcIixcblx0XHRcdFx0XCJhcnRpZmFjdHJlZ2lzdHJ5LmRvY2tlcmltYWdlcy5saXN0XCIsXG5cdFx0XHRcdFwicnVuLmpvYnMucnVuXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuY3JlYXRlXCIsXG5cdFx0XHRcdFwicnVuLmpvYnMuZGVsZXRlXCIsXG5cdFx0XHRdLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXV0b3NjYWxlclBvbGljeU1lbWJlciA9IG5ldyBUZXJyYWZvcm1Mb2NhbChcblx0XHRcdHRoaXMsXG5cdFx0XHRcImF1dG9zY2FsZXJNZW1iZXJcIixcblx0XHRcdGBzZXJ2aWNlQWNjb3VudDoke2F1dG9zY2FsZXJTYS5lbWFpbH1gLFxuXHRcdCk7XG5cblx0XHQvLyBUT0RPOiByZXBsYWNlIDIgZm9sbG93aW5nIHdpdGggbW9yZSBzcGVjaWZpYyBvbmVzLlxuXHRcdG5ldyBQcm9qZWN0SWFtTWVtYmVyKHRoaXMsIFwiYXV0b3NjYWxlclJvbGVCaW5kaW5nUnVuXCIsIHtcblx0XHRcdG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJvbGU6IFwicm9sZXMvcnVuLmRldmVsb3BlclwiLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJhdXRvc2NhbGVyUm9sZUJpbmRpbmdTdG9yYWdlXCIsIHtcblx0XHRcdG1lbWJlcjogYXV0b3NjYWxlclBvbGljeU1lbWJlci50b1N0cmluZygpLFxuXHRcdFx0cHJvamVjdCxcblx0XHRcdHJvbGU6IFwicm9sZXMvc3RvcmFnZS5hZG1pblwiLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFByb2plY3RJYW1NZW1iZXIodGhpcywgXCJhdXRvc2NhbGVyUm9sZUJpbmRpbmdSdW5TZXJ2aWNlQWdlbnRcIiwge1xuXHRcdFx0bWVtYmVyOiBhdXRvc2NhbGVyUG9saWN5TWVtYmVyLnRvU3RyaW5nKCksXG5cdFx0XHRwcm9qZWN0LFxuXHRcdFx0cm9sZTogXCJyb2xlcy9ydW4uc2VydmljZUFnZW50XCIsXG5cdFx0fSk7XG5cblx0XHRuZXcgQ2xvdWRSdW5TZXJ2aWNlKHRoaXMsIFwiYXV0b3NjYWxlclNlcnZpY2VcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBcImdoYS1hdXRvc2NhbGVyXCIsXG5cdFx0XHRtZXRhZGF0YToge1xuXHRcdFx0XHRhbm5vdGF0aW9uczoge1xuXHRcdFx0XHRcdFwicnVuLmdvb2dsZWFwaXMuY29tL2luZ3Jlc3NcIjogXCJpbnRlcm5hbFwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHRlbXBsYXRlOiB7XG5cdFx0XHRcdG1ldGFkYXRhOiB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbnM6IHtcblx0XHRcdFx0XHRcdFwiYXV0b3NjYWxpbmcua25hdGl2ZS5kZXYvbWF4U2NhbGVcIjogXCIxXCIsXG5cdFx0XHRcdFx0XHRcImF1dG9zY2FsaW5nLmtuYXRpdmUuZGV2L21pblNjYWxlXCI6IFwiMVwiLFxuXHRcdFx0XHRcdFx0XCJydW4uZ29vZ2xlYXBpcy5jb20vY3B1LXRocm90dGxpbmdcIjogXCJmYWxzZVwiLFxuXHRcdFx0XHRcdFx0XCJydW4uZ29vZ2xlYXBpcy5jb20vc3RhcnR1cC1jcHUtYm9vc3RcIjogXCJmYWxzZVwiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNwZWM6IHtcblx0XHRcdFx0XHRjb250YWluZXJDb25jdXJyZW5jeTogMSxcblx0XHRcdFx0XHRjb250YWluZXJzOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGltYWdlOiBgJHtyZWdpc3RyeS5sb2NhdGlvbn0tZG9ja2VyLnBrZy5kZXYvJHtwcm9qZWN0fS8ke3JlZ2lzdHJ5LnJlcG9zaXRvcnlJZH0vaGktZmkvZ2hhLXJ1bm5lcnMtb24tbWFuYWdlZC1lbnY6dGVzdGAsXG5cdFx0XHRcdFx0XHRcdGVudjogW1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiUEFUXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcGF0LnZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJHSVRIVUJfQ09ORklHX1VSTFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGdpdGh1YkNvbmZpZ1VybC52YWx1ZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiSk9CX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBydW5uZXJKb2IubmFtZSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiU0NBTEVfU0VUX05BTUVcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImNyLXJ1bm5lci1zZXRcIixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiQ0xPVURTREtfUlVOX1JFR0lPTlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGxvY2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJHT09HTEVfQ0xPVURfUFJPSkVDVFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHByb2plY3QsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0cmVzb3VyY2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2VydmljZSB3b3VsZCB3b3JrIGZvciBtdWNoIGxvd2VyLCBidXQgdGhlc2UgYXJlIG1pbmltdW0gdmFsdWVzIGZvciBcImFsd2F5cyBvblwiIG1vZGVcblx0XHRcdFx0XHRcdFx0XHRsaW1pdHM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNwdTogXCIxMDAwbVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWVtb3J5OiBcIjUxMk1pXCIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRzZXJ2aWNlQWNjb3VudE5hbWU6IGF1dG9zY2FsZXJTYS5lbWFpbCxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
package/lib/lib/variables.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TerraformVariable } from
|
|
2
|
-
import { Construct } from
|
|
1
|
+
import { TerraformVariable } from "cdktf";
|
|
2
|
+
import type { Construct } from "constructs";
|
|
3
3
|
export interface Variables {
|
|
4
4
|
pat: TerraformVariable;
|
|
5
5
|
githubConfigUrl: TerraformVariable;
|
package/lib/lib/variables.js
CHANGED
|
@@ -3,26 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.commonVariables = commonVariables;
|
|
4
4
|
const cdktf_1 = require("cdktf");
|
|
5
5
|
function commonVariables(scope) {
|
|
6
|
-
const pat = new cdktf_1.TerraformVariable(scope,
|
|
7
|
-
description:
|
|
6
|
+
const pat = new cdktf_1.TerraformVariable(scope, "personal_access_token", {
|
|
7
|
+
description: "Github PAT with Actions:Read and Admin:Read+Write scopes",
|
|
8
8
|
nullable: false,
|
|
9
9
|
sensitive: true,
|
|
10
10
|
});
|
|
11
|
-
pat.overrideLogicalId(
|
|
12
|
-
const githubConfigUrl = new cdktf_1.TerraformVariable(scope,
|
|
13
|
-
description:
|
|
11
|
+
pat.overrideLogicalId("personal_access_token");
|
|
12
|
+
const githubConfigUrl = new cdktf_1.TerraformVariable(scope, "github_config_url", {
|
|
13
|
+
description: "Github URL where runners should register to. Format https://<GitHub host>/<your_enterprise/org/repo>",
|
|
14
14
|
nullable: false,
|
|
15
15
|
});
|
|
16
|
-
githubConfigUrl.overrideLogicalId(
|
|
17
|
-
const autoscalerImage = new cdktf_1.TerraformVariable(scope,
|
|
18
|
-
description:
|
|
19
|
-
default:
|
|
16
|
+
githubConfigUrl.overrideLogicalId("github_config_url");
|
|
17
|
+
const autoscalerImage = new cdktf_1.TerraformVariable(scope, "autoscaler_image", {
|
|
18
|
+
description: "Autoscaler image triggering runners",
|
|
19
|
+
default: "ghcr.io/hi-fi/gha-runners-on-managed-env:ebe559da0d51e04eff903f0a04de09da93f4614f",
|
|
20
20
|
});
|
|
21
|
-
autoscalerImage.overrideLogicalId(
|
|
21
|
+
autoscalerImage.overrideLogicalId("autoscaler_image");
|
|
22
22
|
return {
|
|
23
23
|
pat,
|
|
24
24
|
githubConfigUrl,
|
|
25
25
|
autoscalerImage,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSwwQ0E4QkM7QUF2Q0QsaUNBQTBDO0FBUzFDLFNBQWdCLGVBQWUsQ0FBQyxLQUFnQjtJQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtRQUNqRSxXQUFXLEVBQUUsMERBQTBEO1FBQ3ZFLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUUvQyxNQUFNLGVBQWUsR0FBRyxJQUFJLHlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUN6RSxXQUFXLEVBQ1Ysc0dBQXNHO1FBQ3ZHLFFBQVEsRUFBRSxLQUFLO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsZUFBZSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFdkQsTUFBTSxlQUFlLEdBQUcsSUFBSSx5QkFBaUIsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7UUFDeEUsV0FBVyxFQUFFLHFDQUFxQztRQUNsRCxPQUFPLEVBQ04sbUZBQW1GO0tBQ3BGLENBQUMsQ0FBQztJQUVILGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTixHQUFHO1FBQ0gsZUFBZTtRQUNmLGVBQWU7S0FDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlcnJhZm9ybVZhcmlhYmxlIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzIHtcblx0cGF0OiBUZXJyYWZvcm1WYXJpYWJsZTtcblx0Z2l0aHViQ29uZmlnVXJsOiBUZXJyYWZvcm1WYXJpYWJsZTtcblx0YXV0b3NjYWxlckltYWdlOiBUZXJyYWZvcm1WYXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1vblZhcmlhYmxlcyhzY29wZTogQ29uc3RydWN0KTogVmFyaWFibGVzIHtcblx0Y29uc3QgcGF0ID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcInBlcnNvbmFsX2FjY2Vzc190b2tlblwiLCB7XG5cdFx0ZGVzY3JpcHRpb246IFwiR2l0aHViIFBBVCB3aXRoIEFjdGlvbnM6UmVhZCBhbmQgQWRtaW46UmVhZCtXcml0ZSBzY29wZXNcIixcblx0XHRudWxsYWJsZTogZmFsc2UsXG5cdFx0c2Vuc2l0aXZlOiB0cnVlLFxuXHR9KTtcblxuXHRwYXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJwZXJzb25hbF9hY2Nlc3NfdG9rZW5cIik7XG5cblx0Y29uc3QgZ2l0aHViQ29uZmlnVXJsID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcImdpdGh1Yl9jb25maWdfdXJsXCIsIHtcblx0XHRkZXNjcmlwdGlvbjpcblx0XHRcdFwiR2l0aHViIFVSTCB3aGVyZSBydW5uZXJzIHNob3VsZCByZWdpc3RlciB0by4gRm9ybWF0IGh0dHBzOi8vPEdpdEh1YiBob3N0Pi88eW91cl9lbnRlcnByaXNlL29yZy9yZXBvPlwiLFxuXHRcdG51bGxhYmxlOiBmYWxzZSxcblx0fSk7XG5cblx0Z2l0aHViQ29uZmlnVXJsLm92ZXJyaWRlTG9naWNhbElkKFwiZ2l0aHViX2NvbmZpZ191cmxcIik7XG5cblx0Y29uc3QgYXV0b3NjYWxlckltYWdlID0gbmV3IFRlcnJhZm9ybVZhcmlhYmxlKHNjb3BlLCBcImF1dG9zY2FsZXJfaW1hZ2VcIiwge1xuXHRcdGRlc2NyaXB0aW9uOiBcIkF1dG9zY2FsZXIgaW1hZ2UgdHJpZ2dlcmluZyBydW5uZXJzXCIsXG5cdFx0ZGVmYXVsdDpcblx0XHRcdFwiZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudjplYmU1NTlkYTBkNTFlMDRlZmY5MDNmMGEwNGRlMDlkYTkzZjQ2MTRmXCIsXG5cdH0pO1xuXG5cdGF1dG9zY2FsZXJJbWFnZS5vdmVycmlkZUxvZ2ljYWxJZChcImF1dG9zY2FsZXJfaW1hZ2VcIik7XG5cblx0cmV0dXJuIHtcblx0XHRwYXQsXG5cdFx0Z2l0aHViQ29uZmlnVXJsLFxuXHRcdGF1dG9zY2FsZXJJbWFnZSxcblx0fTtcbn1cbiJdfQ==
|
package/lib/tfModules.js
CHANGED
|
@@ -8,41 +8,41 @@ const gcp_1 = require("./lib/gcp");
|
|
|
8
8
|
class AzureContainerAppsArc extends tf_module_stack_1.TFModuleStack {
|
|
9
9
|
constructor(scope, id) {
|
|
10
10
|
super(scope, id);
|
|
11
|
-
new azure_1.Azure(this,
|
|
11
|
+
new azure_1.Azure(this, "aca");
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
class ElasticContainerServiceArc extends tf_module_stack_1.TFModuleStack {
|
|
15
15
|
constructor(scope, id) {
|
|
16
16
|
super(scope, id);
|
|
17
|
-
const clusterName = new tf_module_stack_1.TFModuleVariable(this,
|
|
18
|
-
description:
|
|
17
|
+
const clusterName = new tf_module_stack_1.TFModuleVariable(this, "ecs_cluster_name", {
|
|
18
|
+
description: "Name of the ECS cluster to create",
|
|
19
19
|
}).stringValue;
|
|
20
20
|
const filterType = cdktf_1.VariableType.list(cdktf_1.VariableType.object({
|
|
21
21
|
name: cdktf_1.VariableType.STRING,
|
|
22
22
|
values: cdktf_1.VariableType.list(cdktf_1.VariableType.STRING),
|
|
23
23
|
}));
|
|
24
|
-
const securityGroupFilters = new tf_module_stack_1.TFModuleVariable(this,
|
|
24
|
+
const securityGroupFilters = new tf_module_stack_1.TFModuleVariable(this, "ecs_security_group_filters", {
|
|
25
25
|
type: filterType,
|
|
26
|
-
description:
|
|
26
|
+
description: "Filters for security groups",
|
|
27
27
|
default: [],
|
|
28
28
|
}).value;
|
|
29
|
-
const subnetFilters = new tf_module_stack_1.TFModuleVariable(this,
|
|
29
|
+
const subnetFilters = new tf_module_stack_1.TFModuleVariable(this, "ecs_subnet_filters", {
|
|
30
30
|
type: filterType,
|
|
31
|
-
description:
|
|
31
|
+
description: "Filters for security groups",
|
|
32
32
|
default: [],
|
|
33
33
|
}).value;
|
|
34
34
|
const securityGroupFiltersIterator = cdktf_1.DynamicListTerraformIterator.fromList(securityGroupFilters);
|
|
35
35
|
const subnetFiltersIterator = cdktf_1.DynamicListTerraformIterator.fromList(subnetFilters);
|
|
36
|
-
new aws_1.Aws(this,
|
|
36
|
+
new aws_1.Aws(this, "aws", {
|
|
37
37
|
clusterName,
|
|
38
38
|
containerSupport: false,
|
|
39
39
|
securityGroupFilters: securityGroupFiltersIterator.dynamic({
|
|
40
|
-
name: securityGroupFiltersIterator.getString(
|
|
41
|
-
values: securityGroupFiltersIterator.getList(
|
|
40
|
+
name: securityGroupFiltersIterator.getString("name"),
|
|
41
|
+
values: securityGroupFiltersIterator.getList("values"),
|
|
42
42
|
}),
|
|
43
43
|
subnetFilters: subnetFiltersIterator.dynamic({
|
|
44
|
-
name: subnetFiltersIterator.getString(
|
|
45
|
-
values: subnetFiltersIterator.getList(
|
|
44
|
+
name: subnetFiltersIterator.getString("name"),
|
|
45
|
+
values: subnetFiltersIterator.getList("values"),
|
|
46
46
|
}),
|
|
47
47
|
});
|
|
48
48
|
}
|
|
@@ -50,15 +50,15 @@ class ElasticContainerServiceArc extends tf_module_stack_1.TFModuleStack {
|
|
|
50
50
|
class CloudRunArc extends tf_module_stack_1.TFModuleStack {
|
|
51
51
|
constructor(scope, id) {
|
|
52
52
|
super(scope, id);
|
|
53
|
-
new gcp_1.Gcp(this,
|
|
53
|
+
new gcp_1.Gcp(this, "cr");
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
const app = new cdktf_1.App();
|
|
57
57
|
// This is the name the module can be found under.
|
|
58
58
|
// We expect a "my-awesome-module.md" file in this directory.
|
|
59
59
|
// The README.md file will be generated from this file.
|
|
60
|
-
new AzureContainerAppsArc(app,
|
|
61
|
-
new ElasticContainerServiceArc(app,
|
|
62
|
-
new CloudRunArc(app,
|
|
60
|
+
new AzureContainerAppsArc(app, "azure-container-apps");
|
|
61
|
+
new ElasticContainerServiceArc(app, "elastic-container-service");
|
|
62
|
+
new CloudRunArc(app, "google-cloud-run");
|
|
63
63
|
app.synth();
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZNb2R1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmTW9kdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDREQUF5RTtBQUN6RSxpQ0FBd0U7QUFFeEUsbUNBQWdDO0FBQ2hDLHVDQUFvQztBQUNwQyxtQ0FBZ0M7QUFFaEMsTUFBTSxxQkFBc0IsU0FBUSwrQkFBYTtJQUNoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Q7QUFFRCxNQUFNLDBCQUEyQixTQUFRLCtCQUFhO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3ZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDbEUsV0FBVyxFQUFFLG1DQUFtQztTQUNoRCxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWYsTUFBTSxVQUFVLEdBQUcsb0JBQVksQ0FBQyxJQUFJLENBQ25DLG9CQUFZLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxvQkFBWSxDQUFDLE1BQU07WUFDekIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFZLENBQUMsTUFBTSxDQUFDO1NBQzlDLENBQUMsQ0FDRixDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGtDQUFnQixDQUNoRCxJQUFJLEVBQ0osNEJBQTRCLEVBQzVCO1lBQ0MsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxPQUFPLEVBQUUsRUFBRTtTQUNYLENBQ0QsQ0FBQyxLQUFLLENBQUM7UUFFUixNQUFNLGFBQWEsR0FBRyxJQUFJLGtDQUFnQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUN0RSxJQUFJLEVBQUUsVUFBVTtZQUNoQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVULE1BQU0sNEJBQTRCLEdBQ2pDLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0scUJBQXFCLEdBQzFCLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVc7WUFDWCxnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLG9CQUFvQixFQUFFLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztnQkFDMUQsSUFBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BELE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQ3RELENBQUM7WUFDRixhQUFhLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxJQUFJLEVBQUUscUJBQXFCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDN0MsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7YUFDL0MsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRDtBQUVELE1BQU0sV0FBWSxTQUFRLCtCQUFhO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3ZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxTQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRDtBQUVELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBRyxFQUFFLENBQUM7QUFDdEIsa0RBQWtEO0FBQ2xELDZEQUE2RDtBQUM3RCx1REFBdUQ7QUFDdkQsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUN2RCxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0FBQ2pFLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBRXpDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRGTW9kdWxlU3RhY2ssIFRGTW9kdWxlVmFyaWFibGUgfSBmcm9tIFwiQGNka3RmL3RmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgQXBwLCBEeW5hbWljTGlzdFRlcnJhZm9ybUl0ZXJhdG9yLCBWYXJpYWJsZVR5cGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3cyB9IGZyb20gXCIuL2xpYi9hd3NcIjtcbmltcG9ydCB7IEF6dXJlIH0gZnJvbSBcIi4vbGliL2F6dXJlXCI7XG5pbXBvcnQgeyBHY3AgfSBmcm9tIFwiLi9saWIvZ2NwXCI7XG5cbmNsYXNzIEF6dXJlQ29udGFpbmVyQXBwc0FyYyBleHRlbmRzIFRGTW9kdWxlU3RhY2sge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdG5ldyBBenVyZSh0aGlzLCBcImFjYVwiKTtcblx0fVxufVxuXG5jbGFzcyBFbGFzdGljQ29udGFpbmVyU2VydmljZUFyYyBleHRlbmRzIFRGTW9kdWxlU3RhY2sge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdGNvbnN0IGNsdXN0ZXJOYW1lID0gbmV3IFRGTW9kdWxlVmFyaWFibGUodGhpcywgXCJlY3NfY2x1c3Rlcl9uYW1lXCIsIHtcblx0XHRcdGRlc2NyaXB0aW9uOiBcIk5hbWUgb2YgdGhlIEVDUyBjbHVzdGVyIHRvIGNyZWF0ZVwiLFxuXHRcdH0pLnN0cmluZ1ZhbHVlO1xuXG5cdFx0Y29uc3QgZmlsdGVyVHlwZSA9IFZhcmlhYmxlVHlwZS5saXN0KFxuXHRcdFx0VmFyaWFibGVUeXBlLm9iamVjdCh7XG5cdFx0XHRcdG5hbWU6IFZhcmlhYmxlVHlwZS5TVFJJTkcsXG5cdFx0XHRcdHZhbHVlczogVmFyaWFibGVUeXBlLmxpc3QoVmFyaWFibGVUeXBlLlNUUklORyksXG5cdFx0XHR9KSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VjdXJpdHlHcm91cEZpbHRlcnMgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZShcblx0XHRcdHRoaXMsXG5cdFx0XHRcImVjc19zZWN1cml0eV9ncm91cF9maWx0ZXJzXCIsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IGZpbHRlclR5cGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBcIkZpbHRlcnMgZm9yIHNlY3VyaXR5IGdyb3Vwc1wiLFxuXHRcdFx0XHRkZWZhdWx0OiBbXSxcblx0XHRcdH0sXG5cdFx0KS52YWx1ZTtcblxuXHRcdGNvbnN0IHN1Ym5ldEZpbHRlcnMgPSBuZXcgVEZNb2R1bGVWYXJpYWJsZSh0aGlzLCBcImVjc19zdWJuZXRfZmlsdGVyc1wiLCB7XG5cdFx0XHR0eXBlOiBmaWx0ZXJUeXBlLFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiRmlsdGVycyBmb3Igc2VjdXJpdHkgZ3JvdXBzXCIsXG5cdFx0XHRkZWZhdWx0OiBbXSxcblx0XHR9KS52YWx1ZTtcblxuXHRcdGNvbnN0IHNlY3VyaXR5R3JvdXBGaWx0ZXJzSXRlcmF0b3IgPVxuXHRcdFx0RHluYW1pY0xpc3RUZXJyYWZvcm1JdGVyYXRvci5mcm9tTGlzdChzZWN1cml0eUdyb3VwRmlsdGVycyk7XG5cdFx0Y29uc3Qgc3VibmV0RmlsdGVyc0l0ZXJhdG9yID1cblx0XHRcdER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3IuZnJvbUxpc3Qoc3VibmV0RmlsdGVycyk7XG5cblx0XHRuZXcgQXdzKHRoaXMsIFwiYXdzXCIsIHtcblx0XHRcdGNsdXN0ZXJOYW1lLFxuXHRcdFx0Y29udGFpbmVyU3VwcG9ydDogZmFsc2UsXG5cdFx0XHRzZWN1cml0eUdyb3VwRmlsdGVyczogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5keW5hbWljKHtcblx0XHRcdFx0bmFtZTogc2VjdXJpdHlHcm91cEZpbHRlcnNJdGVyYXRvci5nZXRTdHJpbmcoXCJuYW1lXCIpLFxuXHRcdFx0XHR2YWx1ZXM6IHNlY3VyaXR5R3JvdXBGaWx0ZXJzSXRlcmF0b3IuZ2V0TGlzdChcInZhbHVlc1wiKSxcblx0XHRcdH0pLFxuXHRcdFx0c3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVyc0l0ZXJhdG9yLmR5bmFtaWMoe1xuXHRcdFx0XHRuYW1lOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZ2V0U3RyaW5nKFwibmFtZVwiKSxcblx0XHRcdFx0dmFsdWVzOiBzdWJuZXRGaWx0ZXJzSXRlcmF0b3IuZ2V0TGlzdChcInZhbHVlc1wiKSxcblx0XHRcdH0pLFxuXHRcdH0pO1xuXHR9XG59XG5cbmNsYXNzIENsb3VkUnVuQXJjIGV4dGVuZHMgVEZNb2R1bGVTdGFjayB7XG5cdGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcblx0XHRzdXBlcihzY29wZSwgaWQpO1xuXG5cdFx0bmV3IEdjcCh0aGlzLCBcImNyXCIpO1xuXHR9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuXG4vLyBXZSBleHBlY3QgYSBcIm15LWF3ZXNvbWUtbW9kdWxlLm1kXCIgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS5cbi8vIFRoZSBSRUFETUUubWQgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZCBmcm9tIHRoaXMgZmlsZS5cbm5ldyBBenVyZUNvbnRhaW5lckFwcHNBcmMoYXBwLCBcImF6dXJlLWNvbnRhaW5lci1hcHBzXCIpO1xubmV3IEVsYXN0aWNDb250YWluZXJTZXJ2aWNlQXJjKGFwcCwgXCJlbGFzdGljLWNvbnRhaW5lci1zZXJ2aWNlXCIpO1xubmV3IENsb3VkUnVuQXJjKGFwcCwgXCJnb29nbGUtY2xvdWQtcnVuXCIpO1xuXG5hcHAuc3ludGgoKTtcbiJdfQ==
|