buildEnvVars function
Implementation
Future<Map<String, String>> buildEnvVars({
required ApiClient apiClient,
required BuildJob buildJob,
required String projectId,
required String buildJobId,
required String runId,
}) async {
final tagName = buildJob.tagName;
final tagVersion = tagName != null && tagName.isNotEmpty
? (tagName.startsWith('v') || tagName.startsWith('V')
? tagName.substring(1)
: tagName)
: null;
final teamId = buildJob.teamId;
final envVars = <String, String>{
'LANG': 'en_US.UTF-8',
'OPENCI_PROJECT_ID': projectId,
'OPENCI_BUILD_JOB_ID': buildJobId,
if (apiClient.serverUrl != null) 'OPENCI_SERVER_URL': apiClient.serverUrl!,
if (tagName != null && tagName.isNotEmpty) 'OPENCI_TAG': tagName,
'OPENCI_TAG_VERSION': tagVersion ?? '',
'OPENCI_TEAM_ID': teamId ?? '',
'OPENCI_ID_TOKEN': await apiClient.authManager.getIdToken(
forceRefresh: true,
),
};
if (teamId != null) {
try {
final secretMetadataList = await apiClient.getSecrets(teamId);
final hasBuildNumber = secretMetadataList.any(
(meta) => meta['name'] == 'OPENCI_BUILD_NUMBER',
);
if (hasBuildNumber) {
final value = await apiClient.getSecretValue(
teamId,
'OPENCI_BUILD_NUMBER',
);
if (value.isNotEmpty) {
final numValue = int.tryParse(value);
if (numValue != null) {
final nextVal = '${numValue + 1}';
await apiClient.saveSecret(
teamId: teamId,
name: 'OPENCI_BUILD_NUMBER',
value: nextVal,
);
await logInfo(
buildJobId,
runId,
'Auto-incremented OPENCI_BUILD_NUMBER: $value → $nextVal',
);
envVars['OPENCI_BUILD_NUMBER'] = nextVal;
} else {
envVars['OPENCI_BUILD_NUMBER'] = value;
}
}
}
} catch (e) {
await logWarning(
buildJobId,
runId,
'Failed to load or auto-increment OPENCI_BUILD_NUMBER: $e',
);
}
}
if (tagName != null && tagName.isNotEmpty) {
await logInfo(
buildJobId,
runId,
'Tag: $tagName (available as \$OPENCI_TAG)',
);
}
return envVars;
}