Skip to content

Commit f9dea84

Browse files
committed
Status report: Handle failures determining disk usage
1 parent 81eb6b2 commit f9dea84

File tree

6 files changed

+65
-41
lines changed

6 files changed

+65
-41
lines changed

lib/status-report.js

+4-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/status-report.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/util.js

+22-14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/util.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/status-report.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export interface StatusReportBase {
9696
/** Action runner hardware architecture (context runner.arch). */
9797
runner_arch?: string;
9898
/** Available disk space on the runner, in bytes. */
99-
runner_available_disk_space_bytes: number;
99+
runner_available_disk_space_bytes?: number;
100100
/**
101101
* Version of the runner image, for workflows running on GitHub-hosted runners. Absent otherwise.
102102
*/
@@ -106,7 +106,7 @@ export interface StatusReportBase {
106106
/** Action runner operating system release (x.y.z from os.release()). */
107107
runner_os_release?: string;
108108
/** Total disk space on the runner, in bytes. */
109-
runner_total_disk_space_bytes: number;
109+
runner_total_disk_space_bytes?: number;
110110
/** Time the first action started. Normally the init action. */
111111
started_at: string;
112112
/** State this action is currently in. */
@@ -192,7 +192,7 @@ export async function createStatusReportBase(
192192
actionName: ActionName,
193193
status: ActionStatus,
194194
actionStartedAt: Date,
195-
diskInfo: DiskUsage,
195+
diskInfo: DiskUsage | undefined,
196196
cause?: string,
197197
exception?: string,
198198
): Promise<StatusReportBase> {
@@ -230,9 +230,7 @@ export async function createStatusReportBase(
230230
job_name: jobName,
231231
job_run_uuid: jobRunUUID,
232232
ref,
233-
runner_available_disk_space_bytes: diskInfo.numAvailableBytes,
234233
runner_os: runnerOs,
235-
runner_total_disk_space_bytes: diskInfo.numTotalBytes,
236234
started_at: workflowStartedAt,
237235
status,
238236
testing_environment: testingEnvironment,
@@ -241,6 +239,11 @@ export async function createStatusReportBase(
241239
workflow_run_id: workflowRunID,
242240
};
243241

242+
if (diskInfo) {
243+
statusReport.runner_available_disk_space_bytes = diskInfo.numAvailableBytes;
244+
statusReport.runner_total_disk_space_bytes = diskInfo.numTotalBytes;
245+
}
246+
244247
// Add optional parameters
245248
if (cause) {
246249
statusReport.cause = cause;

src/util.ts

+29-18
Original file line numberDiff line numberDiff line change
@@ -1011,26 +1011,37 @@ export interface DiskUsage {
10111011
numTotalBytes: number;
10121012
}
10131013

1014-
export async function checkDiskUsage(logger?: Logger): Promise<DiskUsage> {
1015-
const diskUsage = await checkDiskSpace(
1016-
getRequiredEnvParam("GITHUB_WORKSPACE"),
1017-
);
1018-
const gbInBytes = 1024 * 1024 * 1024;
1019-
if (logger && diskUsage.free < 2 * gbInBytes) {
1020-
const message =
1021-
"The Actions runner is running low on disk space " +
1022-
`(${(diskUsage.free / gbInBytes).toPrecision(4)} GB available).`;
1023-
if (process.env[EnvVar.HAS_WARNED_ABOUT_DISK_SPACE] !== "true") {
1024-
logger.warning(message);
1025-
} else {
1026-
logger.debug(message);
1014+
export async function checkDiskUsage(
1015+
logger?: Logger,
1016+
): Promise<DiskUsage | undefined> {
1017+
try {
1018+
const diskUsage = await checkDiskSpace(
1019+
getRequiredEnvParam("GITHUB_WORKSPACE"),
1020+
);
1021+
const gbInBytes = 1024 * 1024 * 1024;
1022+
if (logger && diskUsage.free < 2 * gbInBytes) {
1023+
const message =
1024+
"The Actions runner is running low on disk space " +
1025+
`(${(diskUsage.free / gbInBytes).toPrecision(4)} GB available).`;
1026+
if (process.env[EnvVar.HAS_WARNED_ABOUT_DISK_SPACE] !== "true") {
1027+
logger.warning(message);
1028+
} else {
1029+
logger.debug(message);
1030+
}
1031+
core.exportVariable(EnvVar.HAS_WARNED_ABOUT_DISK_SPACE, "true");
10271032
}
1028-
core.exportVariable(EnvVar.HAS_WARNED_ABOUT_DISK_SPACE, "true");
1033+
return {
1034+
numAvailableBytes: diskUsage.free,
1035+
numTotalBytes: diskUsage.size,
1036+
};
1037+
} catch (error) {
1038+
if (logger) {
1039+
logger.warning(
1040+
`Failed to check available disk space: ${getErrorMessage(error)}`,
1041+
);
1042+
}
1043+
return undefined;
10291044
}
1030-
return {
1031-
numAvailableBytes: diskUsage.free,
1032-
numTotalBytes: diskUsage.size,
1033-
};
10341045
}
10351046

10361047
/**

0 commit comments

Comments
 (0)