claimNextJob method
Claims the next queued build job for this platform.
Implementation
Future<BuildJob?> claimNextJob(String? customPattern) async {
final runsOnPattern =
customPattern ?? (Platform.isLinux ? '%ubuntu%' : '%macos%');
if (serverUrl != null && serverUrl!.isNotEmpty) {
final url = Uri.parse('$serverUrl/builds/claim');
final idToken = await authManager.getIdToken();
final response = await http.post(
url,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer $idToken',
},
body: jsonEncode({'runsOnPattern': runsOnPattern}),
);
if (response.statusCode >= 200 && response.statusCode < 300) {
final data = jsonDecode(response.body) as Map<String, dynamic>;
final jobJson = data['job'] as Map<String, dynamic>?;
if (jobJson == null) return null;
return BuildJob.fromJson(jobJson);
}
throw HttpException(
'Failed to claim job from server: ${response.statusCode} ${response.body}',
);
}
final response = await callApi('claim-next-job', {
'runsOnPattern': runsOnPattern,
});
final jobJson = response['job'] as Map<String, dynamic>?;
if (jobJson == null) return null;
return BuildJob.fromJson(jobJson);
}