diff --git a/.evergreen/config.yml b/.evergreen/config.yml index d7c95eacf..6d0f2854b 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -48,6 +48,7 @@ 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 @@ -78,3 +79,9 @@ include: - 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 diff --git a/.evergreen/config/generate-config.php b/.evergreen/config/generate-config.php index d1a6c866b..87f86635a 100644 --- a/.evergreen/config/generate-config.php +++ b/.evergreen/config/generate-config.php @@ -3,12 +3,16 @@ // Supported PHP versions. Add new versions to the beginning of the list $supportedPhpVersions = [ + '8.3', '8.2', '8.1', '8.0', '7.4' ]; +$latestPhpVersion = max($supportedPhpVersions); +$lowestPhpVersion = min($supportedPhpVersions); + // Supported MongoDB versions. Add new versions after "rapid" $supportedMongoDBVersions = [ 'latest', @@ -51,6 +55,11 @@ $allFiles[] = generateConfigs('test', 'mongodbVersion', 'require-api-version.yml', 'require-api-version-%s', $requireApiServerVersions); $allFiles[] = generateConfigs('test', 'mongodbVersion', 'csfle.yml', 'csfle-%s', $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]); + echo "Generated config. Use the following list to import files:\n"; echo implode("\n", array_map('getImportConfig', array_merge(...$allFiles))) . "\n"; diff --git a/.evergreen/config/generated/build/build-php-8.3.yml b/.evergreen/config/generated/build/build-php-8.3.yml new file mode 100644 index 000000000..1be1779fe --- /dev/null +++ b/.evergreen/config/generated/build/build-php-8.3.yml @@ -0,0 +1,40 @@ +# This file is generated automatically - please edit the "templates/build/build-extension.yml" template file instead. +tasks: + - name: "build-php-8.3" + tags: ["build", "php8.3", "stable"] + commands: + - func: "locate PHP binaries" + vars: + PHP_VERSION: "8.3" + - func: "compile extension" + - func: "upload extension" + - name: "build-php-8.3-lowest" + tags: ["build", "php8.3", "lowest"] + commands: + - func: "locate PHP binaries" + vars: + PHP_VERSION: "8.3" + - func: "compile extension" + vars: + EXTENSION_VERSION: "1.17.0" + - func: "upload extension" + - name: "build-php-8.3-next-stable" + tags: ["build", "php8.3", "next-stable"] + commands: + - func: "locate PHP binaries" + vars: + PHP_VERSION: "8.3" + - func: "compile extension" + vars: + EXTENSION_BRANCH: "v1.17" + - func: "upload extension" + - name: "build-php-8.3-next-minor" + tags: ["build", "php8.3", "next-minor"] + commands: + - func: "locate PHP binaries" + vars: + PHP_VERSION: "8.3" + - func: "compile extension" + vars: + EXTENSION_BRANCH: "master" + - func: "upload extension" diff --git a/.evergreen/config/generated/test-variant/latest-php-8.3.yml b/.evergreen/config/generated/test-variant/latest-php-8.3.yml new file mode 100644 index 000000000..027e31043 --- /dev/null +++ b/.evergreen/config/generated/test-variant/latest-php-8.3.yml @@ -0,0 +1,85 @@ +# This file is generated automatically - please edit the "templates/test-variant/latest.yml" template file instead. +buildvariants: + - name: test-debian11-php-8.3-local + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP 8.3" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.3" + PHP_VERSION: "8.3" + VARIANT: debian11 # Referenced by ADL build script for downloading MQLRun + depends_on: + - variant: "build-debian11" + name: "build-php-8.3" + tasks: + - ".standalone .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".replicaset .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".sharded .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".loadbalanced .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".serverless" + - "test-atlas-data-lake" + + - name: test-debian92-php-8.3-local + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 9.2, PHP 8.3" + run_on: debian92-small + expansions: + FETCH_BUILD_VARIANT: "build-debian92" + FETCH_BUILD_TASK: "build-php-8.3" + PHP_VERSION: "8.3" + depends_on: + - variant: "build-debian92" + name: "build-php-8.3" + tasks: + # Remember to add new major versions here as they are released + - ".standalone .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".replicaset .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".sharded .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".loadbalanced .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + + # Test with upcoming PHPC versions + - name: test-debian11-php-8.3-phpc-next-stable + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP 8.3, PHPC next-stable" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.3-next-stable" + PHP_VERSION: "8.3" + depends_on: + - variant: "build-debian11" + name: "build-php-8.3-next-stable" + tasks: + - ".replicaset .local .7.0 !.csfle" + + - name: test-debian11-php-8.3-phpc-next-minor + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP 8.3, PHPC next-minor" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.3-next-minor" + PHP_VERSION: "8.3" + depends_on: + - variant: "build-debian11" + name: "build-php-8.3-next-minor" + tasks: + - ".replicaset .local .7.0 !.csfle" + + # Test Atlas and CSFLE on RHEL 8 + - name: test-rhel80-php-8.3-atlas + tags: ["test", "debian", "x64"] + display_name: "Test: RHEL 8.0, PHP 8.3" + run_on: rhel80-small + expansions: + FETCH_BUILD_VARIANT: "build-rhel80" + FETCH_BUILD_TASK: "build-php-8.3" + PHP_VERSION: "8.3" + depends_on: + - variant: "build-rhel80" + name: "build-php-8.3" + tasks: + - "test_atlas_task_group" + - ".csfle" + diff --git a/.evergreen/config/generated/test-variant/lowest-php-7.4.yml b/.evergreen/config/generated/test-variant/lowest-php-7.4.yml new file mode 100644 index 000000000..c1f2bdacb --- /dev/null +++ b/.evergreen/config/generated/test-variant/lowest-php-7.4.yml @@ -0,0 +1,16 @@ +# This file is generated automatically - please edit the "templates/test-variant/lowest.yml" template file instead. +buildvariants: + - name: test-debian92-php-7.4-local-lowest + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 9.2, PHP 7.4, Lowest Dependencies" + run_on: debian92-small + expansions: + FETCH_BUILD_VARIANT: "build-debian92" + FETCH_BUILD_TASK: "build-php-7.4-lowest" + PHP_VERSION: "7.4" + DEPENDENCIES: "lowest" + depends_on: + - variant: "build-debian92" + name: "build-php-7.4-lowest" + tasks: + - ".replicaset .local .3.6 !.csfle" diff --git a/.evergreen/config/generated/test-variant/replicaset-php-7.4.yml b/.evergreen/config/generated/test-variant/replicaset-php-7.4.yml new file mode 100644 index 000000000..f8c50d1e3 --- /dev/null +++ b/.evergreen/config/generated/test-variant/replicaset-php-7.4.yml @@ -0,0 +1,15 @@ +# This file is generated automatically - please edit the "templates/test-variant/replicaset-only.yml" template file instead. +buildvariants: + - name: test-debian11-php-7.4-local + tags: [ "test", "debian", "x64" ] + display_name: "Test: Debian 11, PHP 7.4" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-7.4" + PHP_VERSION: "7.4" + depends_on: + - variant: "build-debian11" + name: "build-php-7.4" + tasks: + - ".replicaset .local .7.0 !.csfle" diff --git a/.evergreen/config/generated/test-variant/replicaset-php-8.0.yml b/.evergreen/config/generated/test-variant/replicaset-php-8.0.yml new file mode 100644 index 000000000..c4c4f6d2a --- /dev/null +++ b/.evergreen/config/generated/test-variant/replicaset-php-8.0.yml @@ -0,0 +1,15 @@ +# This file is generated automatically - please edit the "templates/test-variant/replicaset-only.yml" template file instead. +buildvariants: + - name: test-debian11-php-8.0-local + tags: [ "test", "debian", "x64" ] + display_name: "Test: Debian 11, PHP 8.0" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.0" + PHP_VERSION: "8.0" + depends_on: + - variant: "build-debian11" + name: "build-php-8.0" + tasks: + - ".replicaset .local .7.0 !.csfle" diff --git a/.evergreen/config/generated/test-variant/replicaset-php-8.1.yml b/.evergreen/config/generated/test-variant/replicaset-php-8.1.yml new file mode 100644 index 000000000..11efa72b0 --- /dev/null +++ b/.evergreen/config/generated/test-variant/replicaset-php-8.1.yml @@ -0,0 +1,15 @@ +# This file is generated automatically - please edit the "templates/test-variant/replicaset-only.yml" template file instead. +buildvariants: + - name: test-debian11-php-8.1-local + tags: [ "test", "debian", "x64" ] + display_name: "Test: Debian 11, PHP 8.1" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.1" + PHP_VERSION: "8.1" + depends_on: + - variant: "build-debian11" + name: "build-php-8.1" + tasks: + - ".replicaset .local .7.0 !.csfle" diff --git a/.evergreen/config/generated/test-variant/replicaset-php-8.2.yml b/.evergreen/config/generated/test-variant/replicaset-php-8.2.yml new file mode 100644 index 000000000..e8e76d53d --- /dev/null +++ b/.evergreen/config/generated/test-variant/replicaset-php-8.2.yml @@ -0,0 +1,15 @@ +# This file is generated automatically - please edit the "templates/test-variant/replicaset-only.yml" template file instead. +buildvariants: + - name: test-debian11-php-8.2-local + tags: [ "test", "debian", "x64" ] + display_name: "Test: Debian 11, PHP 8.2" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-8.2" + PHP_VERSION: "8.2" + depends_on: + - variant: "build-debian11" + name: "build-php-8.2" + tasks: + - ".replicaset .local .7.0 !.csfle" diff --git a/.evergreen/config/templates/test-variant/latest.yml b/.evergreen/config/templates/test-variant/latest.yml new file mode 100644 index 000000000..196e4ffb5 --- /dev/null +++ b/.evergreen/config/templates/test-variant/latest.yml @@ -0,0 +1,84 @@ +buildvariants: + - name: test-debian11-php-%phpVersion%-local + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP %phpVersion%" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-%phpVersion%" + PHP_VERSION: "%phpVersion%" + VARIANT: debian11 # Referenced by ADL build script for downloading MQLRun + depends_on: + - variant: "build-debian11" + name: "build-php-%phpVersion%" + tasks: + - ".standalone .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".replicaset .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".sharded .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".loadbalanced .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" + - ".serverless" + - "test-atlas-data-lake" + + - name: test-debian92-php-%phpVersion%-local + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 9.2, PHP %phpVersion%" + run_on: debian92-small + expansions: + FETCH_BUILD_VARIANT: "build-debian92" + FETCH_BUILD_TASK: "build-php-%phpVersion%" + PHP_VERSION: "%phpVersion%" + depends_on: + - variant: "build-debian92" + name: "build-php-%phpVersion%" + tasks: + # Remember to add new major versions here as they are released + - ".standalone .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".replicaset .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".sharded .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + - ".loadbalanced .local !.csfle !.6.0 !.7.0 !.rapid !.latest" + + # Test with upcoming PHPC versions + - name: test-debian11-php-%phpVersion%-phpc-next-stable + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP %phpVersion%, PHPC next-stable" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-%phpVersion%-next-stable" + PHP_VERSION: "%phpVersion%" + depends_on: + - variant: "build-debian11" + name: "build-php-%phpVersion%-next-stable" + tasks: + - ".replicaset .local .7.0 !.csfle" + + - name: test-debian11-php-%phpVersion%-phpc-next-minor + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 11, PHP %phpVersion%, PHPC next-minor" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-%phpVersion%-next-minor" + PHP_VERSION: "%phpVersion%" + depends_on: + - variant: "build-debian11" + name: "build-php-%phpVersion%-next-minor" + tasks: + - ".replicaset .local .7.0 !.csfle" + + # Test Atlas and CSFLE on RHEL 8 + - name: test-rhel80-php-%phpVersion%-atlas + tags: ["test", "debian", "x64"] + display_name: "Test: RHEL 8.0, PHP %phpVersion%" + run_on: rhel80-small + expansions: + FETCH_BUILD_VARIANT: "build-rhel80" + FETCH_BUILD_TASK: "build-php-%phpVersion%" + PHP_VERSION: "%phpVersion%" + depends_on: + - variant: "build-rhel80" + name: "build-php-%phpVersion%" + tasks: + - "test_atlas_task_group" + - ".csfle" + diff --git a/.evergreen/config/templates/test-variant/lowest.yml b/.evergreen/config/templates/test-variant/lowest.yml new file mode 100644 index 000000000..2ab3bcf68 --- /dev/null +++ b/.evergreen/config/templates/test-variant/lowest.yml @@ -0,0 +1,15 @@ +buildvariants: + - name: test-debian92-php-%phpVersion%-local-lowest + tags: ["test", "debian", "x64"] + display_name: "Test: Debian 9.2, PHP %phpVersion%, Lowest Dependencies" + run_on: debian92-small + expansions: + FETCH_BUILD_VARIANT: "build-debian92" + FETCH_BUILD_TASK: "build-php-%phpVersion%-lowest" + PHP_VERSION: "%phpVersion%" + DEPENDENCIES: "lowest" + depends_on: + - variant: "build-debian92" + name: "build-php-%phpVersion%-lowest" + tasks: + - ".replicaset .local .3.6 !.csfle" diff --git a/.evergreen/config/templates/test-variant/replicaset-only.yml b/.evergreen/config/templates/test-variant/replicaset-only.yml new file mode 100644 index 000000000..629fc3664 --- /dev/null +++ b/.evergreen/config/templates/test-variant/replicaset-only.yml @@ -0,0 +1,14 @@ +buildvariants: + - name: test-debian11-php-%phpVersion%-local + tags: [ "test", "debian", "x64" ] + display_name: "Test: Debian 11, PHP %phpVersion%" + run_on: debian11-small + expansions: + FETCH_BUILD_VARIANT: "build-debian11" + FETCH_BUILD_TASK: "build-php-%phpVersion%" + PHP_VERSION: "%phpVersion%" + depends_on: + - variant: "build-debian11" + name: "build-php-%phpVersion%" + tasks: + - ".replicaset .local .7.0 !.csfle" diff --git a/.evergreen/config/test-variants.yml b/.evergreen/config/test-variants.yml index 64a1f95c1..9166476e4 100644 --- a/.evergreen/config/test-variants.yml +++ b/.evergreen/config/test-variants.yml @@ -1,147 +1,4 @@ -# -# Test variants - only run for select platforms worth testing on -# buildvariants: - # PHP 8.2: test all topologies on all versions of MongoDB - - name: test-debian11-php82-local - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 8.2" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-8.2" - PHP_VERSION: "8.2" - VARIANT: debian11 # Referenced by ADL build script for downloading MQLRun - depends_on: - - variant: "build-debian11" - name: "build-php-8.2" - tasks: - - ".standalone .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - - ".replicaset .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - - ".sharded .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - - ".loadbalanced .local !.csfle !.3.6 !.4.0 !.4.2 !.4.4 !.5.0" - - ".serverless" - - "test-atlas-data-lake" - - name: test-debian92-php82-local - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 9.2, PHP 8.2" - run_on: debian92-small - expansions: - FETCH_BUILD_VARIANT: "build-debian92" - FETCH_BUILD_TASK: "build-php-8.2" - PHP_VERSION: "8.2" - depends_on: - - variant: "build-debian92" - name: "build-php-8.2" - tasks: - # Remember to add new major versions here as they are released - - ".standalone .local !.csfle !.6.0 !.7.0 !.rapid !.latest" - - ".replicaset .local !.csfle !.6.0 !.7.0 !.rapid !.latest" - - ".sharded .local !.csfle !.6.0 !.7.0 !.rapid !.latest" - - ".loadbalanced .local !.csfle !.6.0 !.7.0 !.rapid !.latest" - - # Test remaining PHP versions with replica sets on Debian 11 with MongoDB 7.0 - - name: test-debian11-php81-local - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 8.1" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-8.1" - PHP_VERSION: "8.1" - depends_on: - - variant: "build-debian11" - name: "build-php-8.1" - tasks: - - ".replicaset .local .7.0 !.csfle" - - name: test-debian11-php80-local - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 8.0" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-8.0" - PHP_VERSION: "8.0" - depends_on: - - variant: "build-debian11" - name: "build-php-8.0" - tasks: - - ".replicaset .local .7.0 !.csfle" - - name: test-debian11-php74-local - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 7.4" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-7.4" - PHP_VERSION: "7.4" - depends_on: - - variant: "build-debian11" - name: "build-php-7.4" - tasks: - - ".replicaset .local .7.0 !.csfle" - - # Test with lowest PHP, PHPC, MongoDB, and dependency versions - - name: test-debian92-php74-local-lowest - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 9.2, PHP 7.4, Lowest Dependencies" - run_on: debian92-small - expansions: - FETCH_BUILD_VARIANT: "build-debian92" - FETCH_BUILD_TASK: "build-php-7.4-lowest" - PHP_VERSION: "7.4" - DEPENDENCIES: "lowest" - depends_on: - - variant: "build-debian92" - name: "build-php-7.4-lowest" - tasks: - - ".replicaset .local .3.6 !.csfle" - - # Test with upcoming PHPC versions - - name: test-debian11-php82-phpc-next-stable - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 8.2, PHPC next-stable" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-8.2-next-stable" - PHP_VERSION: "8.2" - depends_on: - - variant: "build-debian11" - name: "build-php-8.2-next-stable" - tasks: - - ".replicaset .local .7.0 !.csfle" - - - name: test-debian11-php82-phpc-next-minor - tags: ["test", "debian", "x64"] - display_name: "Test: Debian 11, PHP 8.2, PHPC next-minor" - run_on: debian11-small - expansions: - FETCH_BUILD_VARIANT: "build-debian11" - FETCH_BUILD_TASK: "build-php-8.2-next-minor" - PHP_VERSION: "8.2" - depends_on: - - variant: "build-debian11" - name: "build-php-8.2-next-minor" - tasks: - - ".replicaset .local .7.0 !.csfle" - - # Test Atlas and CSFLE on RHEL 8 - - name: test-rhel80-php82-atlas - tags: ["test", "debian", "x64"] - display_name: "Test: RHEL 8.0, PHP 8.2" - run_on: rhel80-small - expansions: - FETCH_BUILD_VARIANT: "build-rhel80" - FETCH_BUILD_TASK: "build-php-8.2" - PHP_VERSION: "8.2" - depends_on: - - variant: "build-rhel80" - name: "build-php-8.2" - tasks: - - "test_atlas_task_group" - - ".csfle" - # Run benchmarks - name: benchmark-rhel90 tags: ["benchmark", "rhel", "x64"]