pruneStaleContainers function
Implementation
Future<void> pruneStaleContainers(
String buildJobId,
String runId, {
required String workerId,
}) async {
try {
final prefix = 'openci-$workerId-';
final current = containerName(workerId: workerId, buildJobId: buildJobId);
final result = await Process.run('docker', [
'ps',
'-a',
'--format',
'{{.Names}}',
'--filter',
'name=$prefix',
]);
if (result.exitCode != 0) return;
final containers = LineSplitter.split(
result.stdout.toString(),
).where((name) => name.isNotEmpty && name != current).toList();
for (final container in containers) {
await logInfo(buildJobId, runId, 'Removing stale container: $container');
await stopAndRemoveContainer(container);
}
} catch (e) {
await logWarning(buildJobId, runId, 'Error pruning stale containers: $e');
}
}