@cloudsnorkel/cdk-github-runners 0.8.3 → 0.9.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 +2257 -744
- package/API.md +2005 -558
- package/README.md +32 -34
- package/assets/docker-images/codebuild/linux-arm64/Dockerfile +2 -0
- package/assets/docker-images/codebuild/linux-x64/Dockerfile +2 -0
- package/assets/docker-images/fargate/linux-arm64/Dockerfile +2 -0
- package/assets/docker-images/fargate/linux-x64/Dockerfile +2 -0
- package/assets/docker-images/lambda/linux-arm64/Dockerfile +3 -1
- package/assets/docker-images/lambda/linux-arm64/runner.sh +1 -1
- package/assets/docker-images/lambda/linux-x64/Dockerfile +3 -1
- package/assets/docker-images/lambda/linux-x64/runner.sh +1 -1
- package/assets/lambdas/aws-image-builder-versioner.lambda/index.js +42 -27
- package/assets/lambdas/setup.lambda/index.html +12 -12
- package/lib/index.js +7 -3
- package/lib/lambdas/aws-image-builder-versioner-function.js +2 -2
- package/lib/lambdas/aws-image-builder-versioner.lambda.js +43 -27
- package/lib/lambdas/build-image-function.js +2 -2
- package/lib/lambdas/build-image.lambda.js +4 -4
- package/lib/lambdas/delete-ami-function.js +2 -2
- package/lib/lambdas/delete-ami.lambda.js +4 -4
- package/lib/lambdas/delete-runner-function.js +2 -2
- package/lib/lambdas/delete-runner.lambda.js +2 -2
- package/lib/lambdas/github.js +3 -3
- package/lib/lambdas/setup-function.js +2 -2
- package/lib/lambdas/setup.lambda.js +16 -16
- package/lib/lambdas/status-function.js +2 -2
- package/lib/lambdas/status.lambda.js +5 -5
- package/lib/lambdas/token-retriever-function.js +2 -2
- package/lib/lambdas/token-retriever.lambda.js +2 -2
- package/lib/lambdas/update-lambda-function.js +2 -2
- package/lib/lambdas/webhook-handler-function.js +2 -2
- package/lib/lambdas/webhook-handler.lambda.js +2 -2
- package/lib/providers/codebuild.d.ts +24 -4
- package/lib/providers/codebuild.js +43 -13
- package/lib/providers/common.d.ts +17 -39
- package/lib/providers/common.js +26 -16
- package/lib/providers/ec2.d.ts +23 -5
- package/lib/providers/ec2.js +43 -12
- package/lib/providers/fargate.d.ts +21 -4
- package/lib/providers/fargate.js +50 -20
- package/lib/providers/image-builders/api.d.ts +15 -0
- package/lib/providers/image-builders/api.js +47 -0
- package/lib/providers/image-builders/aws-image-builder/ami.d.ts +43 -0
- package/lib/providers/image-builders/aws-image-builder/ami.js +81 -0
- package/lib/providers/image-builders/aws-image-builder/builder.d.ts +133 -0
- package/lib/providers/image-builders/aws-image-builder/builder.js +488 -0
- package/lib/providers/image-builders/aws-image-builder/common.d.ts +10 -0
- package/lib/providers/image-builders/aws-image-builder/common.js +46 -0
- package/lib/providers/image-builders/aws-image-builder/container.d.ts +58 -0
- package/lib/providers/image-builders/aws-image-builder/container.js +63 -0
- package/lib/providers/image-builders/{ami.d.ts → aws-image-builder/deprecated/ami.d.ts} +8 -4
- package/lib/providers/image-builders/aws-image-builder/deprecated/ami.js +239 -0
- package/lib/providers/image-builders/aws-image-builder/deprecated/common.d.ts +34 -0
- package/lib/providers/image-builders/aws-image-builder/deprecated/common.js +139 -0
- package/lib/providers/image-builders/{container.d.ts → aws-image-builder/deprecated/container.d.ts} +8 -4
- package/lib/providers/image-builders/aws-image-builder/deprecated/container.js +222 -0
- package/lib/providers/image-builders/aws-image-builder/deprecated/index.d.ts +5 -0
- package/lib/providers/image-builders/aws-image-builder/deprecated/index.js +22 -0
- package/lib/providers/image-builders/{linux-components.d.ts → aws-image-builder/deprecated/linux-components.d.ts} +4 -2
- package/lib/providers/image-builders/aws-image-builder/deprecated/linux-components.js +180 -0
- package/lib/providers/image-builders/{windows-components.d.ts → aws-image-builder/deprecated/windows-components.d.ts} +4 -2
- package/lib/providers/image-builders/aws-image-builder/deprecated/windows-components.js +142 -0
- package/lib/providers/image-builders/aws-image-builder/index.d.ts +5 -0
- package/lib/providers/image-builders/aws-image-builder/index.js +22 -0
- package/lib/providers/image-builders/codebuild-deprecated.d.ts +195 -0
- package/lib/providers/image-builders/codebuild-deprecated.js +373 -0
- package/lib/providers/image-builders/codebuild.d.ts +26 -157
- package/lib/providers/image-builders/codebuild.js +119 -211
- package/lib/providers/image-builders/common.d.ts +164 -107
- package/lib/providers/image-builders/common.js +30 -272
- package/lib/providers/image-builders/components.d.ts +114 -0
- package/lib/providers/image-builders/components.js +534 -0
- package/lib/providers/image-builders/index.d.ts +6 -4
- package/lib/providers/image-builders/index.js +13 -7
- package/lib/providers/image-builders/static.d.ts +4 -3
- package/lib/providers/image-builders/static.js +10 -10
- package/lib/providers/index.js +7 -3
- package/lib/providers/lambda.d.ts +25 -6
- package/lib/providers/lambda.js +50 -13
- package/lib/runner.d.ts +3 -5
- package/lib/runner.js +3 -3
- package/lib/secrets.js +3 -3
- package/package.json +12 -16
- package/lib/providers/image-builders/ami.js +0 -280
- package/lib/providers/image-builders/container.js +0 -247
- package/lib/providers/image-builders/linux-components.js +0 -177
- package/lib/providers/image-builders/windows-components.js +0 -139
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LinuxUbuntuComponents = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const common_1 = require("../../../common");
|
|
8
|
+
const index_1 = require("../index");
|
|
9
|
+
/**
|
|
10
|
+
* Components for Ubuntu Linux that can be used with AWS Image Builder based builders. These cannot be used by {@link CodeBuildImageBuilder}.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated Use `RunnerImageComponent` instead.
|
|
13
|
+
*/
|
|
14
|
+
class LinuxUbuntuComponents {
|
|
15
|
+
static requiredPackages(scope, id, architecture) {
|
|
16
|
+
let archUrl;
|
|
17
|
+
if (architecture.is(common_1.Architecture.X86_64)) {
|
|
18
|
+
archUrl = 'amd64';
|
|
19
|
+
}
|
|
20
|
+
else if (architecture.is(common_1.Architecture.ARM64)) {
|
|
21
|
+
archUrl = 'arm64';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw new Error(`Unsupported architecture for required packages: ${architecture.name}`);
|
|
25
|
+
}
|
|
26
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
27
|
+
platform: 'Linux',
|
|
28
|
+
displayName: 'Required packages',
|
|
29
|
+
description: 'Install packages required for GitHub Runner and upgrade all packages',
|
|
30
|
+
commands: [
|
|
31
|
+
'set -ex',
|
|
32
|
+
'apt-get update',
|
|
33
|
+
'DEBIAN_FRONTEND=noninteractive apt-get upgrade -y',
|
|
34
|
+
'DEBIAN_FRONTEND=noninteractive apt-get install -y curl sudo jq bash zip unzip iptables software-properties-common ca-certificates',
|
|
35
|
+
`curl -sfLo /tmp/amazon-cloudwatch-agent.deb https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/${archUrl}/latest/amazon-cloudwatch-agent.deb`,
|
|
36
|
+
'dpkg -i -E /tmp/amazon-cloudwatch-agent.deb',
|
|
37
|
+
'rm /tmp/amazon-cloudwatch-agent.deb',
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
static runnerUser(scope, id, _architecture) {
|
|
42
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
43
|
+
platform: 'Linux',
|
|
44
|
+
displayName: 'GitHub Runner user',
|
|
45
|
+
description: 'Install latest version of AWS CLI',
|
|
46
|
+
commands: [
|
|
47
|
+
'set -ex',
|
|
48
|
+
'addgroup runner',
|
|
49
|
+
'adduser --system --disabled-password --home /home/runner --ingroup runner runner',
|
|
50
|
+
'usermod -aG sudo runner',
|
|
51
|
+
'echo "%sudo ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/runner',
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
static awsCli(scope, id, architecture) {
|
|
56
|
+
let archUrl;
|
|
57
|
+
if (architecture.is(common_1.Architecture.X86_64)) {
|
|
58
|
+
archUrl = 'x86_64';
|
|
59
|
+
}
|
|
60
|
+
else if (architecture.is(common_1.Architecture.ARM64)) {
|
|
61
|
+
archUrl = 'aarch64';
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new Error(`Unsupported architecture for awscli: ${architecture.name}`);
|
|
65
|
+
}
|
|
66
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
67
|
+
platform: 'Linux',
|
|
68
|
+
displayName: 'AWS CLI',
|
|
69
|
+
description: 'Install latest version of AWS CLI',
|
|
70
|
+
commands: [
|
|
71
|
+
'set -ex',
|
|
72
|
+
`curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-${archUrl}.zip" -o awscliv2.zip`,
|
|
73
|
+
'unzip -q awscliv2.zip',
|
|
74
|
+
'./aws/install',
|
|
75
|
+
'rm -rf awscliv2.zip aws',
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
static githubCli(scope, id, _architecture) {
|
|
80
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
81
|
+
platform: 'Linux',
|
|
82
|
+
displayName: 'GitHub CLI',
|
|
83
|
+
description: 'Install latest version of gh',
|
|
84
|
+
commands: [
|
|
85
|
+
'set -ex',
|
|
86
|
+
'curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg',
|
|
87
|
+
'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] ' +
|
|
88
|
+
' https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null',
|
|
89
|
+
'apt-get update',
|
|
90
|
+
'DEBIAN_FRONTEND=noninteractive apt-get install -y gh',
|
|
91
|
+
],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
static git(scope, id, _architecture) {
|
|
95
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
96
|
+
platform: 'Linux',
|
|
97
|
+
displayName: 'Git',
|
|
98
|
+
description: 'Install latest version of git',
|
|
99
|
+
commands: [
|
|
100
|
+
'set -ex',
|
|
101
|
+
'add-apt-repository ppa:git-core/ppa',
|
|
102
|
+
'apt-get update',
|
|
103
|
+
'DEBIAN_FRONTEND=noninteractive apt-get install -y git',
|
|
104
|
+
],
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
static githubRunner(scope, id, runnerVersion, architecture) {
|
|
108
|
+
let versionCommand;
|
|
109
|
+
if (runnerVersion.is(common_1.RunnerVersion.latest())) {
|
|
110
|
+
versionCommand = 'RUNNER_VERSION=`curl -w "%{redirect_url}" -fsS https://github.com/actions/runner/releases/latest | grep -oE "[^/v]+$"`';
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
versionCommand = `RUNNER_VERSION='${runnerVersion.version}'`;
|
|
114
|
+
}
|
|
115
|
+
let archUrl;
|
|
116
|
+
if (architecture.is(common_1.Architecture.X86_64)) {
|
|
117
|
+
archUrl = 'x64';
|
|
118
|
+
}
|
|
119
|
+
else if (architecture.is(common_1.Architecture.ARM64)) {
|
|
120
|
+
archUrl = 'arm64';
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
throw new Error(`Unsupported architecture for GitHub Runner: ${architecture.name}`);
|
|
124
|
+
}
|
|
125
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
126
|
+
platform: 'Linux',
|
|
127
|
+
displayName: 'GitHub Actions Runner',
|
|
128
|
+
description: 'Install latest version of GitHub Actions Runner',
|
|
129
|
+
commands: [
|
|
130
|
+
'set -ex',
|
|
131
|
+
versionCommand,
|
|
132
|
+
`curl -fsSLO "https://github.com/actions/runner/releases/download/v\${RUNNER_VERSION}/actions-runner-linux-${archUrl}-\${RUNNER_VERSION}.tar.gz"`,
|
|
133
|
+
`tar xzf "actions-runner-linux-${archUrl}-\${RUNNER_VERSION}.tar.gz"`,
|
|
134
|
+
`rm actions-runner-linux-${archUrl}-\${RUNNER_VERSION}.tar.gz`,
|
|
135
|
+
'./bin/installdependencies.sh',
|
|
136
|
+
`echo -n ${runnerVersion.version} > RUNNER_VERSION`,
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
static docker(scope, id, _architecture) {
|
|
141
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
142
|
+
platform: 'Linux',
|
|
143
|
+
displayName: 'Docker',
|
|
144
|
+
description: 'Install latest version of Docker',
|
|
145
|
+
commands: [
|
|
146
|
+
'set -ex',
|
|
147
|
+
'curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg',
|
|
148
|
+
'echo ' +
|
|
149
|
+
' "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu ' +
|
|
150
|
+
' $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null',
|
|
151
|
+
'apt-get update',
|
|
152
|
+
'DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin',
|
|
153
|
+
'usermod -aG docker runner',
|
|
154
|
+
'ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose',
|
|
155
|
+
],
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
static extraCertificates(scope, id, path) {
|
|
159
|
+
return new index_1.ImageBuilderComponent(scope, id, {
|
|
160
|
+
platform: 'Linux',
|
|
161
|
+
displayName: 'Extra certificates',
|
|
162
|
+
description: 'Install self-signed certificates to provide access to GitHub Enterprise Server',
|
|
163
|
+
commands: [
|
|
164
|
+
'set -ex',
|
|
165
|
+
'cp certs/certs.pem /usr/local/share/ca-certificates/github-enterprise-server.crt',
|
|
166
|
+
'update-ca-certificates',
|
|
167
|
+
],
|
|
168
|
+
assets: [
|
|
169
|
+
{
|
|
170
|
+
path: 'certs',
|
|
171
|
+
asset: new aws_cdk_lib_1.aws_s3_assets.Asset(scope, `${id} Asset`, { path }),
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
178
|
+
LinuxUbuntuComponents[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.LinuxUbuntuComponents", version: "0.9.0" };
|
|
179
|
+
exports.LinuxUbuntuComponents = LinuxUbuntuComponents;
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXgtY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvZGVwcmVjYXRlZC9saW51eC1jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXlEO0FBRXpELDRDQUE4RDtBQUM5RCxvQ0FBaUQ7QUFFakQ7Ozs7R0FJRztBQUNILE1BQWEscUJBQXFCO0lBQ3pCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUEwQjtRQUNyRixJQUFJLE9BQU8sQ0FBQztRQUNaLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDbkI7YUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQ25CO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUVELE9BQU8sSUFBSSw2QkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzFDLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFdBQVcsRUFBRSxtQkFBbUI7WUFDaEMsV0FBVyxFQUFFLHNFQUFzRTtZQUNuRixRQUFRLEVBQUU7Z0JBQ1IsU0FBUztnQkFDVCxnQkFBZ0I7Z0JBQ2hCLG1EQUFtRDtnQkFDbkQsbUlBQW1JO2dCQUNuSSxzR0FBc0csT0FBTyxxQ0FBcUM7Z0JBQ2xKLDZDQUE2QztnQkFDN0MscUNBQXFDO2FBQ3RDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUs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O2dCQUNsRix3QkFBd0I7YUFDekI7WUFDRCxNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsSUFBSSxFQUFFLE9BQU87b0JBQ2IsS0FBSyxFQUFFLElBQUksMkJBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDM0Q7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7QUFyS1Usc0RBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3MzX2Fzc2V0cyBhcyBzM19hc3NldHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgUnVubmVyVmVyc2lvbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJbWFnZUJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuLi9pbmRleCc7XG5cbi8qKlxuICogQ29tcG9uZW50cyBmb3IgVWJ1bnR1IExpbnV4IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBBV1MgSW1hZ2UgQnVpbGRlciBiYXNlZCBidWlsZGVycy4gVGhlc2UgY2Fubm90IGJlIHVzZWQgYnkge0BsaW5rIENvZGVCdWlsZEltYWdlQnVpbGRlcn0uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBSdW5uZXJJbWFnZUNvbXBvbmVudGAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIExpbnV4VWJ1bnR1Q29tcG9uZW50cyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVxdWlyZWRQYWNrYWdlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZSkge1xuICAgIGxldCBhcmNoVXJsO1xuICAgIGlmIChhcmNoaXRlY3R1cmUuaXMoQXJjaGl0ZWN0dXJlLlg4Nl82NCkpIHtcbiAgICAgIGFyY2hVcmwgPSAnYW1kNjQnO1xuICAgIH0gZWxzZSBpZiAoYXJjaGl0ZWN0dXJlLmlzKEFyY2hpdGVjdHVyZS5BUk02NCkpIHtcbiAgICAgIGFyY2hVcmwgPSAnYXJtNjQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBmb3IgcmVxdWlyZWQgcGFja2FnZXM6ICR7YXJjaGl0ZWN0dXJlLm5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbWFnZUJ1aWxkZXJDb21wb25lbnQoc2NvcGUsIGlkLCB7XG4gICAgICBwbGF0Zm9ybTogJ0xpbnV4JyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnUmVxdWlyZWQgcGFja2FnZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnN0YWxsIHBhY2thZ2VzIHJlcXVpcmVkIGZvciBHaXRIdWIgUnVubmVyIGFuZCB1cGdyYWRlIGFsbCBwYWNrYWdlcycsXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICAnc2V0IC1leCcsXG4gICAgICAgICdhcHQtZ2V0IHVwZGF0ZScsXG4gICAgICAgICdERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCB1cGdyYWRlIC15JyxcbiAgICAgICAgJ0RFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgY3VybCBzdWRvIGpxIGJhc2ggemlwIHVuemlwIGlwdGFibGVzIHNvZnR3YXJlLXByb3BlcnRpZXMtY29tbW9uIGNhLWNlcnRpZmljYXRlcycsXG4gICAgICAgIGBjdXJsIC1zZkxvIC90bXAvYW1hem9uLWNsb3Vkd2F0Y2gtYWdlbnQuZGViIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9hbWF6b25jbG91ZHdhdGNoLWFnZW50L3VidW50dS8ke2FyY2hVcmx9L2xhdGVzdC9hbWF6b24tY2xvdWR3YXRjaC1hZ2VudC5kZWJgLFxuICAgICAgICAnZHBrZyAtaSAtRSAvdG1wL2FtYXpvbi1jbG91ZHdhdGNoLWFnZW50LmRlYicsXG4gICAgICAgICdybSAvdG1wL2FtYXpvbi1jbG91ZHdhdGNoLWFnZW50LmRlYicsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBydW5uZXJVc2VyKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIF9hcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZSkge1xuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdMaW51eCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ0dpdEh1YiBSdW5uZXIgdXNlcicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luc3RhbGwgbGF0ZXN0IHZlcnNpb24gb2YgQVdTIENMSScsXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICAnc2V0IC1leCcsXG4gICAgICAgICdhZGRncm91cCBydW5uZXInLFxuICAgICAgICAnYWRkdXNlciAtLXN5c3RlbSAtLWRpc2FibGVkLXBhc3N3b3JkIC0taG9tZSAvaG9tZS9ydW5uZXIgLS1pbmdyb3VwIHJ1bm5lciBydW5uZXInLFxuICAgICAgICAndXNlcm1vZCAtYUcgc3VkbyBydW5uZXInLFxuICAgICAgICAnZWNobyBcIiVzdWRvICAgQUxMPShBTEw6QUxMKSBOT1BBU1NXRDogQUxMXCIgPiAvZXRjL3N1ZG9lcnMuZC9ydW5uZXInLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXdzQ2xpKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlKSB7XG4gICAgbGV0IGFyY2hVcmw7XG4gICAgaWYgKGFyY2hpdGVjdHVyZS5pcyhBcmNoaXRlY3R1cmUuWDg2XzY0KSkge1xuICAgICAgYXJjaFVybCA9ICd4ODZfNjQnO1xuICAgIH0gZWxzZSBpZiAoYXJjaGl0ZWN0dXJlLmlzKEFyY2hpdGVjdHVyZS5BUk02NCkpIHtcbiAgICAgIGFyY2hVcmwgPSAnYWFyY2g2NCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIGZvciBhd3NjbGk6ICR7YXJjaGl0ZWN0dXJlLm5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbWFnZUJ1aWxkZXJDb21wb25lbnQoc2NvcGUsIGlkLCB7XG4gICAgICBwbGF0Zm9ybTogJ0xpbnV4JyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnQVdTIENMSScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luc3RhbGwgbGF0ZXN0IHZlcnNpb24gb2YgQVdTIENMSScsXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICAnc2V0IC1leCcsXG4gICAgICAgIGBjdXJsIC1mc1NMIFwiaHR0cHM6Ly9hd3NjbGkuYW1hem9uYXdzLmNvbS9hd3NjbGktZXhlLWxpbnV4LSR7YXJjaFVybH0uemlwXCIgLW8gYXdzY2xpdjIuemlwYCxcbiAgICAgICAgJ3VuemlwIC1xIGF3c2NsaXYyLnppcCcsXG4gICAgICAgICcuL2F3cy9pbnN0YWxsJyxcbiAgICAgICAgJ3JtIC1yZiBhd3NjbGl2Mi56aXAgYXdzJyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdpdGh1YkNsaShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBfYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUpIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQnVpbGRlckNvbXBvbmVudChzY29wZSwgaWQsIHtcbiAgICAgIHBsYXRmb3JtOiAnTGludXgnLFxuICAgICAgZGlzcGxheU5hbWU6ICdHaXRIdWIgQ0xJJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBsYXRlc3QgdmVyc2lvbiBvZiBnaCcsXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICAnc2V0IC1leCcsXG4gICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vcGFja2FnZXMvZ2l0aHViY2xpLWFyY2hpdmUta2V5cmluZy5ncGcgfCBzdWRvIGRkIG9mPS91c3Ivc2hhcmUva2V5cmluZ3MvZ2l0aHViY2xpLWFyY2hpdmUta2V5cmluZy5ncGcnLFxuICAgICAgICAnZWNobyBcImRlYiBbYXJjaD0kKGRwa2cgLS1wcmludC1hcmNoaXRlY3R1cmUpIHNpZ25lZC1ieT0vdXNyL3NoYXJlL2tleXJpbmdzL2dpdGh1YmNsaS1hcmNoaXZlLWtleXJpbmcuZ3BnXSAnICtcbiAgICAgICAgJyAgaHR0cHM6Ly9jbGkuZ2l0aHViLmNvbS9wYWNrYWdlcyBzdGFibGUgbWFpblwiIHwgc3VkbyB0ZWUgL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZ2l0aHViLWNsaS5saXN0ID4gL2Rldi9udWxsJyxcbiAgICAgICAgJ2FwdC1nZXQgdXBkYXRlJyxcbiAgICAgICAgJ0RFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgZ2gnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2l0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIF9hcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZSkge1xuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdMaW51eCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ0dpdCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luc3RhbGwgbGF0ZXN0IHZlcnNpb24gb2YgZ2l0JyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICdzZXQgLWV4JyxcbiAgICAgICAgJ2FkZC1hcHQtcmVwb3NpdG9yeSBwcGE6Z2l0LWNvcmUvcHBhJyxcbiAgICAgICAgJ2FwdC1nZXQgdXBkYXRlJyxcbiAgICAgICAgJ0RFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgZ2l0JyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdpdGh1YlJ1bm5lcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBydW5uZXJWZXJzaW9uOiBSdW5uZXJWZXJzaW9uLCBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZSkge1xuICAgIGxldCB2ZXJzaW9uQ29tbWFuZDogc3RyaW5nO1xuICAgIGlmIChydW5uZXJWZXJzaW9uLmlzKFJ1bm5lclZlcnNpb24ubGF0ZXN0KCkpKSB7XG4gICAgICB2ZXJzaW9uQ29tbWFuZCA9ICdSVU5ORVJfVkVSU0lPTj1gY3VybCAtdyBcIiV7cmVkaXJlY3RfdXJsfVwiIC1mc1MgaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL3JlbGVhc2VzL2xhdGVzdCB8IGdyZXAgLW9FIFwiW14vdl0rJFwiYCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZlcnNpb25Db21tYW5kID0gYFJVTk5FUl9WRVJTSU9OPScke3J1bm5lclZlcnNpb24udmVyc2lvbn0nYDtcbiAgICB9XG5cbiAgICBsZXQgYXJjaFVybDtcbiAgICBpZiAoYXJjaGl0ZWN0dXJlLmlzKEFyY2hpdGVjdHVyZS5YODZfNjQpKSB7XG4gICAgICBhcmNoVXJsID0gJ3g2NCc7XG4gICAgfSBlbHNlIGlmIChhcmNoaXRlY3R1cmUuaXMoQXJjaGl0ZWN0dXJlLkFSTTY0KSkge1xuICAgICAgYXJjaFVybCA9ICdhcm02NCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIGZvciBHaXRIdWIgUnVubmVyOiAke2FyY2hpdGVjdHVyZS5uYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdMaW51eCcsXG4gICAgICBkaXNwbGF5TmFtZTogJ0dpdEh1YiBBY3Rpb25zIFJ1bm5lcicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luc3RhbGwgbGF0ZXN0IHZlcnNpb24gb2YgR2l0SHViIEFjdGlvbnMgUnVubmVyJyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICdzZXQgLWV4JyxcbiAgICAgICAgdmVyc2lvbkNvbW1hbmQsXG4gICAgICAgIGBjdXJsIC1mc1NMTyBcImh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL3J1bm5lci9yZWxlYXNlcy9kb3dubG9hZC92XFwke1JVTk5FUl9WRVJTSU9OfS9hY3Rpb25zLXJ1bm5lci1saW51eC0ke2FyY2hVcmx9LVxcJHtSVU5ORVJfVkVSU0lPTn0udGFyLmd6XCJgLFxuICAgICAgICBgdGFyIHh6ZiBcImFjdGlvbnMtcnVubmVyLWxpbnV4LSR7YXJjaFVybH0tXFwke1JVTk5FUl9WRVJTSU9OfS50YXIuZ3pcImAsXG4gICAgICAgIGBybSBhY3Rpb25zLXJ1bm5lci1saW51eC0ke2FyY2hVcmx9LVxcJHtSVU5ORVJfVkVSU0lPTn0udGFyLmd6YCxcbiAgICAgICAgJy4vYmluL2luc3RhbGxkZXBlbmRlbmNpZXMuc2gnLFxuICAgICAgICBgZWNobyAtbiAke3J1bm5lclZlcnNpb24udmVyc2lvbn0gPiBSVU5ORVJfVkVSU0lPTmAsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkb2NrZXIoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgX2FyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlKSB7XG4gICAgcmV0dXJuIG5ldyBJbWFnZUJ1aWxkZXJDb21wb25lbnQoc2NvcGUsIGlkLCB7XG4gICAgICBwbGF0Zm9ybTogJ0xpbnV4JyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnRG9ja2VyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBsYXRlc3QgdmVyc2lvbiBvZiBEb2NrZXInLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJ3NldCAtZXgnLFxuICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbGludXgvdWJ1bnR1L2dwZyB8IHN1ZG8gZ3BnIC0tZGVhcm1vciAtbyAvdXNyL3NoYXJlL2tleXJpbmdzL2RvY2tlci5ncGcnLFxuICAgICAgICAnZWNobyAnICtcbiAgICAgICAgJyAgXCJkZWIgW2FyY2g9JChkcGtnIC0tcHJpbnQtYXJjaGl0ZWN0dXJlKSBzaWduZWQtYnk9L3Vzci9zaGFyZS9rZXlyaW5ncy9kb2NrZXIuZ3BnXSBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbGludXgvdWJ1bnR1ICcgK1xuICAgICAgICAnICAkKGxzYl9yZWxlYXNlIC1jcykgc3RhYmxlXCIgfCBzdWRvIHRlZSAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb2NrZXIubGlzdCA+IC9kZXYvbnVsbCcsXG4gICAgICAgICdhcHQtZ2V0IHVwZGF0ZScsXG4gICAgICAgICdERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IGRvY2tlci1jZSBkb2NrZXItY2UtY2xpIGNvbnRhaW5lcmQuaW8gZG9ja2VyLWNvbXBvc2UtcGx1Z2luJyxcbiAgICAgICAgJ3VzZXJtb2QgLWFHIGRvY2tlciBydW5uZXInLFxuICAgICAgICAnbG4gLXMgL3Vzci9saWJleGVjL2RvY2tlci9jbGktcGx1Z2lucy9kb2NrZXItY29tcG9zZSAvdXNyL2Jpbi9kb2NrZXItY29tcG9zZScsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBleHRyYUNlcnRpZmljYXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQnVpbGRlckNvbXBvbmVudChzY29wZSwgaWQsIHtcbiAgICAgIHBsYXRmb3JtOiAnTGludXgnLFxuICAgICAgZGlzcGxheU5hbWU6ICdFeHRyYSBjZXJ0aWZpY2F0ZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnN0YWxsIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyB0byBwcm92aWRlIGFjY2VzcyB0byBHaXRIdWIgRW50ZXJwcmlzZSBTZXJ2ZXInLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJ3NldCAtZXgnLFxuICAgICAgICAnY3AgY2VydHMvY2VydHMucGVtIC91c3IvbG9jYWwvc2hhcmUvY2EtY2VydGlmaWNhdGVzL2dpdGh1Yi1lbnRlcnByaXNlLXNlcnZlci5jcnQnLFxuICAgICAgICAndXBkYXRlLWNhLWNlcnRpZmljYXRlcycsXG4gICAgICBdLFxuICAgICAgYXNzZXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnY2VydHMnLFxuICAgICAgICAgIGFzc2V0OiBuZXcgczNfYXNzZXRzLkFzc2V0KHNjb3BlLCBgJHtpZH0gQXNzZXRgLCB7IHBhdGggfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Construct } from 'constructs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { RunnerVersion } from '../../../common';
|
|
3
|
+
import { ImageBuilderComponent } from '../builder';
|
|
4
4
|
/**
|
|
5
5
|
* Components for Windows that can be used with AWS Image Builder based builders. These cannot be used by {@link CodeBuildImageBuilder}.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Use `RunnerImageComponent` instead.
|
|
6
8
|
*/
|
|
7
9
|
export declare class WindowsComponents {
|
|
8
10
|
static cloudwatchAgent(scope: Construct, id: string): ImageBuilderComponent;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.WindowsComponents = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const common_1 = require("../../../common");
|
|
8
|
+
const builder_1 = require("../builder");
|
|
9
|
+
/**
|
|
10
|
+
* Components for Windows that can be used with AWS Image Builder based builders. These cannot be used by {@link CodeBuildImageBuilder}.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated Use `RunnerImageComponent` instead.
|
|
13
|
+
*/
|
|
14
|
+
class WindowsComponents {
|
|
15
|
+
static cloudwatchAgent(scope, id) {
|
|
16
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
17
|
+
platform: 'Windows',
|
|
18
|
+
displayName: 'CloudWatch agent',
|
|
19
|
+
description: 'Install latest version of CloudWatch agent for sending logs to CloudWatch',
|
|
20
|
+
commands: [
|
|
21
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
22
|
+
'Start-Process msiexec.exe -Wait -ArgumentList \'/i https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi /qn\'',
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static awsCli(scope, id) {
|
|
27
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
28
|
+
platform: 'Windows',
|
|
29
|
+
displayName: 'AWS CLI',
|
|
30
|
+
description: 'Install latest version of AWS CLI',
|
|
31
|
+
commands: [
|
|
32
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
33
|
+
'Start-Process msiexec.exe -Wait -ArgumentList \'/i https://awscli.amazonaws.com/AWSCLIV2.msi /qn\'',
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
static githubCli(scope, id) {
|
|
38
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
39
|
+
platform: 'Windows',
|
|
40
|
+
displayName: 'GitHub CLI',
|
|
41
|
+
description: 'Install latest version of gh',
|
|
42
|
+
commands: [
|
|
43
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
44
|
+
'$ProgressPreference = \'SilentlyContinue\'',
|
|
45
|
+
'cmd /c curl -w "%{redirect_url}" -fsS https://github.com/cli/cli/releases/latest > $Env:TEMP\\latest-gh',
|
|
46
|
+
'$LatestUrl = Get-Content $Env:TEMP\\latest-gh',
|
|
47
|
+
'$GH_VERSION = ($LatestUrl -Split \'/\')[-1].substring(1)',
|
|
48
|
+
'$ProgressPreference = \'SilentlyContinue\'',
|
|
49
|
+
'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_windows_amd64.msi" -OutFile gh.msi',
|
|
50
|
+
'Start-Process msiexec.exe -Wait -ArgumentList \'/i gh.msi /qn\'',
|
|
51
|
+
'del gh.msi',
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
static git(scope, id) {
|
|
56
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
57
|
+
platform: 'Windows',
|
|
58
|
+
displayName: 'Git',
|
|
59
|
+
description: 'Install latest version of git',
|
|
60
|
+
commands: [
|
|
61
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
62
|
+
'$ProgressPreference = \'SilentlyContinue\'',
|
|
63
|
+
'cmd /c curl -w "%{redirect_url}" -fsS https://github.com/git-for-windows/git/releases/latest > $Env:TEMP\\latest-git',
|
|
64
|
+
'$LatestUrl = Get-Content $Env:TEMP\\latest-git',
|
|
65
|
+
'$GIT_VERSION = ($LatestUrl -Split \'/\')[-1].substring(1)',
|
|
66
|
+
'$GIT_VERSION_SHORT = ($GIT_VERSION -Split \'.windows.\')[0]',
|
|
67
|
+
'$GIT_REVISION = ($GIT_VERSION -Split \'.windows.\')[1]',
|
|
68
|
+
'If ($GIT_REVISION -gt 1) {$GIT_VERSION_SHORT = "$GIT_VERSION_SHORT.$GIT_REVISION"}',
|
|
69
|
+
'Invoke-WebRequest -UseBasicParsing -Uri https://github.com/git-for-windows/git/releases/download/v${GIT_VERSION}/Git-${GIT_VERSION_SHORT}-64-bit.exe -OutFile git-setup.exe',
|
|
70
|
+
'Start-Process git-setup.exe -Wait -ArgumentList \'/VERYSILENT\'',
|
|
71
|
+
'del git-setup.exe',
|
|
72
|
+
],
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
static githubRunner(scope, id, runnerVersion) {
|
|
76
|
+
let runnerCommands;
|
|
77
|
+
if (runnerVersion.is(common_1.RunnerVersion.latest())) {
|
|
78
|
+
runnerCommands = [
|
|
79
|
+
'cmd /c curl -w "%{redirect_url}" -fsS https://github.com/actions/runner/releases/latest > $Env:TEMP\\latest-gha',
|
|
80
|
+
'$LatestUrl = Get-Content $Env:TEMP\\latest-gha',
|
|
81
|
+
'$RUNNER_VERSION = ($LatestUrl -Split \'/\')[-1].substring(1)',
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
runnerCommands = [`$RUNNER_VERSION = '${runnerVersion.version}'`];
|
|
86
|
+
}
|
|
87
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
88
|
+
platform: 'Windows',
|
|
89
|
+
displayName: 'GitHub Actions Runner',
|
|
90
|
+
description: 'Install latest version of GitHub Actions Runner',
|
|
91
|
+
commands: [
|
|
92
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
93
|
+
'$ProgressPreference = \'SilentlyContinue\'',
|
|
94
|
+
].concat(runnerCommands, [
|
|
95
|
+
'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-win-x64-${RUNNER_VERSION}.zip" -OutFile actions.zip',
|
|
96
|
+
'Expand-Archive actions.zip -DestinationPath C:\\actions',
|
|
97
|
+
'del actions.zip',
|
|
98
|
+
`echo ${runnerVersion.version} | Out-File -Encoding ASCII -NoNewline C:\\actions\\RUNNER_VERSION`,
|
|
99
|
+
]),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
static docker(scope, id) {
|
|
103
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
104
|
+
platform: 'Windows',
|
|
105
|
+
displayName: 'Docker',
|
|
106
|
+
description: 'Install latest version of Docker',
|
|
107
|
+
commands: [
|
|
108
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
109
|
+
'$ProgressPreference = \'SilentlyContinue\'',
|
|
110
|
+
'Invoke-WebRequest -UseBasicParsing -Uri https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile docker-setup.exe',
|
|
111
|
+
'Start-Process \'docker-setup.exe\' -Wait -ArgumentList \'/install --quiet --accept-license\'',
|
|
112
|
+
'del docker-setup.exe',
|
|
113
|
+
'cmd /c curl -w "%{redirect_url}" -fsS https://github.com/docker/compose/releases/latest > $Env:TEMP\\latest-docker-compose',
|
|
114
|
+
'$LatestUrl = Get-Content $Env:TEMP\\latest-docker-compose',
|
|
115
|
+
'$LatestDockerCompose = ($LatestUrl -Split \'/\')[-1]',
|
|
116
|
+
'Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/docker/compose/releases/download/${LatestDockerCompose}/docker-compose-Windows-x86_64.exe" -OutFile $Env:ProgramFiles\\Docker\\docker-compose.exe',
|
|
117
|
+
'copy $Env:ProgramFiles\\Docker\\docker-compose.exe $Env:ProgramFiles\\Docker\\cli-plugins\\docker-compose.exe',
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
static extraCertificates(scope, id, path) {
|
|
122
|
+
return new builder_1.ImageBuilderComponent(scope, id, {
|
|
123
|
+
platform: 'Windows',
|
|
124
|
+
displayName: 'Extra certificates',
|
|
125
|
+
description: 'Install self-signed certificates to provide access to GitHub Enterprise Server',
|
|
126
|
+
commands: [
|
|
127
|
+
'$ErrorActionPreference = \'Stop\'',
|
|
128
|
+
'Import-Certificate -FilePath certs\\certs.pem -CertStoreLocation Cert:\\LocalMachine\\Root',
|
|
129
|
+
],
|
|
130
|
+
assets: [
|
|
131
|
+
{
|
|
132
|
+
path: 'certs',
|
|
133
|
+
asset: new aws_cdk_lib_1.aws_s3_assets.Asset(scope, `${id} Asset`, { path }),
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
140
|
+
WindowsComponents[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.WindowsComponents", version: "0.9.0" };
|
|
141
|
+
exports.WindowsComponents = WindowsComponents;
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci9kZXByZWNhdGVkL3dpbmRvd3MtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUF5RDtBQUV6RCw0Q0FBZ0Q7QUFDaEQsd0NBQW1EO0FBRW5EOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFpQjtJQUNyQixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWdCLEVBQUUsRUFBVTtRQUN4RCxPQUFPLElBQUksK0JBQXFCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMxQyxRQUFRLEVBQUUsU0FBUztZQUNuQixXQUFXLEVBQUUsa0JBQWtCO1lBQy9CLFdBQVcsRUFBRSwyRUFBMkU7WUFDeEYsUUFBUSxFQUFFO2dCQUNSLG1DQUFtQztnQkFDbkMsMkpBQTJKO2FBQzVKO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQy9DLE9BQU8sSUFBSSwrQkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzFDLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLFdBQVcsRUFBRSxtQ0FBbUM7WUFDaEQsUUFBUSxFQUFFO2dCQUNSLG1DQUFtQztnQkFDbkMsb0dBQW9HO2FBQ3JHO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQ2xELE9BQU8sSUFBSSwrQkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzFDLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7WUFDM0MsUUFBUSxFQUFFO2dCQUNS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TCxDQUFDOzs7O0FBaklVLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19zM19hc3NldHMgYXMgczNfYXNzZXRzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSdW5uZXJWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEltYWdlQnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4uL2J1aWxkZXInO1xuXG4vKipcbiAqIENvbXBvbmVudHMgZm9yIFdpbmRvd3MgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIEFXUyBJbWFnZSBCdWlsZGVyIGJhc2VkIGJ1aWxkZXJzLiBUaGVzZSBjYW5ub3QgYmUgdXNlZCBieSB7QGxpbmsgQ29kZUJ1aWxkSW1hZ2VCdWlsZGVyfS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYFJ1bm5lckltYWdlQ29tcG9uZW50YCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgV2luZG93c0NvbXBvbmVudHMge1xuICBwdWJsaWMgc3RhdGljIGNsb3Vkd2F0Y2hBZ2VudChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBJbWFnZUJ1aWxkZXJDb21wb25lbnQoc2NvcGUsIGlkLCB7XG4gICAgICBwbGF0Zm9ybTogJ1dpbmRvd3MnLFxuICAgICAgZGlzcGxheU5hbWU6ICdDbG91ZFdhdGNoIGFnZW50JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBsYXRlc3QgdmVyc2lvbiBvZiBDbG91ZFdhdGNoIGFnZW50IGZvciBzZW5kaW5nIGxvZ3MgdG8gQ2xvdWRXYXRjaCcsXG4gICAgICBjb21tYW5kczogW1xuICAgICAgICAnJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9IFxcJ1N0b3BcXCcnLFxuICAgICAgICAnU3RhcnQtUHJvY2VzcyBtc2lleGVjLmV4ZSAtV2FpdCAtQXJndW1lbnRMaXN0IFxcJy9pIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9hbWF6b25jbG91ZHdhdGNoLWFnZW50L3dpbmRvd3MvYW1kNjQvbGF0ZXN0L2FtYXpvbi1jbG91ZHdhdGNoLWFnZW50Lm1zaSAvcW5cXCcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXdzQ2xpKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQnVpbGRlckNvbXBvbmVudChzY29wZSwgaWQsIHtcbiAgICAgIHBsYXRmb3JtOiAnV2luZG93cycsXG4gICAgICBkaXNwbGF5TmFtZTogJ0FXUyBDTEknLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnN0YWxsIGxhdGVzdCB2ZXJzaW9uIG9mIEFXUyBDTEknLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJyRFcnJvckFjdGlvblByZWZlcmVuY2UgPSBcXCdTdG9wXFwnJyxcbiAgICAgICAgJ1N0YXJ0LVByb2Nlc3MgbXNpZXhlYy5leGUgLVdhaXQgLUFyZ3VtZW50TGlzdCBcXCcvaSBodHRwczovL2F3c2NsaS5hbWF6b25hd3MuY29tL0FXU0NMSVYyLm1zaSAvcW5cXCcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2l0aHViQ2xpKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEltYWdlQnVpbGRlckNvbXBvbmVudChzY29wZSwgaWQsIHtcbiAgICAgIHBsYXRmb3JtOiAnV2luZG93cycsXG4gICAgICBkaXNwbGF5TmFtZTogJ0dpdEh1YiBDTEknLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnN0YWxsIGxhdGVzdCB2ZXJzaW9uIG9mIGdoJyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICckRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gXFwnU3RvcFxcJycsXG4gICAgICAgICckUHJvZ3Jlc3NQcmVmZXJlbmNlID0gXFwnU2lsZW50bHlDb250aW51ZVxcJycsXG4gICAgICAgICdjbWQgL2MgY3VybCAtdyBcIiV7cmVkaXJlY3RfdXJsfVwiIC1mc1MgaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvcmVsZWFzZXMvbGF0ZXN0ID4gJEVudjpURU1QXFxcXGxhdGVzdC1naCcsXG4gICAgICAgICckTGF0ZXN0VXJsID0gR2V0LUNvbnRlbnQgJEVudjpURU1QXFxcXGxhdGVzdC1naCcsXG4gICAgICAgICckR0hfVkVSU0lPTiA9ICgkTGF0ZXN0VXJsIC1TcGxpdCBcXCcvXFwnKVstMV0uc3Vic3RyaW5nKDEpJyxcbiAgICAgICAgJyRQcm9ncmVzc1ByZWZlcmVuY2UgPSBcXCdTaWxlbnRseUNvbnRpbnVlXFwnJyxcbiAgICAgICAgJ0ludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSBcImh0dHBzOi8vZ2l0aHViLmNvbS9jbGkvY2xpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke0dIX1ZFUlNJT059L2doXyR7R0hfVkVSU0lPTn1fd2luZG93c19hbWQ2NC5tc2lcIiAtT3V0RmlsZSBnaC5tc2knLFxuICAgICAgICAnU3RhcnQtUHJvY2VzcyBtc2lleGVjLmV4ZSAtV2FpdCAtQXJndW1lbnRMaXN0IFxcJy9pIGdoLm1zaSAvcW5cXCcnLFxuICAgICAgICAnZGVsIGdoLm1zaScsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnaXQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdXaW5kb3dzJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnR2l0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBsYXRlc3QgdmVyc2lvbiBvZiBnaXQnLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJyRFcnJvckFjdGlvblByZWZlcmVuY2UgPSBcXCdTdG9wXFwnJyxcbiAgICAgICAgJyRQcm9ncmVzc1ByZWZlcmVuY2UgPSBcXCdTaWxlbnRseUNvbnRpbnVlXFwnJyxcbiAgICAgICAgJ2NtZCAvYyBjdXJsIC13IFwiJXtyZWRpcmVjdF91cmx9XCIgLWZzUyBodHRwczovL2dpdGh1Yi5jb20vZ2l0LWZvci13aW5kb3dzL2dpdC9yZWxlYXNlcy9sYXRlc3QgPiAkRW52OlRFTVBcXFxcbGF0ZXN0LWdpdCcsXG4gICAgICAgICckTGF0ZXN0VXJsID0gR2V0LUNvbnRlbnQgJEVudjpURU1QXFxcXGxhdGVzdC1naXQnLFxuICAgICAgICAnJEdJVF9WRVJTSU9OID0gKCRMYXRlc3RVcmwgLVNwbGl0IFxcJy9cXCcpWy0xXS5zdWJzdHJpbmcoMSknLFxuICAgICAgICAnJEdJVF9WRVJTSU9OX1NIT1JUID0gKCRHSVRfVkVSU0lPTiAtU3BsaXQgXFwnLndpbmRvd3MuXFwnKVswXScsXG4gICAgICAgICckR0lUX1JFVklTSU9OID0gKCRHSVRfVkVSU0lPTiAtU3BsaXQgXFwnLndpbmRvd3MuXFwnKVsxXScsXG4gICAgICAgICdJZiAoJEdJVF9SRVZJU0lPTiAtZ3QgMSkgeyRHSVRfVkVSU0lPTl9TSE9SVCA9IFwiJEdJVF9WRVJTSU9OX1NIT1JULiRHSVRfUkVWSVNJT05cIn0nLFxuICAgICAgICAnSW52b2tlLVdlYlJlcXVlc3QgLVVzZUJhc2ljUGFyc2luZyAtVXJpIGh0dHBzOi8vZ2l0aHViLmNvbS9naXQtZm9yLXdpbmRvd3MvZ2l0L3JlbGVhc2VzL2Rvd25sb2FkL3Yke0dJVF9WRVJTSU9OfS9HaXQtJHtHSVRfVkVSU0lPTl9TSE9SVH0tNjQtYml0LmV4ZSAtT3V0RmlsZSBnaXQtc2V0dXAuZXhlJyxcbiAgICAgICAgJ1N0YXJ0LVByb2Nlc3MgZ2l0LXNldHVwLmV4ZSAtV2FpdCAtQXJndW1lbnRMaXN0IFxcJy9WRVJZU0lMRU5UXFwnJyxcbiAgICAgICAgJ2RlbCBnaXQtc2V0dXAuZXhlJyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdpdGh1YlJ1bm5lcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBydW5uZXJWZXJzaW9uOiBSdW5uZXJWZXJzaW9uKSB7XG4gICAgbGV0IHJ1bm5lckNvbW1hbmRzOiBzdHJpbmdbXTtcbiAgICBpZiAocnVubmVyVmVyc2lvbi5pcyhSdW5uZXJWZXJzaW9uLmxhdGVzdCgpKSkge1xuICAgICAgcnVubmVyQ29tbWFuZHMgPSBbXG4gICAgICAgICdjbWQgL2MgY3VybCAtdyBcIiV7cmVkaXJlY3RfdXJsfVwiIC1mc1MgaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL3JlbGVhc2VzL2xhdGVzdCA+ICRFbnY6VEVNUFxcXFxsYXRlc3QtZ2hhJyxcbiAgICAgICAgJyRMYXRlc3RVcmwgPSBHZXQtQ29udGVudCAkRW52OlRFTVBcXFxcbGF0ZXN0LWdoYScsXG4gICAgICAgICckUlVOTkVSX1ZFUlNJT04gPSAoJExhdGVzdFVybCAtU3BsaXQgXFwnL1xcJylbLTFdLnN1YnN0cmluZygxKScsXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBydW5uZXJDb21tYW5kcyA9IFtgJFJVTk5FUl9WRVJTSU9OID0gJyR7cnVubmVyVmVyc2lvbi52ZXJzaW9ufSdgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltYWdlQnVpbGRlckNvbXBvbmVudChzY29wZSwgaWQsIHtcbiAgICAgIHBsYXRmb3JtOiAnV2luZG93cycsXG4gICAgICBkaXNwbGF5TmFtZTogJ0dpdEh1YiBBY3Rpb25zIFJ1bm5lcicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luc3RhbGwgbGF0ZXN0IHZlcnNpb24gb2YgR2l0SHViIEFjdGlvbnMgUnVubmVyJyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICckRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gXFwnU3RvcFxcJycsXG4gICAgICAgICckUHJvZ3Jlc3NQcmVmZXJlbmNlID0gXFwnU2lsZW50bHlDb250aW51ZVxcJycsXG4gICAgICBdLmNvbmNhdChydW5uZXJDb21tYW5kcywgW1xuICAgICAgICAnSW52b2tlLVdlYlJlcXVlc3QgLVVzZUJhc2ljUGFyc2luZyAtVXJpIFwiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1JVTk5FUl9WRVJTSU9OfS9hY3Rpb25zLXJ1bm5lci13aW4teDY0LSR7UlVOTkVSX1ZFUlNJT059LnppcFwiIC1PdXRGaWxlIGFjdGlvbnMuemlwJyxcbiAgICAgICAgJ0V4cGFuZC1BcmNoaXZlIGFjdGlvbnMuemlwIC1EZXN0aW5hdGlvblBhdGggQzpcXFxcYWN0aW9ucycsXG4gICAgICAgICdkZWwgYWN0aW9ucy56aXAnLFxuICAgICAgICBgZWNobyAke3J1bm5lclZlcnNpb24udmVyc2lvbn0gfCBPdXQtRmlsZSAtRW5jb2RpbmcgQVNDSUkgLU5vTmV3bGluZSBDOlxcXFxhY3Rpb25zXFxcXFJVTk5FUl9WRVJTSU9OYCxcbiAgICAgIF0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkb2NrZXIoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdXaW5kb3dzJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnRG9ja2VyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBsYXRlc3QgdmVyc2lvbiBvZiBEb2NrZXInLFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgJyRFcnJvckFjdGlvblByZWZlcmVuY2UgPSBcXCdTdG9wXFwnJyxcbiAgICAgICAgJyRQcm9ncmVzc1ByZWZlcmVuY2UgPSBcXCdTaWxlbnRseUNvbnRpbnVlXFwnJyxcbiAgICAgICAgJ0ludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSBodHRwczovL2Rlc2t0b3AuZG9ja2VyLmNvbS93aW4vbWFpbi9hbWQ2NC9Eb2NrZXIlMjBEZXNrdG9wJTIwSW5zdGFsbGVyLmV4ZSAtT3V0RmlsZSBkb2NrZXItc2V0dXAuZXhlJyxcbiAgICAgICAgJ1N0YXJ0LVByb2Nlc3MgXFwnZG9ja2VyLXNldHVwLmV4ZVxcJyAtV2FpdCAtQXJndW1lbnRMaXN0IFxcJy9pbnN0YWxsIC0tcXVpZXQgLS1hY2NlcHQtbGljZW5zZVxcJycsXG4gICAgICAgICdkZWwgZG9ja2VyLXNldHVwLmV4ZScsXG4gICAgICAgICdjbWQgL2MgY3VybCAtdyBcIiV7cmVkaXJlY3RfdXJsfVwiIC1mc1MgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9jb21wb3NlL3JlbGVhc2VzL2xhdGVzdCA+ICRFbnY6VEVNUFxcXFxsYXRlc3QtZG9ja2VyLWNvbXBvc2UnLFxuICAgICAgICAnJExhdGVzdFVybCA9IEdldC1Db250ZW50ICRFbnY6VEVNUFxcXFxsYXRlc3QtZG9ja2VyLWNvbXBvc2UnLFxuICAgICAgICAnJExhdGVzdERvY2tlckNvbXBvc2UgPSAoJExhdGVzdFVybCAtU3BsaXQgXFwnL1xcJylbLTFdJyxcbiAgICAgICAgJ0ludm9rZS1XZWJSZXF1ZXN0IC1Vc2VCYXNpY1BhcnNpbmcgLVVyaSAgXCJodHRwczovL2dpdGh1Yi5jb20vZG9ja2VyL2NvbXBvc2UvcmVsZWFzZXMvZG93bmxvYWQvJHtMYXRlc3REb2NrZXJDb21wb3NlfS9kb2NrZXItY29tcG9zZS1XaW5kb3dzLXg4Nl82NC5leGVcIiAtT3V0RmlsZSAkRW52OlByb2dyYW1GaWxlc1xcXFxEb2NrZXJcXFxcZG9ja2VyLWNvbXBvc2UuZXhlJyxcbiAgICAgICAgJ2NvcHkgJEVudjpQcm9ncmFtRmlsZXNcXFxcRG9ja2VyXFxcXGRvY2tlci1jb21wb3NlLmV4ZSAkRW52OlByb2dyYW1GaWxlc1xcXFxEb2NrZXJcXFxcY2xpLXBsdWdpbnNcXFxcZG9ja2VyLWNvbXBvc2UuZXhlJyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGV4dHJhQ2VydGlmaWNhdGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgSW1hZ2VCdWlsZGVyQ29tcG9uZW50KHNjb3BlLCBpZCwge1xuICAgICAgcGxhdGZvcm06ICdXaW5kb3dzJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnRXh0cmEgY2VydGlmaWNhdGVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gR2l0SHViIEVudGVycHJpc2UgU2VydmVyJyxcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICckRXJyb3JBY3Rpb25QcmVmZXJlbmNlID0gXFwnU3RvcFxcJycsXG4gICAgICAgICdJbXBvcnQtQ2VydGlmaWNhdGUgLUZpbGVQYXRoIGNlcnRzXFxcXGNlcnRzLnBlbSAtQ2VydFN0b3JlTG9jYXRpb24gQ2VydDpcXFxcTG9jYWxNYWNoaW5lXFxcXFJvb3QnLFxuICAgICAgXSxcbiAgICAgIGFzc2V0czogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJ2NlcnRzJyxcbiAgICAgICAgICBhc3NldDogbmV3IHMzX2Fzc2V0cy5Bc3NldChzY29wZSwgYCR7aWR9IEFzc2V0YCwgeyBwYXRoIH0pLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ami"), exports);
|
|
18
|
+
__exportStar(require("./builder"), exports);
|
|
19
|
+
__exportStar(require("./common"), exports);
|
|
20
|
+
__exportStar(require("./container"), exports);
|
|
21
|
+
__exportStar(require("./deprecated"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsNENBQTBCO0FBQzFCLDJDQUF5QjtBQUN6Qiw4Q0FBNEI7QUFDNUIsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbWknO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFpbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGVwcmVjYXRlZCc7XG4iXX0=
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { aws_codebuild as codebuild, aws_ec2 as ec2, aws_iam as iam, aws_logs as logs, Duration, RemovalPolicy } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { IRunnerImageBuilder } from './common';
|
|
4
|
+
import { Architecture, Os, RunnerAmi, RunnerImage, RunnerVersion } from '../common';
|
|
5
|
+
/**
|
|
6
|
+
* Properties for CodeBuildImageBuilder construct.
|
|
7
|
+
*/
|
|
8
|
+
export interface CodeBuildImageBuilderProps {
|
|
9
|
+
/**
|
|
10
|
+
* Image architecture.
|
|
11
|
+
*
|
|
12
|
+
* @default Architecture.X86_64
|
|
13
|
+
*/
|
|
14
|
+
readonly architecture?: Architecture;
|
|
15
|
+
/**
|
|
16
|
+
* Image OS.
|
|
17
|
+
*
|
|
18
|
+
* @default OS.LINUX
|
|
19
|
+
*/
|
|
20
|
+
readonly os?: Os;
|
|
21
|
+
/**
|
|
22
|
+
* Path to Dockerfile to be built. It can be a path to a Dockerfile, a folder containing a Dockerfile, or a zip file containing a Dockerfile.
|
|
23
|
+
*/
|
|
24
|
+
readonly dockerfilePath: string;
|
|
25
|
+
/**
|
|
26
|
+
* Version of GitHub Runners to install.
|
|
27
|
+
*
|
|
28
|
+
* @default latest version available
|
|
29
|
+
*/
|
|
30
|
+
readonly runnerVersion?: RunnerVersion;
|
|
31
|
+
/**
|
|
32
|
+
* Schedule the image to be rebuilt every given interval. Useful for keeping the image up-do-date with the latest GitHub runner version and latest OS updates.
|
|
33
|
+
*
|
|
34
|
+
* Set to zero to disable.
|
|
35
|
+
*
|
|
36
|
+
* @default Duration.days(7)
|
|
37
|
+
*/
|
|
38
|
+
readonly rebuildInterval?: Duration;
|
|
39
|
+
/**
|
|
40
|
+
* VPC to build the image in.
|
|
41
|
+
*
|
|
42
|
+
* @default no VPC
|
|
43
|
+
*/
|
|
44
|
+
readonly vpc?: ec2.IVpc;
|
|
45
|
+
/**
|
|
46
|
+
* Security Group to assign to this instance.
|
|
47
|
+
*
|
|
48
|
+
* @default public project with no security group
|
|
49
|
+
*/
|
|
50
|
+
readonly securityGroup?: ec2.ISecurityGroup;
|
|
51
|
+
/**
|
|
52
|
+
* Where to place the network interfaces within the VPC.
|
|
53
|
+
*
|
|
54
|
+
* @default no subnet
|
|
55
|
+
*/
|
|
56
|
+
readonly subnetSelection?: ec2.SubnetSelection;
|
|
57
|
+
/**
|
|
58
|
+
* The type of compute to use for this build.
|
|
59
|
+
* See the {@link ComputeType} enum for the possible values.
|
|
60
|
+
*
|
|
61
|
+
* @default {@link ComputeType#SMALL}
|
|
62
|
+
*/
|
|
63
|
+
readonly computeType?: codebuild.ComputeType;
|
|
64
|
+
/**
|
|
65
|
+
* Build image to use in CodeBuild. This is the image that's going to run the code that builds the runner image.
|
|
66
|
+
*
|
|
67
|
+
* The only action taken in CodeBuild is running `docker build`. You would therefore not need to change this setting often.
|
|
68
|
+
*
|
|
69
|
+
* @default Ubuntu 20.04 for x64 and Amazon Linux 2 for ARM64
|
|
70
|
+
*/
|
|
71
|
+
readonly buildImage?: codebuild.IBuildImage;
|
|
72
|
+
/**
|
|
73
|
+
* The number of minutes after which AWS CodeBuild stops the build if it's
|
|
74
|
+
* not complete. For valid values, see the timeoutInMinutes field in the AWS
|
|
75
|
+
* CodeBuild User Guide.
|
|
76
|
+
*
|
|
77
|
+
* @default Duration.hours(1)
|
|
78
|
+
*/
|
|
79
|
+
readonly timeout?: Duration;
|
|
80
|
+
/**
|
|
81
|
+
* The number of days log events are kept in CloudWatch Logs. When updating
|
|
82
|
+
* this property, unsetting it doesn't remove the log retention policy. To
|
|
83
|
+
* remove the retention policy, set the value to `INFINITE`.
|
|
84
|
+
*
|
|
85
|
+
* @default logs.RetentionDays.ONE_MONTH
|
|
86
|
+
*/
|
|
87
|
+
readonly logRetention?: logs.RetentionDays;
|
|
88
|
+
/**
|
|
89
|
+
* Removal policy for logs of image builds. If deployment fails on the custom resource, try setting this to `RemovalPolicy.RETAIN`. This way the CodeBuild logs can still be viewed, and you can see why the build failed.
|
|
90
|
+
*
|
|
91
|
+
* We try to not leave anything behind when removed. But sometimes a log staying behind is useful.
|
|
92
|
+
*
|
|
93
|
+
* @default RemovalPolicy.DESTROY
|
|
94
|
+
*/
|
|
95
|
+
readonly logRemovalPolicy?: RemovalPolicy;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* An image builder that uses CodeBuild to build Docker images pre-baked with all the GitHub Actions runner requirements. Builders can be used with runner providers.
|
|
99
|
+
*
|
|
100
|
+
* Each builder re-runs automatically at a set interval to make sure the images contain the latest versions of everything.
|
|
101
|
+
*
|
|
102
|
+
* You can create an instance of this construct to customize the image used to spin-up runners. Each provider has its own requirements for what an image should do. That's why they each provide their own Dockerfile.
|
|
103
|
+
*
|
|
104
|
+
* For example, to set a specific runner version, rebuild the image every 2 weeks, and add a few packages for the Fargate provider, use:
|
|
105
|
+
*
|
|
106
|
+
* ```
|
|
107
|
+
* const builder = new CodeBuildImageBuilder(this, 'Builder', {
|
|
108
|
+
* dockerfilePath: FargateProvider.LINUX_X64_DOCKERFILE_PATH,
|
|
109
|
+
* runnerVersion: RunnerVersion.specific('2.293.0'),
|
|
110
|
+
* rebuildInterval: Duration.days(14),
|
|
111
|
+
* });
|
|
112
|
+
* builder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
|
|
113
|
+
* new FargateRunner(this, 'Fargate provider', {
|
|
114
|
+
* label: 'customized-fargate',
|
|
115
|
+
* imageBuilder: builder,
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @deprecated use RunnerImageBuilder
|
|
120
|
+
*/
|
|
121
|
+
export declare class CodeBuildImageBuilder extends Construct implements IRunnerImageBuilder {
|
|
122
|
+
readonly props: CodeBuildImageBuilderProps;
|
|
123
|
+
/**
|
|
124
|
+
* Bump this number every time the buildspec or any important setting of the project changes. It will force a rebuild of the image.
|
|
125
|
+
* @private
|
|
126
|
+
*/
|
|
127
|
+
private static BUILDSPEC_VERSION;
|
|
128
|
+
private readonly architecture;
|
|
129
|
+
private readonly os;
|
|
130
|
+
private readonly repository;
|
|
131
|
+
private readonly dockerfile;
|
|
132
|
+
private preBuild;
|
|
133
|
+
private postBuild;
|
|
134
|
+
private buildArgs;
|
|
135
|
+
private policyStatements;
|
|
136
|
+
private secondaryAssets;
|
|
137
|
+
private readonly buildImage;
|
|
138
|
+
private boundImage?;
|
|
139
|
+
constructor(scope: Construct, id: string, props: CodeBuildImageBuilderProps);
|
|
140
|
+
/**
|
|
141
|
+
* Uploads a folder to the build server at a given folder name.
|
|
142
|
+
*
|
|
143
|
+
* @param sourcePath path to source directory
|
|
144
|
+
* @param destName name of destination folder
|
|
145
|
+
*/
|
|
146
|
+
addFiles(sourcePath: string, destName: string): void;
|
|
147
|
+
/**
|
|
148
|
+
* Adds a command that runs before `docker build`.
|
|
149
|
+
*
|
|
150
|
+
* @param command command to add
|
|
151
|
+
*/
|
|
152
|
+
addPreBuildCommand(command: string): void;
|
|
153
|
+
/**
|
|
154
|
+
* Adds a command that runs after `docker build` and `docker push`.
|
|
155
|
+
*
|
|
156
|
+
* @param command command to add
|
|
157
|
+
*/
|
|
158
|
+
addPostBuildCommand(command: string): void;
|
|
159
|
+
/**
|
|
160
|
+
* Adds a build argument for Docker. See the documentation for the Dockerfile you're using for a list of supported build arguments.
|
|
161
|
+
*
|
|
162
|
+
* @param name build argument name
|
|
163
|
+
* @param value build argument value
|
|
164
|
+
*/
|
|
165
|
+
setBuildArg(name: string, value: string): void;
|
|
166
|
+
/**
|
|
167
|
+
* Add a policy statement to the builder to access resources required to the image build.
|
|
168
|
+
*
|
|
169
|
+
* @param statement IAM policy statement
|
|
170
|
+
*/
|
|
171
|
+
addPolicyStatement(statement: iam.PolicyStatement): void;
|
|
172
|
+
/**
|
|
173
|
+
* Add extra trusted certificates. This helps deal with self-signed certificates for GitHub Enterprise Server.
|
|
174
|
+
*
|
|
175
|
+
* All first party Dockerfiles support this. Others may not.
|
|
176
|
+
*
|
|
177
|
+
* @param path path to directory containing a file called certs.pem containing all the required certificates
|
|
178
|
+
*/
|
|
179
|
+
addExtraCertificates(path: string): void;
|
|
180
|
+
/**
|
|
181
|
+
* Called by IRunnerProvider to finalize settings and create the image builder.
|
|
182
|
+
*/
|
|
183
|
+
bindDockerImage(): RunnerImage;
|
|
184
|
+
private getBuildImage;
|
|
185
|
+
private getBuildSpec;
|
|
186
|
+
private customResource;
|
|
187
|
+
/**
|
|
188
|
+
* Return hash of all settings that can affect the result image so we can trigger the build when it changes.
|
|
189
|
+
* @private
|
|
190
|
+
*/
|
|
191
|
+
private hashBuildSettings;
|
|
192
|
+
private rebuildImageOnSchedule;
|
|
193
|
+
get connections(): ec2.Connections;
|
|
194
|
+
bindAmi(): RunnerAmi;
|
|
195
|
+
}
|