Skip to content

Commit

Permalink
Reduce amount of evergreen config includes (#1362)
Browse files Browse the repository at this point in the history
  • Loading branch information
alcaeus committed Jul 17, 2024
1 parent c700dfc commit 9a42fd3
Show file tree
Hide file tree
Showing 53 changed files with 1,074 additions and 1,164 deletions.
45 changes: 8 additions & 37 deletions .evergreen/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,40 +65,11 @@ include:
- filename: .evergreen/config/test-variants.yml

# Automatically generated files
- filename: .evergreen/config/generated/build/build-php-8.3.yml
- filename: .evergreen/config/generated/build/build-php-8.2.yml
- filename: .evergreen/config/generated/build/build-php-8.1.yml
- filename: .evergreen/config/generated/build/build-php-8.0.yml
- filename: .evergreen/config/generated/build/build-php-7.4.yml
- filename: .evergreen/config/generated/test/local-latest.yml
- filename: .evergreen/config/generated/test/local-rapid.yml
- filename: .evergreen/config/generated/test/local-7.0.yml
- filename: .evergreen/config/generated/test/local-6.0.yml
- filename: .evergreen/config/generated/test/local-5.0.yml
- filename: .evergreen/config/generated/test/local-4.4.yml
- filename: .evergreen/config/generated/test/local-4.2.yml
- filename: .evergreen/config/generated/test/local-4.0.yml
- filename: .evergreen/config/generated/test/local-3.6.yml
- filename: .evergreen/config/generated/test/load-balanced-latest.yml
- filename: .evergreen/config/generated/test/load-balanced-rapid.yml
- filename: .evergreen/config/generated/test/load-balanced-7.0.yml
- filename: .evergreen/config/generated/test/load-balanced-6.0.yml
- filename: .evergreen/config/generated/test/load-balanced-5.0.yml
- filename: .evergreen/config/generated/test/require-api-version-latest.yml
- filename: .evergreen/config/generated/test/require-api-version-rapid.yml
- filename: .evergreen/config/generated/test/require-api-version-7.0.yml
- filename: .evergreen/config/generated/test/require-api-version-6.0.yml
- filename: .evergreen/config/generated/test/require-api-version-5.0.yml
- filename: .evergreen/config/generated/test/csfle-latest.yml
- filename: .evergreen/config/generated/test/csfle-rapid.yml
- filename: .evergreen/config/generated/test/csfle-7.0.yml
- filename: .evergreen/config/generated/test/csfle-6.0.yml
- filename: .evergreen/config/generated/test/csfle-5.0.yml
- filename: .evergreen/config/generated/test/csfle-4.4.yml
- filename: .evergreen/config/generated/test/csfle-4.2.yml
- filename: .evergreen/config/generated/test-variant/latest-php-8.3.yml
- filename: .evergreen/config/generated/test-variant/replicaset-php-8.2.yml
- filename: .evergreen/config/generated/test-variant/replicaset-php-8.1.yml
- filename: .evergreen/config/generated/test-variant/replicaset-php-8.0.yml
- filename: .evergreen/config/generated/test-variant/replicaset-php-7.4.yml
- filename: .evergreen/config/generated/test-variant/lowest-php-7.4.yml
- filename: .evergreen/config/generated/build/build-extension.yml
- filename: .evergreen/config/generated/test/local.yml
- filename: .evergreen/config/generated/test/load-balanced.yml
- filename: .evergreen/config/generated/test/require-api-version.yml
- filename: .evergreen/config/generated/test/csfle.yml
- filename: .evergreen/config/generated/test-variant/latest.yml
- filename: .evergreen/config/generated/test-variant/replicaset-only.yml
- filename: .evergreen/config/generated/test-variant/lowest.yml
43 changes: 24 additions & 19 deletions .evergreen/config/generate-config.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,51 +47,56 @@
$allFiles = [];

// Build tasks
$allFiles[] = generateConfigs('build', 'phpVersion', 'build-extension.yml', 'build-php-%s', $supportedPhpVersions);
$allFiles[] = generateConfigs('tasks', 'build', 'phpVersion', 'build-extension.yml', $supportedPhpVersions);

// Test tasks
$allFiles[] = generateConfigs('test', 'mongodbVersion', 'local.yml', 'local-%s', $localServerVersions);
$allFiles[] = generateConfigs('test', 'mongodbVersion', 'load-balanced.yml', 'load-balanced-%s', $loadBalancedServerVersions);
$allFiles[] = generateConfigs('test', 'mongodbVersion', 'require-api-version.yml', 'require-api-version-%s', $requireApiServerVersions);
$allFiles[] = generateConfigs('test', 'mongodbVersion', 'csfle.yml', 'csfle-%s', $csfleServerVersions);
$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'local.yml', $localServerVersions);
$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'load-balanced.yml', $loadBalancedServerVersions);
$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'require-api-version.yml', $requireApiServerVersions);
$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'csfle.yml', $csfleServerVersions);

// Test variants
$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'latest.yml', 'latest-php-%s', [$latestPhpVersion]);
$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'replicaset-only.yml', 'replicaset-php-%s', array_diff($supportedPhpVersions, [$latestPhpVersion]));
$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'lowest.yml', 'lowest-php-%s', [$lowestPhpVersion]);
$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'latest.yml', [$latestPhpVersion]);
$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'replicaset-only.yml', array_diff($supportedPhpVersions, [$latestPhpVersion]));
$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'lowest.yml', [$lowestPhpVersion]);

echo "Generated config. Use the following list to import files:\n";
echo implode("\n", array_map('getImportConfig', array_merge(...$allFiles))) . "\n";
echo implode("\n", array_map('getImportConfig', $allFiles)) . "\n";

function getImportConfig(string $filename): string
{
return '- filename: ' . $filename;
}

function generateConfigs(
string $type,
string $directory,
string $replacementName,
string $templateFile,
string $outputFormat,
array $versions,
): array {
): string {
$templateRelativePath = 'templates/' . $directory . '/' . $templateFile;
$template = file_get_contents(__DIR__ . '/' . $templateRelativePath);
$header = sprintf(
'# This file is generated automatically - please edit the "%s" template file instead.',
$templateRelativePath
);

$files = [];
$contents = <<<HEADER
$header
$type:
foreach ($versions as $version) {
$filename = sprintf('/generated/%s/' . $outputFormat . '.yml', $directory, $version);
$files[] = '.evergreen/config' . $filename;

$replacements = ['%' . $replacementName . '%' => $version];
HEADER;

file_put_contents(__DIR__ . $filename, $header . "\n" . strtr($template, $replacements));
foreach ($versions as $version) {
$contents .= strtr(
$template,
['%' . $replacementName . '%' => $version],
);
}

return $files;
$filename = '/generated/' . $directory . '/' . $templateFile;
file_put_contents(__DIR__ . $filename, $contents);

return '.evergreen/config' . $filename;
}
192 changes: 192 additions & 0 deletions .evergreen/config/generated/build/build-extension.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 0 additions & 40 deletions .evergreen/config/generated/build/build-php-7.4.yml

This file was deleted.

40 changes: 0 additions & 40 deletions .evergreen/config/generated/build/build-php-8.0.yml

This file was deleted.

Loading

0 comments on commit 9a42fd3

Please sign in to comment.