@cloudsnorkel/cdk-github-runners 0.14.12 → 0.14.14

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.
Files changed (33) hide show
  1. package/.jsii +107 -42
  2. package/API.md +277 -8
  3. package/assets/delete-failed-runner.lambda/index.js +23 -1
  4. package/assets/idle-runner-repear.lambda/index.js +23 -1
  5. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +23 -1
  6. package/assets/setup.lambda/index.html +8 -8
  7. package/assets/status.lambda/index.js +23 -1
  8. package/assets/token-retriever.lambda/index.js +23 -1
  9. package/assets/webhook-handler.lambda/index.js +23 -1
  10. package/assets/webhook-redelivery.lambda/index.js +23 -1
  11. package/lib/access.js +1 -1
  12. package/lib/image-builders/api.js +1 -1
  13. package/lib/image-builders/aws-image-builder/builder.js +1 -1
  14. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  15. package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
  16. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  17. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  18. package/lib/image-builders/codebuild-deprecated.js +3 -3
  19. package/lib/image-builders/codebuild.js +3 -3
  20. package/lib/image-builders/components.d.ts +4 -0
  21. package/lib/image-builders/components.js +46 -13
  22. package/lib/image-builders/static.js +1 -1
  23. package/lib/providers/codebuild.js +4 -4
  24. package/lib/providers/common.js +3 -3
  25. package/lib/providers/ec2.d.ts +1 -0
  26. package/lib/providers/ec2.js +5 -3
  27. package/lib/providers/ecs.d.ts +24 -0
  28. package/lib/providers/ecs.js +19 -7
  29. package/lib/providers/fargate.js +2 -2
  30. package/lib/providers/lambda.js +2 -2
  31. package/lib/runner.js +3 -3
  32. package/lib/secrets.js +1 -1
  33. package/package.json +18 -18
package/API.md CHANGED
@@ -178,6 +178,20 @@ AmiBuilder.isConstruct(x: any)
178
178
 
179
179
  Checks if `x` is a construct.
180
180
 
181
+ Use this method instead of `instanceof` to properly detect `Construct`
182
+ instances, even when the construct library is symlinked.
183
+
184
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
185
+ disk are seen as independent, completely different libraries. As a
186
+ consequence, the class `Construct` in each copy of the `constructs` library
187
+ is seen as a different class, and an instance of one class will not test as
188
+ `instanceof` the other class. `npm install` will not create installations
189
+ like this, but users may manually symlink construct libraries together or
190
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
191
+ library can be accidentally installed, and `instanceof` will behave
192
+ unpredictably. It is safest to avoid using `instanceof`, and using
193
+ this type-testing method instead.
194
+
181
195
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.AmiBuilder.isConstruct.parameter.x"></a>
182
196
 
183
197
  - *Type:* any
@@ -463,6 +477,20 @@ CodeBuildImageBuilder.isConstruct(x: any)
463
477
 
464
478
  Checks if `x` is a construct.
465
479
 
480
+ Use this method instead of `instanceof` to properly detect `Construct`
481
+ instances, even when the construct library is symlinked.
482
+
483
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
484
+ disk are seen as independent, completely different libraries. As a
485
+ consequence, the class `Construct` in each copy of the `constructs` library
486
+ is seen as a different class, and an instance of one class will not test as
487
+ `instanceof` the other class. `npm install` will not create installations
488
+ like this, but users may manually symlink construct libraries together or
489
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
490
+ library can be accidentally installed, and `instanceof` will behave
491
+ unpredictably. It is safest to avoid using `instanceof`, and using
492
+ this type-testing method instead.
493
+
466
494
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.CodeBuildImageBuilder.isConstruct.parameter.x"></a>
467
495
 
468
496
  - *Type:* any
@@ -645,6 +673,20 @@ CodeBuildRunner.isConstruct(x: any)
645
673
 
646
674
  Checks if `x` is a construct.
647
675
 
