cdk-github-microvm-runners 0.1.6__tar.gz → 0.1.8__tar.gz
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.
- {cdk_github_microvm_runners-0.1.6/src/cdk_github_microvm_runners.egg-info → cdk_github_microvm_runners-0.1.8}/PKG-INFO +1 -1
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/setup.py +2 -2
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners/__init__.py +278 -7
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners/_jsii/__init__.py +2 -2
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners/_jsii/bin/cdk-github-microvm-runners +2 -2
- cdk_github_microvm_runners-0.1.8/src/cdk_github_microvm_runners/_jsii/cdk-github-microvm-runners@0.1.8.jsii.tgz +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8/src/cdk_github_microvm_runners.egg-info}/PKG-INFO +1 -1
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners.egg-info/SOURCES.txt +1 -1
- cdk_github_microvm_runners-0.1.6/src/cdk_github_microvm_runners/_jsii/cdk-github-microvm-runners@0.1.6.jsii.tgz +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/LICENSE +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/MANIFEST.in +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/README.md +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/pyproject.toml +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/setup.cfg +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners/py.typed +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners.egg-info/dependency_links.txt +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners.egg-info/requires.txt +0 -0
- {cdk_github_microvm_runners-0.1.6 → cdk_github_microvm_runners-0.1.8}/src/cdk_github_microvm_runners.egg-info/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@ kwargs = json.loads(
|
|
|
5
5
|
"""
|
|
6
6
|
{
|
|
7
7
|
"name": "cdk-github-microvm-runners",
|
|
8
|
-
"version": "0.1.
|
|
8
|
+
"version": "0.1.8",
|
|
9
9
|
"description": "CDK construct for running GitHub Actions jobs on AWS Lambda MicroVMs, with one ephemeral runner per job.",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"url": "https://runnerset.dev",
|
|
@@ -26,7 +26,7 @@ kwargs = json.loads(
|
|
|
26
26
|
],
|
|
27
27
|
"package_data": {
|
|
28
28
|
"cdk_github_microvm_runners._jsii": [
|
|
29
|
-
"cdk-github-microvm-runners@0.1.
|
|
29
|
+
"cdk-github-microvm-runners@0.1.8.jsii.tgz"
|
|
30
30
|
],
|
|
31
31
|
"cdk_github_microvm_runners": [
|
|
32
32
|
"py.typed"
|
|
@@ -1112,18 +1112,24 @@ class GithubMicrovmRunnersMetrics(
|
|
|
1112
1112
|
runner_set_id: builtins.str,
|
|
1113
1113
|
dead_letter_queue: "_aws_cdk_aws_sqs_ceddda9d.IQueue",
|
|
1114
1114
|
emit_metrics: typing.Optional[builtins.bool] = None,
|
|
1115
|
+
janitor_interval: typing.Optional["_aws_cdk_ceddda9d.Duration"] = None,
|
|
1116
|
+
queued_job_scan_unavailable: typing.Optional[builtins.bool] = None,
|
|
1115
1117
|
) -> None:
|
|
1116
1118
|
'''
|
|
1117
1119
|
:param runner_set_id: -
|
|
1118
1120
|
:param dead_letter_queue: -
|
|
1119
1121
|
:param emit_metrics: Whether the runner set reports the metrics this class names, which is ``GithubMicrovmRunnersProps.emitMetrics``. Every accessor except ``deadLetterQueueDepth`` depends on it, though they all return a ``Metric`` either way; only the two alarms over those metrics refuse to synthesize.
|
|
1122
|
+
:param janitor_interval: The runner set's ``GithubMicrovmRunnersProps.janitorInterval``, which sets how often the queued-job-age metric is emitted. {@link queuedJobAgeAlarm} derives its aggregation period from this so the alarm never evaluates a period the janitor could not have written a datapoint into (which would make missing-data-breaching page permanently). Optional and trailing to keep this constructor backward compatible and jsii-clean.
|
|
1123
|
+
:param queued_job_scan_unavailable: Whether the queued-job scan is unavailable for this runner set's auth + scope combination \\u2014 true only under PAT auth with org scope, where ``listInstallationRepos`` cannot enumerate the org's repos (GitHub 403s a PAT there). The janitor skips the scan in that configuration, so ``oldestQueuedJobSeconds``/``queuedJobs`` never report and {@link queuedJobAgeAlarm} throws at synth rather than synthesizing an alarm that could only ever page on missing data.
|
|
1120
1124
|
'''
|
|
1121
1125
|
if __debug__:
|
|
1122
1126
|
type_hints = cached_type_hints(_typecheckingstub__8c3f47f3bf65ddc91d8c105e318179909d2860c56e34cc7b699066e3f7952170)
|
|
1123
1127
|
check_type(argname="argument runner_set_id", value=runner_set_id, expected_type=type_hints["runner_set_id"])
|
|
1124
1128
|
check_type(argname="argument dead_letter_queue", value=dead_letter_queue, expected_type=type_hints["dead_letter_queue"])
|
|
1125
1129
|
check_type(argname="argument emit_metrics", value=emit_metrics, expected_type=type_hints["emit_metrics"])
|
|
1126
|
-
|
|
1130
|
+
check_type(argname="argument janitor_interval", value=janitor_interval, expected_type=type_hints["janitor_interval"])
|
|
1131
|
+
check_type(argname="argument queued_job_scan_unavailable", value=queued_job_scan_unavailable, expected_type=type_hints["queued_job_scan_unavailable"])
|
|
1132
|
+
jsii.create(self.__class__, self, [runner_set_id, dead_letter_queue, emit_metrics, janitor_interval, queued_job_scan_unavailable])
|
|
1127
1133
|
|
|
1128
1134
|
@jsii.member(jsii_name="cancelledBeforeLaunch")
|
|
1129
1135
|
def cancelled_before_launch(
|
|
@@ -1175,6 +1181,51 @@ class GithubMicrovmRunnersMetrics(
|
|
|
1175
1181
|
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1176
1182
|
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "capacityRejected", [runner_class_label]))
|
|
1177
1183
|
|
|
1184
|
+
@jsii.member(jsii_name="capacityRejectedAlarm")
|
|
1185
|
+
def capacity_rejected_alarm(
|
|
1186
|
+
self,
|
|
1187
|
+
scope: "_constructs_77d1e7e8.Construct",
|
|
1188
|
+
runner_class_label: builtins.str,
|
|
1189
|
+
*,
|
|
1190
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
1191
|
+
period: typing.Optional["_aws_cdk_ceddda9d.Duration"] = None,
|
|
1192
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
1193
|
+
) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Alarm":
|
|
1194
|
+
'''Alarm when the MicroVM service is rejecting a runner class's launches for capacity — the class's quota signal.
|
|
1195
|
+
|
|
1196
|
+
Each rejection is a job queueing
|
|
1197
|
+
behind the account's MicroVM memory quota or the set's ``maxConcurrentVms``
|
|
1198
|
+
rather than running, and spends one of its ``maxReceiveCount`` redrives on
|
|
1199
|
+
the way to the dead-letter queue. It fires on one rejection in each of
|
|
1200
|
+
three consecutive 5-minute periods, so a lone burst that the next launch
|
|
1201
|
+
clears does not page; pass ``RunnerAlarmOptions`` to change that. See
|
|
1202
|
+
docs/service-quotas.md for raising the ceiling.
|
|
1203
|
+
|
|
1204
|
+
``capacityRejected`` is dimensioned per runner class, so this builds one
|
|
1205
|
+
alarm per ``runnerClassLabel`` under an id unique to that label — call it
|
|
1206
|
+
once per class you want watched, in the same scope, without collision.
|
|
1207
|
+
|
|
1208
|
+
Requires ``GithubMicrovmRunnersProps.emitMetrics``, and throws at synth
|
|
1209
|
+
without it.
|
|
1210
|
+
|
|
1211
|
+
:param scope: -
|
|
1212
|
+
:param runner_class_label: -
|
|
1213
|
+
:param evaluation_periods: Consecutive breaching periods before the alarm fires. Default: 1 (3 for the stuck-launch alarm)
|
|
1214
|
+
:param period: Aggregation period for the metric. Default: Duration.minutes(5)
|
|
1215
|
+
:param threshold: Value at or above which the alarm fires. Default: 1
|
|
1216
|
+
|
|
1217
|
+
:default: threshold 1, 3 evaluation periods, 5-minute period
|
|
1218
|
+
'''
|
|
1219
|
+
if __debug__:
|
|
1220
|
+
type_hints = cached_type_hints(_typecheckingstub__766ef83db1daeed0e3e21d670b01373e3a0da9c3eb9f7dc571c6f37a32dd05a6)
|
|
1221
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1222
|
+
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1223
|
+
options = RunnerAlarmOptions(
|
|
1224
|
+
evaluation_periods=evaluation_periods, period=period, threshold=threshold
|
|
1225
|
+
)
|
|
1226
|
+
|
|
1227
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Alarm", jsii.invoke(self, "capacityRejectedAlarm", [scope, runner_class_label, options]))
|
|
1228
|
+
|
|
1178
1229
|
@jsii.member(jsii_name="coldBoot")
|
|
1179
1230
|
def cold_boot(
|
|
1180
1231
|
self,
|
|
@@ -1265,6 +1316,28 @@ class GithubMicrovmRunnersMetrics(
|
|
|
1265
1316
|
'''Janitor sweep count: VMs terminated for having run longer than ``maxJobDuration`` plus the platform's own grace.'''
|
|
1266
1317
|
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "lifetimeKills", []))
|
|
1267
1318
|
|
|
1319
|
+
@jsii.member(jsii_name="oldestQueuedJobSeconds")
|
|
1320
|
+
def oldest_queued_job_seconds(
|
|
1321
|
+
self,
|
|
1322
|
+
runner_class_label: builtins.str,
|
|
1323
|
+
) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1324
|
+
'''Janitor per-class gauge (seconds): how long the oldest queued job this class owns has waited, measured read-only each sweep, or 0 when the class has nothing queued.
|
|
1325
|
+
|
|
1326
|
+
A job is owned by a class when every runner label it
|
|
1327
|
+
requests beyond ``self-hosted`` is that class's label — GitHub's own
|
|
1328
|
+
matching — so another runner set's jobs are excluded. Emitted every sweep
|
|
1329
|
+
for every class, which is what lets {@link queuedJobAgeAlarm} treat missing
|
|
1330
|
+
data as breaching.
|
|
1331
|
+
|
|
1332
|
+
Reported as an average across a period; the alarm reads it as a maximum.
|
|
1333
|
+
|
|
1334
|
+
:param runner_class_label: -
|
|
1335
|
+
'''
|
|
1336
|
+
if __debug__:
|
|
1337
|
+
type_hints = cached_type_hints(_typecheckingstub__3707b7071d9a073a162ee86679ac2882d7fddadbd420da462daf135a440aea31)
|
|
1338
|
+
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1339
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "oldestQueuedJobSeconds", [runner_class_label]))
|
|
1340
|
+
|
|
1268
1341
|
@jsii.member(jsii_name="orphansReaped")
|
|
1269
1342
|
def orphans_reaped(self) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1270
1343
|
'''Janitor sweep count: running VMs that belong to this runner set but have no row in the runner table, reaped once a second sweep has seen the same VM unaccounted for.'''
|
|
@@ -1328,6 +1401,90 @@ class GithubMicrovmRunnersMetrics(
|
|
|
1328
1401
|
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1329
1402
|
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "poolTarget", [runner_class_label]))
|
|
1330
1403
|
|
|
1404
|
+
@jsii.member(jsii_name="queuedJobAgeAlarm")
|
|
1405
|
+
def queued_job_age_alarm(
|
|
1406
|
+
self,
|
|
1407
|
+
scope: "_constructs_77d1e7e8.Construct",
|
|
1408
|
+
runner_class_label: builtins.str,
|
|
1409
|
+
*,
|
|
1410
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
1411
|
+
period: typing.Optional["_aws_cdk_ceddda9d.Duration"] = None,
|
|
1412
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
1413
|
+
) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Alarm":
|
|
1414
|
+
'''Alarm when a runner class has a job that has waited queued far longer than a runner should take to appear — the signal that NO launch happened at all, which the reap-based alarms structurally cannot catch.
|
|
1415
|
+
|
|
1416
|
+
A misrouted or
|
|
1417
|
+
dropped webhook, a GitHub App failure, a launch bug, or a MicroVM quota
|
|
1418
|
+
wall all leave the same fingerprint: a job sits ``queued`` and no VM is ever
|
|
1419
|
+
created for it, so there is no stuck runner to reap and no error to count.
|
|
1420
|
+
|
|
1421
|
+
The janitor measures the oldest queued job per class every sweep, so this
|
|
1422
|
+
fires when a class's oldest queued job crosses the threshold (20 minutes
|
|
1423
|
+
by default) over its aggregation period, read as a maximum. It also
|
|
1424
|
+
**treats missing data as breaching**: the metric is emitted every sweep,
|
|
1425
|
+
so its absence means the janitor itself has gone silent — itself a failure
|
|
1426
|
+
worth paging on — rather than "nothing queued". A sweep that overruns its
|
|
1427
|
+
Lambda timeout emits no datapoint for that period, so a persistently slow
|
|
1428
|
+
or crashing janitor reads exactly like a silent one and pages: that is the
|
|
1429
|
+
intended "janitor went silent" signal, not a false alarm.
|
|
1430
|
+
|
|
1431
|
+
Because absence pages, the aggregation period must be long enough that the
|
|
1432
|
+
janitor writes at least one datapoint into every period it evaluates. A
|
|
1433
|
+
5-minute period against a 10-minute ``janitorInterval`` would leave every
|
|
1434
|
+
other period empty and page forever. So the default period is
|
|
1435
|
+
``max(5 min, 2 × janitorInterval)`` rounded up to a CloudWatch-valid whole
|
|
1436
|
+
minute (two sweeps per period, so a single missed sweep does not trip it):
|
|
1437
|
+
10 minutes at the default 5-minute interval, 20 minutes at a 10-minute
|
|
1438
|
+
interval. A caller-supplied ``period`` shorter than ``janitorInterval`` is
|
|
1439
|
+
rejected at synth — it would guarantee empty periods and permanent false
|
|
1440
|
+
pages.
|
|
1441
|
+
|
|
1442
|
+
``oldestQueuedJobSeconds`` is dimensioned per runner class, so this builds
|
|
1443
|
+
one alarm per ``runnerClassLabel`` under an id unique to that label — call it
|
|
1444
|
+
once per class you want watched, in the same scope, without collision.
|
|
1445
|
+
|
|
1446
|
+
Requires ``GithubMicrovmRunnersProps.emitMetrics``, and throws at synth
|
|
1447
|
+
without it. Also throws at synth under PAT auth with org scope, where the
|
|
1448
|
+
queued-job scan cannot enumerate the org's repos and never emits the
|
|
1449
|
+
metric this alarm watches.
|
|
1450
|
+
|
|
1451
|
+
:param scope: -
|
|
1452
|
+
:param runner_class_label: -
|
|
1453
|
+
:param evaluation_periods: Consecutive breaching periods before the alarm fires. Default: 1 (3 for the stuck-launch alarm)
|
|
1454
|
+
:param period: Aggregation period for the metric. Default: Duration.minutes(5)
|
|
1455
|
+
:param threshold: Value at or above which the alarm fires. Default: 1
|
|
1456
|
+
|
|
1457
|
+
:default: threshold 1200 (seconds), 1 evaluation period, period max(5 min, 2× janitorInterval), missing data breaching
|
|
1458
|
+
'''
|
|
1459
|
+
if __debug__:
|
|
1460
|
+
type_hints = cached_type_hints(_typecheckingstub__1979d102d04c227dd18909704493a6adef7296680ab6041ecd483a5a18a5d3b0)
|
|
1461
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1462
|
+
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1463
|
+
options = RunnerAlarmOptions(
|
|
1464
|
+
evaluation_periods=evaluation_periods, period=period, threshold=threshold
|
|
1465
|
+
)
|
|
1466
|
+
|
|
1467
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Alarm", jsii.invoke(self, "queuedJobAgeAlarm", [scope, runner_class_label, options]))
|
|
1468
|
+
|
|
1469
|
+
@jsii.member(jsii_name="queuedJobs")
|
|
1470
|
+
def queued_jobs(
|
|
1471
|
+
self,
|
|
1472
|
+
runner_class_label: builtins.str,
|
|
1473
|
+
) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1474
|
+
'''Janitor per-class gauge: queued jobs this class owned as of the last sweep (see {@link oldestQueuedJobSeconds} for ownership).
|
|
1475
|
+
|
|
1476
|
+
:param runner_class_label: -
|
|
1477
|
+
'''
|
|
1478
|
+
if __debug__:
|
|
1479
|
+
type_hints = cached_type_hints(_typecheckingstub__d38f8ba33b74dc11c22a9ed4e77ba6e24efa39e18f1755889ccf6ebfca51ba3e)
|
|
1480
|
+
check_type(argname="argument runner_class_label", value=runner_class_label, expected_type=type_hints["runner_class_label"])
|
|
1481
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "queuedJobs", [runner_class_label]))
|
|
1482
|
+
|
|
1483
|
+
@jsii.member(jsii_name="queuedJobScanTruncated")
|
|
1484
|
+
def queued_job_scan_truncated(self) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1485
|
+
'''Janitor per-sweep flag: 1 when a sweep hit its GitHub-listing cap and did not scan every queued job, so ``oldestQueuedJobSeconds``/``queuedJobs`` may under-report that sweep.'''
|
|
1486
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "queuedJobScanTruncated", []))
|
|
1487
|
+
|
|
1331
1488
|
@jsii.member(jsii_name="stuckClaimsRelaunched")
|
|
1332
1489
|
def stuck_claims_relaunched(self) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1333
1490
|
'''Janitor sweep count: launches that were claimed but never served, re-launched from the orphaned claim.
|
|
@@ -1385,6 +1542,51 @@ class GithubMicrovmRunnersMetrics(
|
|
|
1385
1542
|
'''Janitor sweep count: runners that registered with GitHub and then sat idle past ``idleRunnerGraceSeconds``, reaped once a second sweep has seen them the same way.'''
|
|
1386
1543
|
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Metric", jsii.invoke(self, "stuckRunnersReaped", []))
|
|
1387
1544
|
|
|
1545
|
+
@jsii.member(jsii_name="stuckRunnersReapedAlarm")
|
|
1546
|
+
def stuck_runners_reaped_alarm(
|
|
1547
|
+
self,
|
|
1548
|
+
scope: "_constructs_77d1e7e8.Construct",
|
|
1549
|
+
*,
|
|
1550
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
1551
|
+
period: typing.Optional["_aws_cdk_ceddda9d.Duration"] = None,
|
|
1552
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
1553
|
+
) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Alarm":
|
|
1554
|
+
'''Alarm when the janitor is reaping stuck runners in volume, the signal a refused runner version leaves.
|
|
1555
|
+
|
|
1556
|
+
A stuck runner is one that registered with
|
|
1557
|
+
GitHub and then sat idle past ``idleRunnerGraceSeconds``, reaped once a
|
|
1558
|
+
second sweep saw it the same way; a healthy runner set reaps the odd one.
|
|
1559
|
+
|
|
1560
|
+
The threshold comes from an incident. On 2026-09-24 GitHub refused a stale
|
|
1561
|
+
runner version, so every launched runner registered and then went nowhere;
|
|
1562
|
+
``stuckRunnersReaped`` ran 14–28 an hour for about six hours, peaking at
|
|
1563
|
+
8–10 in a single five-minute sweep, against a month-long baseline that
|
|
1564
|
+
never exceeded 3 in any hour. The three ready-made alarms already on this
|
|
1565
|
+
class stayed OK throughout — nothing else caught it. A sum of 6 or more
|
|
1566
|
+
over one fifteen-minute period sits well above that baseline (≤0.75 per
|
|
1567
|
+
quarter-hour) and well below the incident's rate, so it fires about
|
|
1568
|
+
fifteen minutes into a refusal and stays quiet otherwise; pass
|
|
1569
|
+
``RunnerAlarmOptions`` to change the threshold, window, or count.
|
|
1570
|
+
|
|
1571
|
+
Requires ``GithubMicrovmRunnersProps.emitMetrics``, and throws at synth
|
|
1572
|
+
without it.
|
|
1573
|
+
|
|
1574
|
+
:param scope: -
|
|
1575
|
+
:param evaluation_periods: Consecutive breaching periods before the alarm fires. Default: 1 (3 for the stuck-launch alarm)
|
|
1576
|
+
:param period: Aggregation period for the metric. Default: Duration.minutes(5)
|
|
1577
|
+
:param threshold: Value at or above which the alarm fires. Default: 1
|
|
1578
|
+
|
|
1579
|
+
:default: threshold 6, 1 evaluation period, 15-minute period
|
|
1580
|
+
'''
|
|
1581
|
+
if __debug__:
|
|
1582
|
+
type_hints = cached_type_hints(_typecheckingstub__6f5c8012e4b0017c22f5d816719e3ba7caf72731c8c17dc898930d5e088e3a0a)
|
|
1583
|
+
check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
|
|
1584
|
+
options = RunnerAlarmOptions(
|
|
1585
|
+
evaluation_periods=evaluation_periods, period=period, threshold=threshold
|
|
1586
|
+
)
|
|
1587
|
+
|
|
1588
|
+
return typing.cast("_aws_cdk_aws_cloudwatch_ceddda9d.Alarm", jsii.invoke(self, "stuckRunnersReapedAlarm", [scope, options]))
|
|
1589
|
+
|
|
1388
1590
|
@jsii.member(jsii_name="suspectsCleared")
|
|
1389
1591
|
def suspects_cleared(self) -> "_aws_cdk_aws_cloudwatch_ceddda9d.Metric":
|
|
1390
1592
|
'''Janitor sweep count: VMs an earlier sweep had marked as suspect, cleared because this sweep found them accounted for or working again.'''
|
|
@@ -2918,7 +3120,7 @@ class RunnerImage(
|
|
|
2918
3120
|
:param additional_os_capabilities: Extra Linux capabilities granted to the MicroVM's operating system. Default: ['ALL']
|
|
2919
3121
|
:param assets: Extra files and directories to copy into the image.
|
|
2920
3122
|
:param environment: Extra environment variables baked into the image.
|
|
2921
|
-
:param runner_version: ``actions/runner`` release to install. Default: RunnerVersion.
|
|
3123
|
+
:param runner_version: ``actions/runner`` release to install. Default: RunnerVersion.libraryDefault()
|
|
2922
3124
|
:param setup_commands: Extra ``RUN`` commands, executed in order after packages, assets, and environment variables are laid down.
|
|
2923
3125
|
:param system_packages: Extra ``dnf`` packages to install alongside the fixed base set.
|
|
2924
3126
|
:param toolchains: Language runtimes to bake into the hosted tool cache, so ``actions/setup-*`` finds them without downloading anything. An image with none of these is smaller; one toolchain entry is needed per version your workflows ask for. Default: []
|
|
@@ -3024,7 +3226,7 @@ class RunnerImageOptions:
|
|
|
3024
3226
|
:param additional_os_capabilities: Extra Linux capabilities granted to the MicroVM's operating system. Default: ['ALL']
|
|
3025
3227
|
:param assets: Extra files and directories to copy into the image.
|
|
3026
3228
|
:param environment: Extra environment variables baked into the image.
|
|
3027
|
-
:param runner_version: ``actions/runner`` release to install. Default: RunnerVersion.
|
|
3229
|
+
:param runner_version: ``actions/runner`` release to install. Default: RunnerVersion.libraryDefault()
|
|
3028
3230
|
:param setup_commands: Extra ``RUN`` commands, executed in order after packages, assets, and environment variables are laid down.
|
|
3029
3231
|
:param system_packages: Extra ``dnf`` packages to install alongside the fixed base set.
|
|
3030
3232
|
:param toolchains: Language runtimes to bake into the hosted tool cache, so ``actions/setup-*`` finds them without downloading anything. An image with none of these is smaller; one toolchain entry is needed per version your workflows ask for. Default: []
|
|
@@ -3081,7 +3283,7 @@ class RunnerImageOptions:
|
|
|
3081
3283
|
def runner_version(self) -> typing.Optional["RunnerVersion"]:
|
|
3082
3284
|
'''``actions/runner`` release to install.
|
|
3083
3285
|
|
|
3084
|
-
:default: RunnerVersion.
|
|
3286
|
+
:default: RunnerVersion.libraryDefault()
|
|
3085
3287
|
'''
|
|
3086
3288
|
result = self._values.get("runner_version")
|
|
3087
3289
|
return typing.cast(typing.Optional["RunnerVersion"], result)
|
|
@@ -3487,16 +3689,39 @@ class RunnerVersion(
|
|
|
3487
3689
|
@jsii.member(jsii_name="latest")
|
|
3488
3690
|
@builtins.classmethod
|
|
3489
3691
|
def latest(cls) -> "RunnerVersion":
|
|
3692
|
+
'''(deprecated) Use the ``actions/runner`` release this library currently pins (``DEFAULT_RUNNER_VERSION``).
|
|
3693
|
+
|
|
3694
|
+
:deprecated:
|
|
3695
|
+
|
|
3696
|
+
returns the library's pinned default, not GitHub's latest
|
|
3697
|
+
release; use ``libraryDefault()`` or ``of()``.
|
|
3698
|
+
|
|
3699
|
+
:stability: deprecated
|
|
3700
|
+
|
|
3701
|
+
Example::
|
|
3702
|
+
|
|
3703
|
+
runner_version = RunnerVersion.latest()
|
|
3704
|
+
'''
|
|
3705
|
+
return typing.cast("RunnerVersion", jsii.sinvoke(cls, "latest", []))
|
|
3706
|
+
|
|
3707
|
+
@jsii.member(jsii_name="libraryDefault")
|
|
3708
|
+
@builtins.classmethod
|
|
3709
|
+
def library_default(cls) -> "RunnerVersion":
|
|
3490
3710
|
'''Use the ``actions/runner`` release this library currently pins (``DEFAULT_RUNNER_VERSION``).
|
|
3491
3711
|
|
|
3492
3712
|
No version is carried on the instance; the
|
|
3493
3713
|
image build fills the pinned value in at synth.
|
|
3494
3714
|
|
|
3715
|
+
This is the library's pinned default, not GitHub's latest release. The
|
|
3716
|
+
library bumps the pin as releases ship, because GitHub stops queuing jobs
|
|
3717
|
+
to a runner more than 30 days behind the newest release; see "Keeping the
|
|
3718
|
+
runner current" in ``docs/images.md``.
|
|
3719
|
+
|
|
3495
3720
|
Example::
|
|
3496
3721
|
|
|
3497
|
-
runner_version = RunnerVersion.
|
|
3722
|
+
runner_version = RunnerVersion.library_default()
|
|
3498
3723
|
'''
|
|
3499
|
-
return typing.cast("RunnerVersion", jsii.sinvoke(cls, "
|
|
3724
|
+
return typing.cast("RunnerVersion", jsii.sinvoke(cls, "libraryDefault", []))
|
|
3500
3725
|
|
|
3501
3726
|
@jsii.member(jsii_name="of")
|
|
3502
3727
|
@builtins.classmethod
|
|
@@ -3517,7 +3742,7 @@ class RunnerVersion(
|
|
|
3517
3742
|
@builtins.property
|
|
3518
3743
|
@jsii.member(jsii_name="version")
|
|
3519
3744
|
def version(self) -> typing.Optional[builtins.str]:
|
|
3520
|
-
'''The pinned release, for a version built with ``RunnerVersion.of()``. ``undefined`` for ``RunnerVersion.
|
|
3745
|
+
'''The pinned release, for a version built with ``RunnerVersion.of()``. ``undefined`` for ``RunnerVersion.libraryDefault()``.'''
|
|
3521
3746
|
return typing.cast(typing.Optional[builtins.str], jsii.get(self, "version"))
|
|
3522
3747
|
|
|
3523
3748
|
|
|
@@ -3718,6 +3943,8 @@ def _typecheckingstub__8c3f47f3bf65ddc91d8c105e318179909d2860c56e34cc7b699066e3f
|
|
|
3718
3943
|
runner_set_id: builtins.str,
|
|
3719
3944
|
dead_letter_queue: _aws_cdk_aws_sqs_ceddda9d.IQueue,
|
|
3720
3945
|
emit_metrics: typing.Optional[builtins.bool] = None,
|
|
3946
|
+
janitor_interval: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
|
|
3947
|
+
queued_job_scan_unavailable: typing.Optional[builtins.bool] = None,
|
|
3721
3948
|
) -> None:
|
|
3722
3949
|
"""Type checking stubs"""
|
|
3723
3950
|
pass
|
|
@@ -3734,6 +3961,17 @@ def _typecheckingstub__36d476c29eaf47f8fca7a5205fb5caa5a9749233fb462a093763a6a32
|
|
|
3734
3961
|
"""Type checking stubs"""
|
|
3735
3962
|
pass
|
|
3736
3963
|
|
|
3964
|
+
def _typecheckingstub__766ef83db1daeed0e3e21d670b01373e3a0da9c3eb9f7dc571c6f37a32dd05a6(
|
|
3965
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
3966
|
+
runner_class_label: builtins.str,
|
|
3967
|
+
*,
|
|
3968
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
3969
|
+
period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
|
|
3970
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
3971
|
+
) -> None:
|
|
3972
|
+
"""Type checking stubs"""
|
|
3973
|
+
pass
|
|
3974
|
+
|
|
3737
3975
|
def _typecheckingstub__baf385f806ff6b0b2ae70b9d811654097d3297503bd8bdbafe09f5d9ed879629(
|
|
3738
3976
|
runner_class_label: builtins.str,
|
|
3739
3977
|
) -> None:
|
|
@@ -3756,6 +3994,12 @@ def _typecheckingstub__aca740a7276ae0a556b6b45300b0252ac7d8074b4dd0ab26c6b38fba7
|
|
|
3756
3994
|
"""Type checking stubs"""
|
|
3757
3995
|
pass
|
|
3758
3996
|
|
|
3997
|
+
def _typecheckingstub__3707b7071d9a073a162ee86679ac2882d7fddadbd420da462daf135a440aea31(
|
|
3998
|
+
runner_class_label: builtins.str,
|
|
3999
|
+
) -> None:
|
|
4000
|
+
"""Type checking stubs"""
|
|
4001
|
+
pass
|
|
4002
|
+
|
|
3759
4003
|
def _typecheckingstub__6153c9a068c30f370bb352b26cc502516866238676a7d8139fc2dd0736dff46a(
|
|
3760
4004
|
runner_class_label: builtins.str,
|
|
3761
4005
|
) -> None:
|
|
@@ -3780,6 +4024,23 @@ def _typecheckingstub__1ba8a40c62efe6c3a58896ea614244a8e6823dd3c7db51567ffbadd71
|
|
|
3780
4024
|
"""Type checking stubs"""
|
|
3781
4025
|
pass
|
|
3782
4026
|
|
|
4027
|
+
def _typecheckingstub__1979d102d04c227dd18909704493a6adef7296680ab6041ecd483a5a18a5d3b0(
|
|
4028
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
4029
|
+
runner_class_label: builtins.str,
|
|
4030
|
+
*,
|
|
4031
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
4032
|
+
period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
|
|
4033
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
4034
|
+
) -> None:
|
|
4035
|
+
"""Type checking stubs"""
|
|
4036
|
+
pass
|
|
4037
|
+
|
|
4038
|
+
def _typecheckingstub__d38f8ba33b74dc11c22a9ed4e77ba6e24efa39e18f1755889ccf6ebfca51ba3e(
|
|
4039
|
+
runner_class_label: builtins.str,
|
|
4040
|
+
) -> None:
|
|
4041
|
+
"""Type checking stubs"""
|
|
4042
|
+
pass
|
|
4043
|
+
|
|
3783
4044
|
def _typecheckingstub__e1b4b6b8be54f5289f47b9d302cea17d405e67837d60873b6a6536a2a23457e9(
|
|
3784
4045
|
scope: _constructs_77d1e7e8.Construct,
|
|
3785
4046
|
*,
|
|
@@ -3790,6 +4051,16 @@ def _typecheckingstub__e1b4b6b8be54f5289f47b9d302cea17d405e67837d60873b6a6536a2a
|
|
|
3790
4051
|
"""Type checking stubs"""
|
|
3791
4052
|
pass
|
|
3792
4053
|
|
|
4054
|
+
def _typecheckingstub__6f5c8012e4b0017c22f5d816719e3ba7caf72731c8c17dc898930d5e088e3a0a(
|
|
4055
|
+
scope: _constructs_77d1e7e8.Construct,
|
|
4056
|
+
*,
|
|
4057
|
+
evaluation_periods: typing.Optional[jsii.Number] = None,
|
|
4058
|
+
period: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
|
|
4059
|
+
threshold: typing.Optional[jsii.Number] = None,
|
|
4060
|
+
) -> None:
|
|
4061
|
+
"""Type checking stubs"""
|
|
4062
|
+
pass
|
|
4063
|
+
|
|
3793
4064
|
def _typecheckingstub__971f59e7dc4d5b4245765d41b7dcc4075c4dd91870a15df6b9f345ee393cdc61(
|
|
3794
4065
|
scope: _constructs_77d1e7e8.Construct,
|
|
3795
4066
|
*,
|
|
@@ -19,9 +19,9 @@ import constructs._jsii
|
|
|
19
19
|
|
|
20
20
|
__jsii_assembly__ = jsii.JSIIAssembly.load(
|
|
21
21
|
"cdk-github-microvm-runners",
|
|
22
|
-
"0.1.
|
|
22
|
+
"0.1.8",
|
|
23
23
|
__name__[0:-6],
|
|
24
|
-
"cdk-github-microvm-runners@0.1.
|
|
24
|
+
"cdk-github-microvm-runners@0.1.8.jsii.tgz",
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
__all__ = [
|
|
@@ -9,9 +9,9 @@ if "JSII_RUNTIME_PACKAGE_CACHE" not in os.environ:
|
|
|
9
9
|
|
|
10
10
|
__jsii_assembly__ = jsii.JSIIAssembly.load(
|
|
11
11
|
"cdk-github-microvm-runners",
|
|
12
|
-
"0.1.
|
|
12
|
+
"0.1.8",
|
|
13
13
|
"cdk_github_microvm_runners",
|
|
14
|
-
"cdk-github-microvm-runners@0.1.
|
|
14
|
+
"cdk-github-microvm-runners@0.1.8.jsii.tgz",
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
exit_code = __jsii_assembly__.invokeBinScript(
|
|
Binary file
|
|
@@ -11,5 +11,5 @@ src/cdk_github_microvm_runners.egg-info/dependency_links.txt
|
|
|
11
11
|
src/cdk_github_microvm_runners.egg-info/requires.txt
|
|
12
12
|
src/cdk_github_microvm_runners.egg-info/top_level.txt
|
|
13
13
|
src/cdk_github_microvm_runners/_jsii/__init__.py
|
|
14
|
-
src/cdk_github_microvm_runners/_jsii/cdk-github-microvm-runners@0.1.
|
|
14
|
+
src/cdk_github_microvm_runners/_jsii/cdk-github-microvm-runners@0.1.8.jsii.tgz
|
|
15
15
|
src/cdk_github_microvm_runners/_jsii/bin/cdk-github-microvm-runners
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|