buildEnvVars function

Future<Map<String, String>> buildEnvVars({
  1. required ApiClient apiClient,
  2. required BuildJob buildJob,
  3. required String projectId,
  4. required String buildJobId,
  5. required String runId,
})

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;
}