676
+ Use this method instead of `instanceof` to properly detect `Construct`
677
+ instances, even when the construct library is symlinked.
678
+
679
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
680
+ disk are seen as independent, completely different libraries. As a
681
+ consequence, the class `Construct` in each copy of the `constructs` library
682
+ is seen as a different class, and an instance of one class will not test as
683
+ `instanceof` the other class. `npm install` will not create installations
684
+ like this, but users may manually symlink construct libraries together or
685
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
686
+ library can be accidentally installed, and `instanceof` will behave
687
+ unpredictably. It is safest to avoid using `instanceof`, and using
688
+ this type-testing method instead.
689
+
648
690
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunner.isConstruct.parameter.x"></a>
649
691
 
650
692
  - *Type:* any
@@ -1007,7 +1049,7 @@ Also gives the status function any needed permissions to query the Docker image
1007
1049
 
1008
1050
  ---
1009
1051
 
1010
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.isConstruct"></a>
1052
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.isConstruct"></a>
1011
1053
 
1012
1054
  ```typescript
1013
1055
  import { CodeBuildRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
@@ -1017,6 +1059,20 @@ CodeBuildRunnerProvider.isConstruct(x: any)
1017
1059
 
1018
1060
  Checks if `x` is a construct.
1019
1061
 
1062
+ Use this method instead of `instanceof` to properly detect `Construct`
1063
+ instances, even when the construct library is symlinked.
1064
+
1065
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1066
+ disk are seen as independent, completely different libraries. As a
1067
+ consequence, the class `Construct` in each copy of the `constructs` library
1068
+ is seen as a different class, and an instance of one class will not test as
1069
+ `instanceof` the other class. `npm install` will not create installations
1070
+ like this, but users may manually symlink construct libraries together or
1071
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1072
+ library can be accidentally installed, and `instanceof` will behave
1073
+ unpredictably. It is safest to avoid using `instanceof`, and using
1074
+ this type-testing method instead.
1075
+
1020
1076
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.CodeBuildRunnerProvider.isConstruct.parameter.x"></a>
1021
1077
 
1022
1078
  - *Type:* any
@@ -1408,6 +1464,20 @@ ContainerImageBuilder.isConstruct(x: any)
1408
1464
 
1409
1465
  Checks if `x` is a construct.
1410
1466
 
1467
+ Use this method instead of `instanceof` to properly detect `Construct`
1468
+ instances, even when the construct library is symlinked.
1469
+
1470
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1471
+ disk are seen as independent, completely different libraries. As a
1472
+ consequence, the class `Construct` in each copy of the `constructs` library
1473
+ is seen as a different class, and an instance of one class will not test as
1474
+ `instanceof` the other class. `npm install` will not create installations
1475
+ like this, but users may manually symlink construct libraries together or
1476
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1477
+ library can be accidentally installed, and `instanceof` will behave
1478
+ unpredictably. It is safest to avoid using `instanceof`, and using
1479
+ this type-testing method instead.
1480
+
1411
1481
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.ContainerImageBuilder.isConstruct.parameter.x"></a>
1412
1482
 
1413
1483
  - *Type:* any
@@ -1592,6 +1662,20 @@ Ec2Runner.isConstruct(x: any)
1592
1662
 
1593
1663
  Checks if `x` is a construct.
1594
1664
 
1665
+ Use this method instead of `instanceof` to properly detect `Construct`
1666
+ instances, even when the construct library is symlinked.
1667
+
1668
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1669
+ disk are seen as independent, completely different libraries. As a
1670
+ consequence, the class `Construct` in each copy of the `constructs` library
1671
+ is seen as a different class, and an instance of one class will not test as
1672
+ `instanceof` the other class. `npm install` will not create installations
1673
+ like this, but users may manually symlink construct libraries together or
1674
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1675
+ library can be accidentally installed, and `instanceof` will behave
1676
+ unpredictably. It is safest to avoid using `instanceof`, and using
1677
+ this type-testing method instead.
1678
+
1595
1679
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.Ec2Runner.isConstruct.parameter.x"></a>
1596
1680
 
1597
1681
  - *Type:* any
@@ -1618,6 +1702,7 @@ The default OS is Ubuntu running on x64 architecture.
1618
1702
 
1619
1703
  Included components:
1620
1704
  * `RunnerImageComponent.requiredPackages()`
1705
+ * `RunnerImageComponent.cloudWatchAgent()`
1621
1706
  * `RunnerImageComponent.runnerUser()`
1622
1707
  * `RunnerImageComponent.git()`
1623
1708
  * `RunnerImageComponent.githubCli()`
@@ -1864,7 +1949,7 @@ Also gives the status function any needed permissions to query the Docker image
1864
1949
 
1865
1950
  ---
1866
1951
 
1867
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.isConstruct"></a>
1952
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.isConstruct"></a>
1868
1953
 
1869
1954
  ```typescript
