diff --git a/Build/bamboo/src/main/java/core/AbstractCoreSpec.java b/Build/bamboo/src/main/java/core/AbstractCoreSpec.java index db62e95d7e093f531df1ec8166199ac151c63062..de0940ae1a7d62d0c045d1e9b4b4ab84904d6302 100644 --- a/Build/bamboo/src/main/java/core/AbstractCoreSpec.java +++ b/Build/bamboo/src/main/java/core/AbstractCoreSpec.java @@ -1364,6 +1364,30 @@ abstract public class AbstractCoreSpec { .environmentVariables(this.composerRootVersionEnvironment); } + /** + * Task definition to execute 'composer update --prefer-lowest'. + * This will update all dependencies to current possible minimum version. + * Used in nightly to see if we are compatible with lowest possible dependency versions. + * + * We update in 2 steps: First composer install as usual, then update. This + * way it is easy to see which packages are updated in comparison to what is + * currently defined in composer.lock. + * + * @param String requirementIdentifier + */ + protected Task getTaskComposerUpdateMin(String requirementIdentifier) { + return new ScriptTask() + .description("composer update --prefer-lowest") + .interpreter(ScriptTaskProperties.Interpreter.BINSH_OR_CMDEXE) + .inlineBody( + this.getScriptTaskBashInlineBody() + + this.getScriptTaskComposer(requirementIdentifier) + + "composer install -n\n" + + "composer update --prefer-lowest -n" + ) + .environmentVariables(this.composerRootVersionEnvironment); + } + /** * Task to prepare an acceptance test */ diff --git a/Build/bamboo/src/main/java/core/NightlySpec.java b/Build/bamboo/src/main/java/core/NightlySpec.java index 943db82078bd21a28b739079fa3a9cf3c27b2960..4fbe3fc88d55ec8c465243a857335993d09a05bc 100644 --- a/Build/bamboo/src/main/java/core/NightlySpec.java +++ b/Build/bamboo/src/main/java/core/NightlySpec.java @@ -110,34 +110,62 @@ public class NightlySpec extends AbstractCoreSpec { // COMPOSER UPDATE MAX stage - ArrayList<Job> jobsComposerUpdateStage = new ArrayList<Job>(); + ArrayList<Job> jobsComposerMaxStage = new ArrayList<Job>(); - jobsComposerUpdateStage.add(this.getJobAcceptanceTestInstallMysql(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobAcceptanceTestInstallPgsql(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobAcceptanceTestInstallSqlite(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobAcceptanceTestInstallMysql(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobAcceptanceTestInstallPgsql(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobAcceptanceTestInstallSqlite(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobsAcceptanceTestsBackendMysql(1, this.numberOfAcceptanceTestJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobsAcceptanceTestsBackendMysql(1, this.numberOfAcceptanceTestJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobCglCheckFullCore(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobCglCheckFullCore(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobIntegrationAnnotations(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobIntegrationAnnotations(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobIntegrationVarious(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobIntegrationVarious(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobsFunctionalTestsMysql(1, this.numberOfFunctionalMysqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobsFunctionalTestsMssql(1, this.numberOfFunctionalMssqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobsFunctionalTestsPgsql(1, this.numberOfFunctionalPgsqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobsFunctionalTestsSqlite(1, this.numberOfFunctionalSqliteJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobsFunctionalTestsMysql(1, this.numberOfFunctionalMysqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobsFunctionalTestsMssql(1, this.numberOfFunctionalMssqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobsFunctionalTestsPgsql(1, this.numberOfFunctionalPgsqlJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobsFunctionalTestsSqlite(1, this.numberOfFunctionalSqliteJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobUnitJavaScript(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobUnitJavaScript(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobUnitPhp(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.add(this.getJobUnitDeprecatedPhp(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - jobsComposerUpdateStage.addAll(this.getJobUnitPhpRandom(1, this.numberOfUnitRandomOrderJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobUnitPhp(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.add(this.getJobUnitDeprecatedPhp(1, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); + jobsComposerMaxStage.addAll(this.getJobUnitPhpRandom(1, this.numberOfUnitRandomOrderJobs, "PHP72", this.getTaskComposerUpdateMax("PHP72"))); - Stage stageComposerUpdateStage = new Stage("Composer update max") - .jobs(jobsComposerUpdateStage.toArray(new Job[jobsComposerUpdateStage.size()])); + Stage stageComposerMaxStage = new Stage("Composer update max") + .jobs(jobsComposerMaxStage.toArray(new Job[jobsComposerMaxStage.size()])); + // COMPOSER UPDATE MIN stage + ArrayList<Job> jobsComposerMinStage = new ArrayList<Job>(); + + jobsComposerMinStage.add(this.getJobAcceptanceTestInstallMysql(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.add(this.getJobAcceptanceTestInstallPgsql(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.add(this.getJobAcceptanceTestInstallSqlite(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.addAll(this.getJobsAcceptanceTestsBackendMysql(2, this.numberOfAcceptanceTestJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.add(this.getJobCglCheckFullCore(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.add(this.getJobIntegrationAnnotations(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.add(this.getJobIntegrationVarious(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.addAll(this.getJobsFunctionalTestsMysql(2, this.numberOfFunctionalMysqlJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.addAll(this.getJobsFunctionalTestsMssql(2, this.numberOfFunctionalMssqlJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.addAll(this.getJobsFunctionalTestsPgsql(2, this.numberOfFunctionalPgsqlJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.addAll(this.getJobsFunctionalTestsSqlite(2, this.numberOfFunctionalSqliteJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.add(this.getJobUnitJavaScript(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + jobsComposerMinStage.add(this.getJobUnitPhp(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.add(this.getJobUnitDeprecatedPhp(2, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + jobsComposerMinStage.addAll(this.getJobUnitPhpRandom(2, this.numberOfUnitRandomOrderJobs, "PHP72", this.getTaskComposerUpdateMin("PHP72"))); + + Stage stageComposerMinStage = new Stage("Composer update min") + .jobs(jobsComposerMinStage.toArray(new Job[jobsComposerMinStage.size()])); // Compile plan return new Plan(project(), planName, planKey) @@ -146,7 +174,8 @@ public class NightlySpec extends AbstractCoreSpec { .stages( stagePreparation, stageMainStage, - stageComposerUpdateStage + stageComposerMaxStage, + stageComposerMinStage ) .linkedRepositories("github TYPO3 TYPO3.CMS") .triggers( diff --git a/composer.json b/composer.json index 7a09394ed9f797ef23936d3ce6db04576b292325..30e4a8987fa32183849247027b1b5a135dcd095b 100644 --- a/composer.json +++ b/composer.json @@ -38,7 +38,7 @@ "ext-xml": "*", "cogpowered/finediff": "~0.3.1", "doctrine/annotations": "^1.3", - "doctrine/dbal": "~2.7.0", + "doctrine/dbal": "~2.7.1", "doctrine/instantiator": "~1.0.4", "doctrine/lexer": "^1.0", "guzzlehttp/guzzle": "^6.3.0", @@ -58,15 +58,15 @@ "typo3/class-alias-loader": "^1.0", "typo3/cms-cli": "^2.0", "typo3/cms-composer-installers": "^2.0", - "typo3fluid/fluid": "^2.4" + "typo3fluid/fluid": "^2.5.2" }, "require-dev": { - "codeception/codeception": "^2.3", + "codeception/codeception": "^2.4.4", "enm1989/chromedriver": "~2.30", "fiunchinho/phpunit-randomizer": "^4.0", - "friendsofphp/php-cs-fixer": "^2.0", + "friendsofphp/php-cs-fixer": "^2.12.2", "typo3/cms-styleguide": "^9.1", - "typo3/testing-framework": "^4.0" + "typo3/testing-framework": "^4.0.2" }, "suggest": { "ext-gd": "GDlib/Freetype is required for building images with text (GIFBUILDER) and can also be used to scale images", diff --git a/composer.lock b/composer.lock index ec9a92eee4d9745dc00547237754defbea13e851..47ba308090197b30e3ee23766a96ba43c9a94627 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1ab1ed9fd305d2ea65bd018ab16745e1", + "content-hash": "a71e25c63829d22da3013a310006d675", "packages": [ { "name": "cogpowered/finediff", diff --git a/typo3/sysext/core/composer.json b/typo3/sysext/core/composer.json index b24bebaae6d3e3624e010bff1e0fe770abaf93f6..c81f317073388005206acfdb7de33018e9bda222 100644 --- a/typo3/sysext/core/composer.json +++ b/typo3/sysext/core/composer.json @@ -20,7 +20,7 @@ "ext-xml": "*", "cogpowered/finediff": "~0.3.1", "doctrine/annotations": "^1.3", - "doctrine/dbal": "~2.7.0", + "doctrine/dbal": "~2.7.1", "doctrine/instantiator": "~1.0.4", "doctrine/lexer": "^1.0", "guzzlehttp/guzzle": "^6.3.0", @@ -39,15 +39,15 @@ "typo3/class-alias-loader": "^1.0", "typo3/cms-cli": "^2.0", "typo3/cms-composer-installers": "^2.0", - "typo3fluid/fluid": "^2.4" + "typo3fluid/fluid": "^2.5.2" }, "require-dev": { - "codeception/codeception": "^2.3", + "codeception/codeception": "^2.4.4", "enm1989/chromedriver": "~2.30", "fiunchinho/phpunit-randomizer": "^4.0", - "friendsofphp/php-cs-fixer": "^2.0", + "friendsofphp/php-cs-fixer": "^2.12.2", "typo3/cms-styleguide": "^9.1", - "typo3/testing-framework": "^4.0" + "typo3/testing-framework": "^4.0.2" }, "suggest": { "ext-fileinfo": "Used for proper file type detection in the file abstraction layer", diff --git a/typo3/sysext/fluid/composer.json b/typo3/sysext/fluid/composer.json index 575ece69e0062a9590ea67671c31737ad1ac2ecc..7043ecfd97e0c02022937ecc536f44a0bbc9a629 100644 --- a/typo3/sysext/fluid/composer.json +++ b/typo3/sysext/fluid/composer.json @@ -15,7 +15,7 @@ "require": { "typo3/cms-core": "9.4.*@dev", "typo3/cms-extbase": "9.4.*@dev", - "typo3fluid/fluid": "^2.4" + "typo3fluid/fluid": "^2.5.2" }, "conflict": { "typo3/cms": "*" diff --git a/typo3/sysext/redirects/composer.json b/typo3/sysext/redirects/composer.json index d0e16ba91767de807c41b7939448c17c73614b5f..496b03e153eb082cbe87c29d678b3b881bc2be82 100644 --- a/typo3/sysext/redirects/composer.json +++ b/typo3/sysext/redirects/composer.json @@ -15,7 +15,7 @@ "require": { "typo3/cms-backend": "9.4.*@dev", "typo3/cms-core": "9.4.*@dev", - "typo3fluid/fluid": "^2.4" + "typo3fluid/fluid": "^2.5.2" }, "conflict": { "typo3/cms": "*"