1870
1955
  import { Ec2RunnerProvider } from '@cloudsnorkel/cdk-github-runners'
@@ -1874,6 +1959,20 @@ Ec2RunnerProvider.isConstruct(x: any)
1874
1959
 
1875
1960
  Checks if `x` is a construct.
1876
1961
 
1962
+ Use this method instead of `instanceof` to properly detect `Construct`
1963
+ instances, even when the construct library is symlinked.
1964
+
1965
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
1966
+ disk are seen as independent, completely different libraries. As a
1967
+ consequence, the class `Construct` in each copy of the `constructs` library
1968
+ is seen as a different class, and an instance of one class will not test as
1969
+ `instanceof` the other class. `npm install` will not create installations
1970
+ like this, but users may manually symlink construct libraries together or
1971
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
1972
+ library can be accidentally installed, and `instanceof` will behave
1973
+ unpredictably. It is safest to avoid using `instanceof`, and using
1974
+ this type-testing method instead.
1975
+
1877
1976
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.Ec2RunnerProvider.isConstruct.parameter.x"></a>
1878
1977
 
1879
1978
  - *Type:* any
@@ -1900,6 +1999,7 @@ The default OS is Ubuntu running on x64 architecture.
1900
1999
 
1901
2000
  Included components:
1902
2001
  * `RunnerImageComponent.requiredPackages()`
2002
+ * `RunnerImageComponent.cloudWatchAgent()`
1903
2003
  * `RunnerImageComponent.runnerUser()`
1904
2004
  * `RunnerImageComponent.git()`
1905
2005
  * `RunnerImageComponent.githubCli()`
@@ -2138,7 +2238,7 @@ Also gives the status function any needed permissions to query the Docker image
2138
2238
 
2139
2239
  ---
2140
2240
 
2141
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProvider.isConstruct"></a>
2241
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProvider.isConstruct"></a>
2142
2242
 
2143
2243
  ```typescript
2144
2244
  import { EcsRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
@@ -2148,6 +2248,20 @@ EcsRunnerProvider.isConstruct(x: any)
2148
2248
 
2149
2249
  Checks if `x` is a construct.
2150
2250
 
2251
+ Use this method instead of `instanceof` to properly detect `Construct`
2252
+ instances, even when the construct library is symlinked.
2253
+
2254
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
2255
+ disk are seen as independent, completely different libraries. As a
2256
+ consequence, the class `Construct` in each copy of the `constructs` library
2257
+ is seen as a different class, and an instance of one class will not test as
2258
+ `instanceof` the other class. `npm install` will not create installations
2259
+ like this, but users may manually symlink construct libraries together or
2260
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
2261
+ library can be accidentally installed, and `instanceof` will behave
2262
+ unpredictably. It is safest to avoid using `instanceof`, and using
2263
+ this type-testing method instead.
2264
+
2151
2265
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProvider.isConstruct.parameter.x"></a>
2152
2266
 
2153
2267
  - *Type:* any
@@ -2412,6 +2526,20 @@ FargateRunner.isConstruct(x: any)
2412
2526
 
2413
2527
  Checks if `x` is a construct.
2414
2528
 
2529
+ Use this method instead of `instanceof` to properly detect `Construct`
2530
+ instances, even when the construct library is symlinked.
2531
+
2532
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
2533
+ disk are seen as independent, completely different libraries. As a
2534
+ consequence, the class `Construct` in each copy of the `constructs` library
2535
+ is seen as a different class, and an instance of one class will not test as
2536
+ `instanceof` the other class. `npm install` will not create installations
2537
+ like this, but users may manually symlink construct libraries together or
2538
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
2539
+ library can be accidentally installed, and `instanceof` will behave
2540
+ unpredictably. It is safest to avoid using `instanceof`, and using
2541
+ this type-testing method instead.
2542
+
2415
2543
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.FargateRunner.isConstruct.parameter.x"></a>
2416
2544
 
2417
2545
  - *Type:* any
@@ -2855,7 +2983,7 @@ Also gives the status function any needed permissions to query the Docker image
2855
2983
 
2856
2984
  ---
2857
2985
 
2858
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.isConstruct"></a>
2986
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.isConstruct"></a>
2859
2987
 
2860
2988
  ```typescript
2861
2989
  import { FargateRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
@@ -2865,6 +2993,20 @@ FargateRunnerProvider.isConstruct(x: any)
2865
2993
 
2866
2994
  Checks if `x` is a construct.
2867
2995
 
2996
+ Use this method instead of `instanceof` to properly detect `Construct`
2997
+ instances, even when the construct library is symlinked.
2998
+
2999
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
3000
+ disk are seen as independent, completely different libraries. As a
3001
+ consequence, the class `Construct` in each copy of the `constructs` library
3002
+ is seen as a different class, and an instance of one class will not test as
3003
+ `instanceof` the other class. `npm install` will not create installations
3004
+ like this, but users may manually symlink construct libraries together or
3005
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
3006
+ library can be accidentally installed, and `instanceof` will behave
3007
+ unpredictably. It is safest to avoid using `instanceof`, and using
3008
+ this type-testing method instead.
3009
+
2868
3010
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.FargateRunnerProvider.isConstruct.parameter.x"></a>
2869
3011
 
2870
3012
  - *Type:* any
@@ -3359,7 +3501,7 @@ This time may be longer than the time the runner took.
3359
3501
 
3360
3502
  ---
3361
3503
 
3362
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct"></a>
3504
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct"></a>
3363
3505
 
3364
3506
  ```typescript
3365
3507
  import { GitHubRunners } from '@cloudsnorkel/cdk-github-runners'
@@ -3369,6 +3511,20 @@ GitHubRunners.isConstruct(x: any)
3369
3511
 
3370
3512
  Checks if `x` is a construct.
3371
3513
 
3514
+ Use this method instead of `instanceof` to properly detect `Construct`
3515
+ instances, even when the construct library is symlinked.
3516
+
3517
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
3518
+ disk are seen as independent, completely different libraries. As a
3519
+ consequence, the class `Construct` in each copy of the `constructs` library
3520
+ is seen as a different class, and an instance of one class will not test as
3521
+ `instanceof` the other class. `npm install` will not create installations
3522
+ like this, but users may manually symlink construct libraries together or
3523
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
3524
+ library can be accidentally installed, and `instanceof` will behave
3525
+ unpredictably. It is safest to avoid using `instanceof`, and using
3526
+ this type-testing method instead.
3527
+
3372
3528
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.GitHubRunners.isConstruct.parameter.x"></a>
3373
3529
 
3374
3530
  - *Type:* any
@@ -3599,6 +3755,20 @@ ImageBuilderComponent.isConstruct(x: any)
3599
3755
 
3600
3756
  Checks if `x` is a construct.
3601
3757
 
3758
+ Use this method instead of `instanceof` to properly detect `Construct`
3759
+ instances, even when the construct library is symlinked.
3760
+
3761
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
3762
+ disk are seen as independent, completely different libraries. As a
3763
+ consequence, the class `Construct` in each copy of the `constructs` library
3764
+ is seen as a different class, and an instance of one class will not test as
3765
+ `instanceof` the other class. `npm install` will not create installations
3766
+ like this, but users may manually symlink construct libraries together or
3767
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
3768
+ library can be accidentally installed, and `instanceof` will behave
3769
+ unpredictably. It is safest to avoid using `instanceof`, and using
3770
+ this type-testing method instead.
3771
+
3602
3772
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.ImageBuilderComponent.isConstruct.parameter.x"></a>
3603
3773
 
3604
3774
  - *Type:* any
@@ -3854,6 +4024,20 @@ LambdaRunner.isConstruct(x: any)
3854
4024
 
3855
4025
  Checks if `x` is a construct.
3856
4026
 
4027
+ Use this method instead of `instanceof` to properly detect `Construct`
4028
+ instances, even when the construct library is symlinked.
4029
+
4030
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
4031
+ disk are seen as independent, completely different libraries. As a
4032
+ consequence, the class `Construct` in each copy of the `constructs` library
4033
+ is seen as a different class, and an instance of one class will not test as
4034
+ `instanceof` the other class. `npm install` will not create installations
4035
+ like this, but users may manually symlink construct libraries together or
4036
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
4037
+ library can be accidentally installed, and `instanceof` will behave
4038
+ unpredictably. It is safest to avoid using `instanceof`, and using
4039
+ this type-testing method instead.
4040
+
3857
4041
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.LambdaRunner.isConstruct.parameter.x"></a>
3858
4042
 
3859
4043
  - *Type:* any
@@ -4208,7 +4392,7 @@ Also gives the status function any needed permissions to query the Docker image
4208
4392
 
4209
4393
  ---
4210
4394
 
4211
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.isConstruct"></a>
4395
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.isConstruct"></a>
4212
4396
 
4213
4397
  ```typescript
4214
4398
  import { LambdaRunnerProvider } from '@cloudsnorkel/cdk-github-runners'
@@ -4218,6 +4402,20 @@ LambdaRunnerProvider.isConstruct(x: any)
4218
4402
 
4219
4403
  Checks if `x` is a construct.
4220
4404
 
4405
+ Use this method instead of `instanceof` to properly detect `Construct`
4406
+ instances, even when the construct library is symlinked.
4407
+
4408
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
4409
+ disk are seen as independent, completely different libraries. As a
4410
+ consequence, the class `Construct` in each copy of the `constructs` library
4411
+ is seen as a different class, and an instance of one class will not test as
4412
+ `instanceof` the other class. `npm install` will not create installations
4413
+ like this, but users may manually symlink construct libraries together or
4414
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
4415
+ library can be accidentally installed, and `instanceof` will behave
4416
+ unpredictably. It is safest to avoid using `instanceof`, and using
4417
+ this type-testing method instead.
4418
+
4221
4419
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.LambdaRunnerProvider.isConstruct.parameter.x"></a>
4222
4420
 
4223
4421
  - *Type:* any
@@ -4564,7 +4762,7 @@ Removal is done by component name. Multiple components with the same name will a
4564
4762
 
4565
4763
  ---
4566
4764
 
4567
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct"></a>
4765
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct"></a>
4568
4766
 
4569
4767
  ```typescript
4570
4768
  import { RunnerImageBuilder } from '@cloudsnorkel/cdk-github-runners'
@@ -4574,6 +4772,20 @@ RunnerImageBuilder.isConstruct(x: any)
4574
4772
 
4575
4773
  Checks if `x` is a construct.
4576
4774
 
4775
+ Use this method instead of `instanceof` to properly detect `Construct`
4776
+ instances, even when the construct library is symlinked.
4777
+
4778
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
4779
+ disk are seen as independent, completely different libraries. As a
4780
+ consequence, the class `Construct` in each copy of the `constructs` library
4781
+ is seen as a different class, and an instance of one class will not test as
4782
+ `instanceof` the other class. `npm install` will not create installations
4783
+ like this, but users may manually symlink construct libraries together or
4784
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
4785
+ library can be accidentally installed, and `instanceof` will behave
4786
+ unpredictably. It is safest to avoid using `instanceof`, and using
4787
+ this type-testing method instead.
4788
+
4577
4789
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.RunnerImageBuilder.isConstruct.parameter.x"></a>
4578
4790
 
4579
4791
  - *Type:* any
@@ -4714,7 +4926,7 @@ Returns a string representation of this construct.
4714
4926
 
4715
4927
  ---
4716
4928
 
4717
- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Secrets.isConstruct"></a>
4929
+ ##### `isConstruct` <a name="isConstruct" id="@cloudsnorkel/cdk-github-runners.Secrets.isConstruct"></a>
4718
4930
 
4719
4931
  ```typescript
4720
4932
  import { Secrets } from '@cloudsnorkel/cdk-github-runners'
@@ -4724,6 +4936,20 @@ Secrets.isConstruct(x: any)
4724
4936
 
4725
4937
  Checks if `x` is a construct.
4726
4938
 
4939
+ Use this method instead of `instanceof` to properly detect `Construct`
4940
+ instances, even when the construct library is symlinked.
4941
+
4942
+ Explanation: in JavaScript, multiple copies of the `constructs` library on
4943
+ disk are seen as independent, completely different libraries. As a
4944
+ consequence, the class `Construct` in each copy of the `constructs` library
4945
+ is seen as a different class, and an instance of one class will not test as
4946
+ `instanceof` the other class. `npm install` will not create installations
4947
+ like this, but users may manually symlink construct libraries together or
4948
+ use a monorepo tool: in those cases, multiple copies of the `constructs`
4949
+ library can be accidentally installed, and `instanceof` will behave
4950
+ unpredictably. It is safest to avoid using `instanceof`, and using
4951
+ this type-testing method instead.
4952
+
4727
4953
  ###### `x`<sup>Required</sup> <a name="x" id="@cloudsnorkel/cdk-github-runners.Secrets.isConstruct.parameter.x"></a>
4728
4954
 
4729
4955
  - *Type:* any
@@ -6184,6 +6410,8 @@ const ecsRunnerProviderProps: EcsRunnerProviderProps = { ... }
6184
6410
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory used by the task. |
6185
6411
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.memoryReservationMiB">memoryReservationMiB</a></code> | <code>number</code> | The soft limit (in MiB) of memory to reserve for the container. |
6186
6412
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.minInstances">minInstances</a></code> | <code>number</code> | The minimum number of instances to run in the cluster. |
6413
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.placementConstraints">placementConstraints</a></code> | <code>aws-cdk-lib.aws_ecs.PlacementConstraint[]</code> | ECS placement constraints to influence task placement. |
6414
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.placementStrategies">placementStrategies</a></code> | <code>aws-cdk-lib.aws_ecs.PlacementStrategy[]</code> | ECS placement strategies to influence task placement. |
6187
6415
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.securityGroups">securityGroups</a></code> | <code>aws-cdk-lib.aws_ec2.ISecurityGroup[]</code> | Security groups to assign to the task. |
6188
6416
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.spot">spot</a></code> | <code>boolean</code> | Use spot capacity. |
6189
6417
  | <code><a href="#@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.spotMaxPrice">spotMaxPrice</a></code> | <code>string</code> | Maximum price for spot instances. |
@@ -6420,6 +6648,36 @@ Only used when creating a new cluster.
6420
6648
 
6421
6649
  ---
6422
6650
 
6651
+ ##### `placementConstraints`<sup>Optional</sup> <a name="placementConstraints" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.placementConstraints"></a>
6652
+
6653
+ ```typescript
6654
+ public readonly placementConstraints: PlacementConstraint[];
6655
+ ```
6656
+
6657
+ - *Type:* aws-cdk-lib.aws_ecs.PlacementConstraint[]
6658
+ - *Default:* undefined (no placement constraints)
6659
+
6660
+ ECS placement constraints to influence task placement.
6661
+
6662
+ Example: [ecs.PlacementConstraint.memberOf('ecs-placement')]
6663
+
6664
+ ---
6665
+
6666
+ ##### `placementStrategies`<sup>Optional</sup> <a name="placementStrategies" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.placementStrategies"></a>
6667
+
6668
+ ```typescript
6669
+ public readonly placementStrategies: PlacementStrategy[];
6670
+ ```
6671
+
6672
+ - *Type:* aws-cdk-lib.aws_ecs.PlacementStrategy[]
6673
+ - *Default:* undefined (no placement strategies)
6674
+
6675
+ ECS placement strategies to influence task placement.
6676
+
6677
+ Example: [ecs.PlacementStrategy.packedByCpu()]
6678
+
6679
+ ---
6680
+
6423
6681
  ##### `securityGroups`<sup>Optional</sup> <a name="securityGroups" id="@cloudsnorkel/cdk-github-runners.EcsRunnerProviderProps.property.securityGroups"></a>
6424
6682
 
6425
6683
  ```typescript
@@ -9286,6 +9544,7 @@ Returns true if the image builder should be rebooted after this component is ins
9286
9544
  | **Name** | **Description** |
9287
9545
  | --- | --- |
9288
9546
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.awsCli">awsCli</a></code> | A component to install the AWS CLI. |
9547
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.cloudWatchAgent">cloudWatchAgent</a></code> | A component to install CloudWatch Agent for the runner so we can send logs. |
9289
9548
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.custom">custom</a></code> | Define a custom component that can run commands in the image, copy files into the image, and run some Docker commands. |
9290
9549
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.docker">docker</a></code> | A component to install Docker. |
9291
9550
  | <code><a href="#@cloudsnorkel/cdk-github-runners.RunnerImageComponent.dockerInDocker">dockerInDocker</a></code> | A component to install Docker-in-Docker. |
@@ -9310,6 +9569,16 @@ RunnerImageComponent.awsCli()
9310
9569
 
9311
9570
  A component to install the AWS CLI.
9312
9571
 
9572
+ ##### `cloudWatchAgent` <a name="cloudWatchAgent" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.cloudWatchAgent"></a>
9573
+
9574
+ ```typescript
9575
+ import { RunnerImageComponent } from '@cloudsnorkel/cdk-github-runners'
9576
+
9577
+ RunnerImageComponent.cloudWatchAgent()
9578
+ ```
9579
+
9580
+ A component to install CloudWatch Agent for the runner so we can send logs.
9581
+
9313
9582
  ##### `custom` <a name="custom" id="@cloudsnorkel/cdk-github-runners.RunnerImageComponent.custom"></a>
9314
9583
 
9315
9584
  ```typescript
@@ -5798,6 +5798,9 @@ var require_identifiers = __commonJS({
5798
5798
  "use strict";
5799
5799
  var numeric = /^[0-9]+$/;
5800
5800
  var compareIdentifiers = (a, b) => {
5801
+ if (typeof a === "number" && typeof b === "number") {
5802
+ return a === b ? 0 : a < b ? -1 : 1;
5803
+ }
5801
5804
  const anum = numeric.test(a);
5802
5805
  const bnum = numeric.test(b);
5803
5806
  if (anum && bnum) {
@@ -5904,7 +5907,25 @@ var require_semver = __commonJS({
5904
5907
  if (!(other instanceof _SemVer)) {
5905
5908
  other = new _SemVer(other, this.options);
5906
5909
  }
5907
- return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
5910
+ if (this.major < other.major) {
5911
+ return -1;
5912
+ }
5913
+ if (this.major > other.major) {
5914
+ return 1;
5915
+ }
5916
+ if (this.minor < other.minor) {
5917
+ return -1;
5918
+ }
5919
+ if (this.minor > other.minor) {
5920
+ return 1;
5921
+ }
5922
+ if (this.patch < other.patch) {
5923
+ return -1;
5924
+ }
5925
+ if (this.patch > other.patch) {
5926
+ return 1;
5927
+ }
5928
+ return 0;
5908
5929
  }
5909
5930
  comparePre(other) {
5910
5931
  if (!(other instanceof _SemVer)) {
@@ -6665,6 +6686,7 @@ var require_range = __commonJS({
6665
6686
  return result;
6666
6687
  };
6667
6688
  var parseComparator = (comp, options) => {
6689
+ comp = comp.replace(re[t.BUILD], "");
6668
6690
  debug("comp", comp, options);
6669
6691
  comp = replaceCarets(comp, options);
6670
6692
  debug("caret", comp);
@@ -5798,6 +5798,9 @@ var require_identifiers = __commonJS({
5798
5798
  "use strict";
5799
5799
  var numeric = /^[0-9]+$/;
5800
5800
  var compareIdentifiers = (a, b) => {
5801
+ if (typeof a === "number" && typeof b === "number") {
5802
+ return a === b ? 0 : a < b ? -1 : 1;
5803
+ }
5801
5804
  const anum = numeric.test(a);
5802
5805
  const bnum = numeric.test(b);
5803
5806
  if (anum && bnum) {
@@ -5904,7 +5907,25 @@ var require_semver = __commonJS({
5904
5907
  if (!(other instanceof _SemVer)) {
5905
5908
  other = new _SemVer(other, this.options);
5906
5909
  }
5907
- return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
5910
+ if (this.major < other.major) {
5911
+ return -1;
5912
+ }
5913
+ if (this.major > other.major) {
5914
+ return 1;
5915
+ }
5916
+ if (this.minor < other.minor) {
5917
+ return -1;
5918
+ }
5919
+ if (this.minor > other.minor) {
5920
+ return 1;
5921
+ }
5922
+ if (this.patch < other.patch) {
5923
+ return -1;
5924
+ }
5925
+ if (this.patch > other.patch) {
5926
+ return 1;
5927
+ }
5928
+ return 0;
5908
5929
  }
5909
5930
  comparePre(other) {
5910
5931
  if (!(other instanceof _SemVer)) {
@@ -6665,6 +6686,7 @@ var require_range = __commonJS({
6665
6686
  return result;
6666
6687
  };
6667
6688
  var parseComparator = (comp, options) => {
6689
+ comp = comp.replace(re[t.BUILD], "");
6668
6690
  debug("comp", comp, options);
6669
6691
  comp = replaceCarets(comp, options);
6670
6692
  debug("caret", comp);
@@ -185,6 +185,9 @@ var require_identifiers = __commonJS({
185
185
  "use strict";
186
186
  var numeric = /^[0-9]+$/;
187
187
  var compareIdentifiers = (a, b) => {
188
+ if (typeof a === "number" && typeof b === "number") {
189
+ return a === b ? 0 : a < b ? -1 : 1;
190
+ }
188
191
  const anum = numeric.test(a);
189
192
  const bnum = numeric.test(b);
190
193
  if (anum && bnum) {
@@ -291,7 +294,25 @@ var require_semver = __commonJS({
291
294
  if (!(other instanceof _SemVer)) {
292
295
  other = new _SemVer(other, this.options);
293
296
  }
294
- return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
297
+ if (this.major < other.major) {
298
+ return -1;
299
+ }
300
+ if (this.major > other.major) {
301
+ return 1;
302
+ }
303
+ if (this.minor < other.minor) {
304
+ return -1;
305
+ }
306
+ if (this.minor > other.minor) {
307
+ return 1;
308
+ }
309
+ if (this.patch < other.patch) {
310
+ return -1;
311
+ }
312
+ if (this.patch > other.patch) {
313
+ return 1;
314
+ }
315
+ return 0;
295
316
  }
296
317
  comparePre(other) {
297
318
  if (!(other instanceof _SemVer)) {
@@ -1052,6 +1073,7 @@ var require_range = __commonJS({
1052
1073
  return result;
1053
1074
  };
1054
1075
  var parseComparator = (comp, options) => {
1076
+ comp = comp.replace(re[t.BUILD], "");
1055
1077
  debug("comp", comp, options);
1056
1078
  comp = replaceCarets(comp, options);
1057
1079
  debug("caret", comp);