diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..cff2d28c --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +config/config.php: config/major_versions.json config/releases.json $(wildcard config/enterprise_releases.json) + @echo '🏗 Build configuration file $(@)…' + build/config_builder > $(@) + +.ONESHELL: diff --git a/build/README.md b/build/README.md new file mode 100644 index 00000000..fbe36fc9 --- /dev/null +++ b/build/README.md @@ -0,0 +1,29 @@ +## Configuration builder + +Generates the `config/config.php` file + +### Configuration files +#### `major_versions.json` +List all major versions +```json + "29": { + "eol": "2025-04", // End of life as YYYY-mm. Optional, default to no end of life + "minPHP": "8.0" // Minimal PHP version + }, +``` + +#### `releases.json` +```json + "29.0.0": { + "internalVersion": "29.0.0.19", // Internal version number + "signature": "", // Signature on one line + "deploy": 70 // Deploy percentage. Optional, default to 100% + } +``` + +### Build +Check if the `config.php` needs update and update it: +```bash +make config/config.php +``` +Can be forced with `make -B config/config.php` diff --git a/build/config_builder b/build/config_builder new file mode 100755 index 00000000..bd62e173 --- /dev/null +++ b/build/config_builder @@ -0,0 +1,96 @@ +#!/usr/bin/env php + [], 'stable' => [], 'beta' => []]; +} catch (\Exception) { + $latestReleases = $generatedConfig = ['stable' => [], 'beta' => []]; +} + +// Search latest release for each major/stability +foreach ($releases as $releaseName => $info) { + $major = parseVersionName($releaseName)['major']; + $stability = getStabilityFromName($releaseName); + if (!isset($latestReleases[$stability][$major])) { + $latestReleases[$stability][$major] = $info['internalVersion']; + continue; + } + if (version_compare($latestReleases[$stability][$major], $releaseName, '<')) { + $latestReleases[$stability][$major] = $info['internalVersion']; + } +} + +// Generate previous configuration +$now = date('Y-m'); +foreach ($releases as $releaseName => $info) { + preg_match('/(\d+)\.(\d+).(\d+)(?: (.+))?/A', $releaseName, $matches); + [, $major, $minor, $patch] = $matches; + $stability = getStabilityFromName($releaseName); + $isEol = isset($majorVersions[$major]['eol']) ? ($majorVersions[$major]['eol'] < $now) : false; + $generatedConfig[$stability][$major]['100'] = [ + 'latest' => $releaseName, + 'internalVersion' => $info['internalVersion'], + 'downloadUrl' => buildDownloadUrl($releaseName, $info), + 'web' => sprintf($docUrl, $major), + 'eol' => $isEol, + 'minPHPVersion' => $majorVersions[$major]['minPHP'] ?? '', + 'signature' => isset($info['signature']) ? wordwrap($info['signature'], 64, cut_long_words: true) : '', + ]; + + // Check if we can upgrade from a previous major version + $deployPercent = $info['deploy'] ?? 100; + if (isset($latestReleases[$stability][$major - 1])) { + $upgradeFrom = $latestReleases[$stability][$major - 1]; + $generatedConfig[$stability][$upgradeFrom][$deployPercent] = $generatedConfig[$stability][$major]['100']; + } elseif (isset($latestReleases['stable'][$major -1])) { + $upgradeFrom = $latestReleases['stable'][$major - 1]; + $generatedConfig[$stability][$upgradeFrom][$deployPercent] = $generatedConfig[$stability][$major]['100']; + } + + // For stable versions, check if we can upgrade from a beta version + if ($stability === 'stable') { + if (isset($latestReleases['beta'][$major - 1])) { + $upgradeFrom = $latestReleases[$stability][$major - 1]; + $generatedConfig['beta'][$upgradeFrom][100] = $generatedConfig[$stability][$major]['100']; + } + } +} + +// Keep order like original config.php +foreach($generatedConfig as $stability => $ignored) { + uksort($generatedConfig[$stability], fn($a, $b) => version_compare((string) $b, (string) $a)); +} + +// Daily updates +$maxMajor = (int) max(array_keys($majorVersions)); +foreach ($majorVersions as $majorVersion => $info) { + if ($majorVersion < 20) { + break; + } + $generatedConfig['daily'][$majorVersion] = [ + 'downloadUrl' => sprintf('https://download.nextcloud.com/server/daily/latest-%s.zip', $maxMajor === $majorVersion ? 'master' : 'stable'.$majorVersion), + 'web' => sprintf($docUrl, $maxMajor === $majorVersion ? 'latest' : $majorVersion), + 'eol' => isset($info['eol']) ? ($info['eol'] < $now) : false, + 'minPHPVersion' => $info['minPHP'] ?? '7.2', + ]; +} + +// Display result +echo '\s*\n\s*\[/", '/ /'], + ['[', ']', '=> [', "\t"], + var_export($generatedConfig, true) +); +echo ';',PHP_EOL; diff --git a/build/utils.php b/build/utils.php new file mode 100755 index 00000000..02b9c94d --- /dev/null +++ b/build/utils.php @@ -0,0 +1,79 @@ + $major, + 'minor' => $minor, + 'patch' => $patch, + 'modifier' => isset($matches[4]) ? $matches[4] : '', + 'stability' => $stability, + ]; +} + +function displayAsFile(array $generatedConfig) { + echo '\s*\n\s*\[/", '/ /'], + ['[', ']', '=> [', "\t"], + var_export($generatedConfig, true) + ); + echo ';',PHP_EOL; +} + +function buildDownloadUrl(string $releaseName, array $info): string { + if (function_exists('buildEnterpriseDownloadUrl')) { + $url = buildEnterpriseDownloadUrl($releaseName, $info); + if ($url !== null) { + return $url; + } + } + + $release = parseVersionName($releaseName); + $downloadUrl = 'https://download.nextcloud.com/server/%s/nextcloud-%d.%d.%d%s.zip'; + return sprintf($downloadUrl, + $release['modifier'] === '' ? 'releases' : 'prereleases', + $release['major'], + $release['minor'], + $release['patch'], + $release['modifier'] === '' ? '' : str_replace(' ', '', strtolower($release['modifier'])), + ); +} diff --git a/config/config.php b/config/config.php index 76d5ffc8..9aa17fd0 100755 --- a/config/config.php +++ b/config/config.php @@ -1,115 +1,8 @@ - */ - -/** - * Welcome to the almighty configuration file. In this file the update definitions for each version are released. Please - * make sure to read below description of the config format carefully before proceeding. - * - * Nextcloud updates are delivered by a release channel, at the moment the following channels are available: - * - * - stable - * - beta - * - daily - * - * With exception of daily (which is a daily build of master) all of them need to be configured manually. The config - * array looks like the following: - * - * 'stable' => [ - * '9.1' => [ - * // 95% of instances on 9.1 will get this response - * '95' => [ - * 'latest' => '10.0.0', - * 'web' => 'https://docs.nextcloud.com/server/10/admin_manual/maintenance/upgrade.html', - * // downloadUrl is an optional entry, if not specified the URL is generated using https://download.nextcloud.com/server/releases/nextcloud-'.$newVersion['latest'].'.zip - * 'downloadUrl' => 'https://download.nextcloud.com/foo.zip', - * // internalVersion - * 'internalVersion' => '9.1.0' - * // autoupdater is an optional boolean value to define whether the update should be just announced or also delivered - * // defaults to true - * 'autoupdater' => true, - * // minPHPVersion is used to check the transferred PHP against this one here and allows to skip updates that are not compatible with this version of PHP - * // if nothing is set the PHP version is not checked - * 'minPHPVersion' => '5.4', - * // set this to true if the requesting version is end of life - it then shows an additional warning to the admin - * 'eol' => false, - * ], - * // 5% of instances on 9.1 will get this response - * '5' => [ - * 'latest' => '11.0.0', - * 'web' => 'https://docs.nextcloud.com/server/10/admin_manual/maintenance/upgrade.html', - * // downloadUrl is an optional entry, if not specified the URL is generated using https://download.nextcloud.com/server/releases/nextcloud-'.$newVersion['latest'].'.zip - * 'downloadUrl' => 'https://download.nextcloud.com/foo.zip', - * // internalVersion - * 'internalVersion' => '11.0.0' - * // autoupdater is an optional boolean value to define whether the update should be just announced or also delivered - * // defaults to true - * 'autoupdater' => true, - * // minPHPVersion is used to check the transferred PHP against this one here and allows to skip updates that are not compatible with this version of PHP - * // if nothing is set the PHP version is not checked - * 'minPHPVersion' => '5.4', - * // set this to true if the requesting version is end of life - it then shows an additional warning to the admin - * 'eol' => false, - * ], - * ], - * ] - * - * In this case if a Nextcloud with the major release of 8.2 sends an update request the 8.2.3 version is returned if the - * current Nextcloud version is below 8.2. - * - * The search for releases in the config array is fuzzy and happens as following: - * 1. Major.Minor.Maintenance.Revision - * 2. Major.Minor.Maintenance - * 3. Major.Minor - * 4. Major - * - * Once a result has been found this one is taken. This allows it to define an update order in case some releases should - * not be skipped. Let's take a look at an example: - * - * 'stable' => [ - * '8.2.0' => [ - * '100' => [ - * 'latest' => '8.2.1', - * 'web' => 'https://docs.nextcloud.com/server/8.2/admin_manual/maintenance/upgrade.html', - * ], - * ], - * '8.2' => [ - * '100' => [ - * 'latest' => '8.2.4', - * 'web' => 'https://docs.nextcloud.com/server/8.2/admin_manual/maintenance/upgrade.html', - * ], - * ], - * '8.2.4' => [ - * '5' => [ - * 'latest' => '9.0.0', - * 'web' => 'https://docs.nextcloud.com/server/8.2/admin_manual/maintenance/upgrade.html', - * ], - * '95' => [ - * 'latest' => '8.2.5', - * 'web' => 'https://docs.nextcloud.com/server/8.2/admin_manual/maintenance/upgrade.html', - * ], - * ], - * ] - * - * This configuration array would have the following meaning: - * - * 1. 8.2.0 instances would be delivered 8.2.1 - * 2. All instances below 8.2.4 EXCEPT 8.2.0 would be delivered 8.2.4 - * 3. 8.2.4 instances get 9.0.0 delivered with a 5% chance and 8.2.5 with a 95% chance - * - * Oh. And be a nice person and also adjust the integration tests at /tests/integration/features/update.feature after doing - * a change to the update logic. That way you can also ensure that your changes will do what you wanted them to do. The - * tests are automatically executed on Travis or you can do it locally: - * - * - php -S localhost:8888 ./index.php & - * - cd tests/integration/ && ../../vendor/bin/behat . - */ - return [ 'stable' => [ - '29' => [ - '100' => [ + 29 => [ + 100 => [ 'latest' => '29.0.1', 'internalVersion' => '29.0.1.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-29.0.1.zip', @@ -124,8 +17,8 @@ 0DAbpdTSYEu6OUzAFq8I1g==', ], ], - '28.0.6' => [ - '100' => [ + '28.0.6.1' => [ + 100 => [ 'latest' => '29.0.1', 'internalVersion' => '29.0.1.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-29.0.1.zip', @@ -140,8 +33,8 @@ 0DAbpdTSYEu6OUzAFq8I1g==', ], ], - '28' => [ - '100' => [ + 28 => [ + 100 => [ 'latest' => '28.0.6', 'internalVersion' => '28.0.6.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-28.0.6.zip', @@ -156,8 +49,8 @@ QnK0Bov0chs7kRKuaA/Hew==', ], ], - '27.1.9' => [ - '100' => [ + '27.1.9.1' => [ + 100 => [ 'latest' => '28.0.6', 'internalVersion' => '28.0.6.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-28.0.6.zip', @@ -172,8 +65,8 @@ QnK0Bov0chs7kRKuaA/Hew==', ], ], - '27' => [ - '100' => [ + 27 => [ + 100 => [ 'latest' => '27.1.9', 'internalVersion' => '27.1.9.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-27.1.9.zip', @@ -188,8 +81,8 @@ 3No9jhWhcURoGeKTWQJ5pw==', ], ], - '26.0.13' => [ - '100' => [ + '26.0.13.1' => [ + 100 => [ 'latest' => '27.1.9', 'internalVersion' => '27.1.9.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-27.1.9.zip', @@ -204,8 +97,8 @@ 3No9jhWhcURoGeKTWQJ5pw==', ], ], - '26' => [ - '100' => [ + 26 => [ + 100 => [ 'latest' => '26.0.13', 'internalVersion' => '26.0.13.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-26.0.13.zip', @@ -220,8 +113,8 @@ m04vBdfnV+VUhCBz0tYn9A==', ], ], - '25.0.13' => [ - '100' => [ + '25.0.13.2' => [ + 100 => [ 'latest' => '26.0.13', 'internalVersion' => '26.0.13.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-26.0.13.zip', @@ -236,8 +129,8 @@ m04vBdfnV+VUhCBz0tYn9A==', ], ], - '25' => [ - '100' => [ + 25 => [ + 100 => [ 'latest' => '25.0.13', 'internalVersion' => '25.0.13.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-25.0.13.zip', @@ -252,8 +145,8 @@ c2rOEZwqzv2p7fWh4Ovl6g==', ], ], - '24.0.12' => [ - '100' => [ + '24.0.12.1' => [ + 100 => [ 'latest' => '25.0.13', 'internalVersion' => '25.0.13.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-25.0.13.zip', @@ -268,8 +161,8 @@ c2rOEZwqzv2p7fWh4Ovl6g==', ], ], - '24' => [ - '100' => [ + 24 => [ + 100 => [ 'latest' => '24.0.12', 'internalVersion' => '24.0.12.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-24.0.12.zip', @@ -284,8 +177,8 @@ ACWMWE93WNcq+HBa025zsw==', ], ], - '23.0.12' => [ - '100' => [ + '23.0.12.2' => [ + 100 => [ 'latest' => '24.0.12', 'internalVersion' => '24.0.12.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-24.0.12.zip', @@ -300,8 +193,8 @@ ACWMWE93WNcq+HBa025zsw==', ], ], - '23' => [ - '100' => [ + 23 => [ + 100 => [ 'latest' => '23.0.12', 'internalVersion' => '23.0.12.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-23.0.12.zip', @@ -316,8 +209,8 @@ PlWRhIoX0XzP82+TC5b1dg==', ], ], - '22.2.10' => [ - '100' => [ + '22.2.10.2' => [ + 100 => [ 'latest' => '23.0.12', 'internalVersion' => '23.0.12.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-23.0.12.zip', @@ -332,8 +225,8 @@ PlWRhIoX0XzP82+TC5b1dg==', ], ], - '22' => [ - '100' => [ + 22 => [ + 100 => [ 'latest' => '22.2.10', 'internalVersion' => '22.2.10.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-22.2.10.zip', @@ -348,8 +241,8 @@ GorEOAeOrtcV0ba4AVoETQ==', ], ], - '21.0.9' => [ - '100' => [ + '21.0.9.1' => [ + 100 => [ 'latest' => '22.2.10', 'internalVersion' => '22.2.10.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-22.2.10.zip', @@ -364,8 +257,8 @@ GorEOAeOrtcV0ba4AVoETQ==', ], ], - '21' => [ - '100' => [ + 21 => [ + 100 => [ 'latest' => '21.0.9', 'internalVersion' => '21.0.9.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-21.0.9.zip', @@ -380,8 +273,8 @@ mE2YG/R4IKW+A8xqweVzig==', ], ], - '20.0.14' => [ - '100' => [ + '20.0.14.2' => [ + 100 => [ 'latest' => '21.0.9', 'internalVersion' => '21.0.9.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-21.0.9.zip', @@ -396,8 +289,8 @@ mE2YG/R4IKW+A8xqweVzig==', ], ], - '20' => [ - '100' => [ + 20 => [ + 100 => [ 'latest' => '20.0.14', 'internalVersion' => '20.0.14.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-20.0.14.zip', @@ -412,8 +305,8 @@ 6feVFe2PlZ2FK5zxWZNYfw==', ], ], - '19.0.13' => [ - '100' => [ + '19.0.13.1' => [ + 100 => [ 'latest' => '20.0.14', 'internalVersion' => '20.0.14.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-20.0.14.zip', @@ -428,8 +321,8 @@ 6feVFe2PlZ2FK5zxWZNYfw==', ], ], - '19' => [ - '100' => [ + 19 => [ + 100 => [ 'latest' => '19.0.13', 'internalVersion' => '19.0.13.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-19.0.13.zip', @@ -444,8 +337,8 @@ WN2PwtM3nn6/5y0BMhJueQ==', ], ], - '18.0.14' => [ - '100' => [ + '18.0.14.1' => [ + 100 => [ 'latest' => '19.0.13', 'internalVersion' => '19.0.13.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-19.0.13.zip', @@ -460,8 +353,8 @@ WN2PwtM3nn6/5y0BMhJueQ==', ], ], - '18' => [ - '100' => [ + 18 => [ + 100 => [ 'latest' => '18.0.14', 'internalVersion' => '18.0.14.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-18.0.14.zip', @@ -476,8 +369,8 @@ OcrbOha2Z819kkukqEE34Q==', ], ], - '17.0.10' => [ - '100' => [ + '17.0.10.1' => [ + 100 => [ 'latest' => '18.0.14', 'internalVersion' => '18.0.14.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-18.0.14.zip', @@ -491,7 +384,9 @@ BX4Qwl1YI2f8b0KHy3yIqmY58qsWTjGb319Nq3tPFsY8N2hUmFu4yve0nW6Zb/+1 OcrbOha2Z819kkukqEE34Q==', ], - '101' => [ + ], + 17 => [ + 100 => [ 'latest' => '17.0.10', 'internalVersion' => '17.0.10.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-17.0.10.zip', @@ -505,18 +400,9 @@ 4QZIg8gwFj8Uxk4ylijHFSeIxCX96ZSmj+7wolAn8kYqq5Q8iwVYjNqFtJZ/YXIc cNaaoBpx0s3QFdfhSnSgQQ==', ], - '102' => [ - 'latest' => '18.0.14', - 'internalVersion' => '18.0.14.1', - 'downloadUrl' => 'https://nextcloud.com/outdated-php-7-1/', - 'web' => 'https://nextcloud.com/outdated-php-7-1/', - 'eol' => true, - 'minPHPVersion' => '7.1', - 'autoupdater' => false, - ], ], - '17' => [ - '100' => [ + '16.0.11.1' => [ + 100 => [ 'latest' => '17.0.10', 'internalVersion' => '17.0.10.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-17.0.10.zip', @@ -531,24 +417,24 @@ cNaaoBpx0s3QFdfhSnSgQQ==', ], ], - '16' => [ - '100' => [ - 'latest' => '17.0.10', - 'internalVersion' => '17.0.10.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-17.0.10.zip', - 'web' => 'https://docs.nextcloud.com/server/17/admin_manual/maintenance/upgrade.html', + 16 => [ + 100 => [ + 'latest' => '16.0.11', + 'internalVersion' => '16.0.11.1', + 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-16.0.11.zip', + 'web' => 'https://docs.nextcloud.com/server/16/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.1', - 'signature' => 'UNo0Sh9xK+TlO6rL6s380gB436990558QOjdQiDaeYuFANjCQFz0aO957Fetpkol -idhfkICTMtBC5mlSVAJjMW+5BIQ0kAHeJykqz6YD4Vw0aEIHHFgA1qCEphEj0/D5 -p5OzkP6JSkwp+/e1O8xFdr/8VIHdkCEM5Kd5lchzp83XmfZm1t6YdcV8ziACDZrT -GaiG/TGRdHeR4ifgMpdMLZIy0x4Qd6k06dhCFsEz8H10Cf0oVmtrjxJsKEPY7doW -4QZIg8gwFj8Uxk4ylijHFSeIxCX96ZSmj+7wolAn8kYqq5Q8iwVYjNqFtJZ/YXIc -cNaaoBpx0s3QFdfhSnSgQQ==', + 'signature' => 'b7SOD6KATY0bpbAcL/+1gdeLeuWAvsIn+tuUzF6HStrjxLrARw8cOrM7bCq5zcq7 +tJCWrI2Ww9CrKH8kNalEZNMDZy346QhYkUZNOiU2IP8wdb1601vRXfIkPyTVSpdk +RDMQWtIushwa/WIZTKnJWo1fd0juxBnbmIl30rxDgUpBOkjx0zGvA2Ff+mssezX3 +qGhaB0Btr45xpgbHbeEQwsH1w2PXJFy9GsF2psbBEIykCPAxgRWR32bTGH8ws9Uy +zpAxCj7W4wEnJFhsQ2zb0Wh5ZjSA9G1SARJhMp/8Efwm3uWJr5xK4MYKG2bQ29mt +HWPTEBalqX2V9enOLAgVWQ==', ], ], - '15' => [ - '100' => [ + '15.0.14.1' => [ + 100 => [ 'latest' => '16.0.11', 'internalVersion' => '16.0.11.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-16.0.11.zip', @@ -562,7 +448,9 @@ zpAxCj7W4wEnJFhsQ2zb0Wh5ZjSA9G1SARJhMp/8Efwm3uWJr5xK4MYKG2bQ29mt HWPTEBalqX2V9enOLAgVWQ==', ], - '101' => [ + ], + 15 => [ + 100 => [ 'latest' => '15.0.14', 'internalVersion' => '15.0.14.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-15.0.14.zip', @@ -576,34 +464,41 @@ 05B0WC1WDnIiMAfUcEMovxuqoFexvrpnJ9ByOPPLTYMWfpQcJHjw4FiqgFQ/of/i DvYBQvWAJx0Q7tV9bofZjA==', ], - '102' => [ - 'latest' => '16.0.11', - 'internalVersion' => '16.0.11.1', - 'downloadUrl' => 'https://nextcloud.com/outdated-php-7-0/', - 'web' => 'https://nextcloud.com/outdated-php-7-0/', + ], + '14.0.14.1' => [ + 100 => [ + 'latest' => '15.0.14', + 'internalVersion' => '15.0.14.1', + 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-15.0.14.zip', + 'web' => 'https://docs.nextcloud.com/server/15/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.0', - 'autoupdater' => false, + 'signature' => 'A5WWizBmhSC+dfJNrA3eNjx4w3w9i+9GKs0TWCEOAi74E1gfQymaSa3UNdm/fjmP +Osy1fnmICjDfXoIwkle+dlfAbwg2faRkF1px9a538Y5XXTXZ63P5JXABHYSvIAY3 +QDk2CwzM4tSiL2rf7tGgG8uxtvXkyG7DfHH7BweKFBPQ0Ly2ESiSHzVagAHo7f/O +x3G7qC6o4g8pVPfVyXhOZcwf29et9DY3xtKluMQxrmHVTQ6mJ65IRny+/MNMrjwf +05B0WC1WDnIiMAfUcEMovxuqoFexvrpnJ9ByOPPLTYMWfpQcJHjw4FiqgFQ/of/i +DvYBQvWAJx0Q7tV9bofZjA==', ], ], - '14' => [ - '100' => [ - 'latest' => '15.0.12', - 'internalVersion' => '15.0.12.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-15.0.12.zip', - 'web' => 'https://docs.nextcloud.com/server/15/admin_manual/maintenance/upgrade.html', + 14 => [ + 100 => [ + 'latest' => '14.0.14', + 'internalVersion' => '14.0.14.1', + 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-14.0.14.zip', + 'web' => 'https://docs.nextcloud.com/server/14/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.0', - 'signature' => 'ky2vKMSu1tjkpsPaAf6CkqtKJwkeZ8fxT9a9TBNwAAbl3AAIYqQKjT0Np5nvFwzb -Z9N2axbhWdy0WuY7ffxDwYL7lKzzJ4nfeYzIVJV49y1W2kbz5KvDhX4/ACgGw42m -WSmJdyx7hnp5JdcddA/eZDh2yrffC+MjrSaZXBvitnxMtI2xaeOUpphvjKgy8wF+ -Cb8hjiKCAbhG11F2qq8TpX79l5I1n32RhvhJMc1GXmSSlR+dKK0zVIspW9ENMsRc -xsVlYeI9cGdGpShVj4eC3ya2ZZ0KFsEwwvJlOjXbJ8Ctw133fWEp/1nGFuiCP3sZ -nfCSJ75Tc780Fqo0Q4pc8A==', + 'signature' => 'Nw1PhE391uasWeU66JtBoJGTRHDdImBNBkpMlh4nTG6UJFouFTDDmqHq6DcanS5e +qoC79rxiC7lloaN/05AZ7AY1FSNjG5G9xPM4OWgTCbwXhUfD3DjGVzzbMVnTWgeK +ZMgZqqU8F4uWHkcEB0fqImZYnFMdX7E7xZmEIO8BSOOdS6PvvZTAeDXEwWSBMRVa +7wEYp/hwJzV3UCy5SThYHqs+8EIdQeql1/3o/P/0bsGnsgpLGK/2bV4lzVV74m3T +RrZ6EDdSnGyybYX4QGv/wfng9RijMdMdr1SYzJfkRKj+JX37zgscL/87XgnApkQS +FaqAZYszh1hjGEyQaoibXw==', ], ], - '13' => [ - '100' => [ + '13.0.12.1' => [ + 100 => [ 'latest' => '14.0.14', 'internalVersion' => '14.0.14.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-14.0.14.zip', @@ -617,7 +512,9 @@ RrZ6EDdSnGyybYX4QGv/wfng9RijMdMdr1SYzJfkRKj+JX37zgscL/87XgnApkQS FaqAZYszh1hjGEyQaoibXw==', ], - '101' => [ + ], + 13 => [ + 100 => [ 'latest' => '13.0.12', 'internalVersion' => '13.0.12.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-13.0.12.zip', @@ -631,18 +528,9 @@ VFRfhy9vBf+VD6khhFkDXSymw0X6xNN3lMqQIJmJPsPONDXtk2diY6h204uEUofP yiBfUT4yVTwIOt+tnqZzzw==', ], - '102' => [ - 'latest' => '14.0.14', - 'internalVersion' => '14.0.14.1', - 'downloadUrl' => 'https://nextcloud.com/outdated-php-5-6/', - 'web' => 'https://nextcloud.com/outdated-php-5-6/', - 'eol' => true, - 'minPHPVersion' => '5.6', - 'autoupdater' => false, - ], ], - '12' => [ - '100' => [ + '12.0.13.2' => [ + 100 => [ 'latest' => '13.0.12', 'internalVersion' => '13.0.12.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-13.0.12.zip', @@ -657,8 +545,8 @@ yiBfUT4yVTwIOt+tnqZzzw==', ], ], - '11' => [ - '100' => [ + 12 => [ + 100 => [ 'latest' => '12.0.13', 'internalVersion' => '12.0.13.2', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-12.0.13.zip', @@ -673,96 +561,91 @@ vbaIJ8CiZnKdMBDAdXAVMA==', ], ], - '9.1' => [ - '100' => [ + '11.0.8.1' => [ + 100 => [ + 'latest' => '12.0.13', + 'internalVersion' => '12.0.13.2', + 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-12.0.13.zip', + 'web' => 'https://docs.nextcloud.com/server/12/admin_manual/maintenance/upgrade.html', + 'eol' => true, + 'minPHPVersion' => '5.6', + 'signature' => 'jZbAdJ9cHzBcw7BatJoX7/0Nv9NdecbsR4wEnRBbWI/EmAQ09HoMmmC1xiY88ME5 +lvHlcEgF0sVTx6tdg4LvqAH2ze34LhzxgIu7mS1tAHIZ81elGhv66VuRv17QYVs1 +7QQySikKMprI+mzdTjIf3rloc97lpm9ynQ+6vizwdxhZ0w5r4Gl85ni52MpeN1Zd +Sx/Z9LJ0bCIO9C+E6kyQvjI7Q7A+WpMF1SiQL2RJsLJERtV4BP8izVuZQ/hI9NDj +rdZAAiMKh8jB0atDNbxu24dWI2Ie7MvnzadL6Ax9+qIWUzlZIqX9yXgFVE2RsGVS +vbaIJ8CiZnKdMBDAdXAVMA==', + ], + ], + 11 => [ + 100 => [ 'latest' => '11.0.8', 'internalVersion' => '11.0.8.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-11.0.8.zip', 'web' => 'https://docs.nextcloud.com/server/11/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '5.6', - 'signature' => 'CaYUimboWU3dURynPxieGo9V8KoNHe5js2XdivdjWQ1vsyfsnz1Nim33c0bQWzA5 -PosPk3vMUWxJpNKP92D0uyz1Xutkc/tCgsjsXrDaMzl1HUZ9W/PFWEtXTddD5fbJ -8idQFiyiXNNpdDJ/gZjaUZcLWEgMI9MVoeFyKY1OORuJz1e9+I/UBHMTGo81H63X -ApiCSIfXvfvbMMA6DOtorWjDJoHvCkrLef3zqEDDL5bF8NGVE/9f2hh2vSlJex45 -ko5tNR4IIGM3bIRBhw9455+Tc3dVZEpGBr6Yy3vSJmrQKYQ/degEe+S7ZWyVc3TQ -ZH1PxQilL7ihAvnOb2oU1Q==', - ], - '101' => [ + 'signature' => 'jZbAdJ9cHzBcw7BatJoX7/0Nv9NdecbsR4wEnRBbWI/EmAQ09HoMmmC1xiY88ME5 +lvHlcEgF0sVTx6tdg4LvqAH2ze34LhzxgIu7mS1tAHIZ81elGhv66VuRv17QYVs1 +7QQySikKMprI+mzdTjIf3rloc97lpm9ynQ+6vizwdxhZ0w5r4Gl85ni52MpeN1Zd +Sx/Z9LJ0bCIO9C+E6kyQvjI7Q7A+WpMF1SiQL2RJsLJERtV4BP8izVuZQ/hI9NDj +rdZAAiMKh8jB0atDNbxu24dWI2Ie7MvnzadL6Ax9+qIWUzlZIqX9yXgFVE2RsGVS +vbaIJ8CiZnKdMBDAdXAVMA==', + ], + ], + 10 => [ + 100 => [ 'latest' => '10.0.6', 'internalVersion' => '9.1.6.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-10.0.6.zip', - 'web' => 'https://docs.nextcloud.org/server/10/admin_manual/maintenance/manual_upgrade.html', + 'web' => 'https://docs.nextcloud.com/server/10/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '5.4', + 'signature' => '', ], - '102' => [ + ], + '9.1.6.1' => [ + 100 => [ 'latest' => '11.0.8', 'internalVersion' => '11.0.8.1', - 'downloadUrl' => 'https://nextcloud.com/outdated-php-5-4-5-5/', - 'web' => 'https://nextcloud.com/outdated-php-5-4-5-5/', + 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-11.0.8.zip', + 'web' => 'https://docs.nextcloud.com/server/11/admin_manual/maintenance/upgrade.html', 'eol' => true, - 'minPHPVersion' => '5.4', - 'autoupdater' => false, + 'minPHPVersion' => '5.6', + 'signature' => 'jZbAdJ9cHzBcw7BatJoX7/0Nv9NdecbsR4wEnRBbWI/EmAQ09HoMmmC1xiY88ME5 +lvHlcEgF0sVTx6tdg4LvqAH2ze34LhzxgIu7mS1tAHIZ81elGhv66VuRv17QYVs1 +7QQySikKMprI+mzdTjIf3rloc97lpm9ynQ+6vizwdxhZ0w5r4Gl85ni52MpeN1Zd +Sx/Z9LJ0bCIO9C+E6kyQvjI7Q7A+WpMF1SiQL2RJsLJERtV4BP8izVuZQ/hI9NDj +rdZAAiMKh8jB0atDNbxu24dWI2Ie7MvnzadL6Ax9+qIWUzlZIqX9yXgFVE2RsGVS +vbaIJ8CiZnKdMBDAdXAVMA==', ], ], - '9.0' => [ - '100' => [ + '9.0.58' => [ + 100 => [ 'latest' => '10.0.6', 'internalVersion' => '9.1.6.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-10.0.6.zip', - 'web' => 'https://docs.nextcloud.org/server/10/admin_manual/maintenance/manual_upgrade.html', + 'web' => 'https://docs.nextcloud.com/server/10/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '5.4', + 'signature' => '', ], ], - '8.2' => [ - '100' => [ + 9 => [ + 100 => [ 'latest' => '9.0.58', 'internalVersion' => '9.0.58', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-9.0.58.zip', - 'web' => 'https://docs.nextcloud.org/server/9/admin_manual/maintenance/manual_upgrade.html', + 'web' => 'https://docs.nextcloud.com/server/9/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '5.4', + 'signature' => '', ], ], ], - 'beta' => [ - '29' => [ - '100' => [ - 'latest' => '29.0.1', - 'internalVersion' => '29.0.1.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-29.0.1.zip', - 'web' => 'https://docs.nextcloud.com/server/29/admin_manual/maintenance/upgrade.html', - 'eol' => false, - 'minPHPVersion' => '8.0', - 'signature' => 'MV1tA/Qtn5SUMSOPiu9c1N3PEL09AO7PKduaQGYXlWIRA+qJcJfq6YtN4W0QvSDa -Ko/j4KcpAM0w8b3O+qOJOFApDo3vHVH3mqNLnyL6+SYKTob2Kclnnx9Fke1tozvi -ki29GZmbff8KNPuSSYOt2HTY73bh0Esit73+jIufsOciMNyAtOd47TtkAKfK/fNI -DbGT9YJn0gi3ulQ9zfMRFhK+yP4S5WQY43RFPp8qzjA44pgLn2IMu9HmH0Mz36dd -myRG4PG3IaLxfIF3O3/xhvEpqz0BSrJRAIptAZ9YdQZjt+bkh1DoW0HtkN+4FVp4 -0DAbpdTSYEu6OUzAFq8I1g==', - ], - ], - '28.0.6' => [ - '100' => [ - 'latest' => '29.0.1', - 'internalVersion' => '29.0.1.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-29.0.1.zip', - 'web' => 'https://docs.nextcloud.com/server/29/admin_manual/maintenance/upgrade.html', - 'eol' => false, - 'minPHPVersion' => '8.0', - 'signature' => 'MV1tA/Qtn5SUMSOPiu9c1N3PEL09AO7PKduaQGYXlWIRA+qJcJfq6YtN4W0QvSDa -Ko/j4KcpAM0w8b3O+qOJOFApDo3vHVH3mqNLnyL6+SYKTob2Kclnnx9Fke1tozvi -ki29GZmbff8KNPuSSYOt2HTY73bh0Esit73+jIufsOciMNyAtOd47TtkAKfK/fNI -DbGT9YJn0gi3ulQ9zfMRFhK+yP4S5WQY43RFPp8qzjA44pgLn2IMu9HmH0Mz36dd -myRG4PG3IaLxfIF3O3/xhvEpqz0BSrJRAIptAZ9YdQZjt+bkh1DoW0HtkN+4FVp4 -0DAbpdTSYEu6OUzAFq8I1g==', - ], - ], - '28' => [ - '100' => [ + '27.1.9.1' => [ + 100 => [ 'latest' => '28.0.6', 'internalVersion' => '28.0.6.1', 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-28.0.6.zip', @@ -777,24 +660,8 @@ QnK0Bov0chs7kRKuaA/Hew==', ], ], - '27.1.10.0' => [ - '100' => [ - 'latest' => '28.0.6', - 'internalVersion' => '28.0.6.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-28.0.6.zip', - 'web' => 'https://docs.nextcloud.com/server/28/admin_manual/maintenance/upgrade.html', - 'eol' => false, - 'minPHPVersion' => '8.0', - 'signature' => 'jO4wVLt+cW1R+b1t4kmF5Up+O94LbHoDmX6SzMAWJ3nasoWua2S3svbx5gvoVaci -ux8TyPtIWmtBjGOD74cOzaBY/lQRQtyjp+hSuf0Dfr7dw5TjLUn9/kHkvNydRfmP -PXmPL7+8ByeZqHoAbYrAaTDpxbMAOpPHmhIg5LZmN3kTz6PGHkOVqIS9jf+O9B3Z -aSpbFAs7XlHHOR30pYqftcnnOmYHWiKRsH/Qs1J1WHcj+YGLUVLEvk25z1+ruCpF -nSZvIxRTQw8tdqnkqgCnGTEHHh5dvqsfhbcLQwHZ6ldkoAhSf9TZ1m0nVlQFsRmi -QnK0Bov0chs7kRKuaA/Hew==', - ], - ], - '27' => [ - '100' => [ + 27 => [ + 100 => [ 'latest' => '27.1.10 RC1', 'internalVersion' => '27.1.10.0', 'downloadUrl' => 'https://download.nextcloud.com/server/prereleases/nextcloud-27.1.10rc1.zip', @@ -809,8 +676,8 @@ W5+qwqiC+Y+JfHS77DCPVg==', ], ], - '26.0.13' => [ - '100' => [ + '26.0.13.1' => [ + 100 => [ 'latest' => '27.1.10 RC1', 'internalVersion' => '27.1.10.0', 'downloadUrl' => 'https://download.nextcloud.com/server/prereleases/nextcloud-27.1.10rc1.zip', @@ -825,102 +692,73 @@ W5+qwqiC+Y+JfHS77DCPVg==', ], ], - '26' => [ - '100' => [ - 'latest' => '26.0.13', - 'internalVersion' => '26.0.13.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-26.0.13.zip', - 'web' => 'https://docs.nextcloud.com/server/26/admin_manual/maintenance/upgrade.html', - 'eol' => true, - 'minPHPVersion' => '8.0', - 'signature' => 'bvGxFDuB+F5C9DqiARiF9MifdcZEQ2R5+AvgCEs/hnrUugRjTXMvJPRkaDLL01Yf -QoiNwNG3da/2JQEAfZ23YkQedNQ6T3fs7HGbhUZA3xFZb06kxQpLJFI/Ncei8i16 -+QyxhlQtOlhBG0ExG0M0LD3Ow9ZFsCkRk1Ja2YIRBW3mRUdnqew8mYYKltZJL444 -D5BO/0AisCh9hVI7JzExVmwYL/HOmbG5GBpy7BLJnSOUU0Di5PSfwoLIOqLsg/9+ -qVqpedb3ivvwVR1pZqTUyrUPDYojLnyw3XCSKb588U6kSNhaMj/Kl5/5KT34OG+2 -m04vBdfnV+VUhCBz0tYn9A==', - ], - ], - '25.0.13' => [ - '100' => [ - 'latest' => '26.0.13', - 'internalVersion' => '26.0.13.1', - 'downloadUrl' => 'https://download.nextcloud.com/server/releases/nextcloud-26.0.13.zip', - 'web' => 'https://docs.nextcloud.com/server/26/admin_manual/maintenance/upgrade.html', - 'eol' => true, - 'minPHPVersion' => '8.0', - 'signature' => 'bvGxFDuB+F5C9DqiARiF9MifdcZEQ2R5+AvgCEs/hnrUugRjTXMvJPRkaDLL01Yf -QoiNwNG3da/2JQEAfZ23YkQedNQ6T3fs7HGbhUZA3xFZb06kxQpLJFI/Ncei8i16 -+QyxhlQtOlhBG0ExG0M0LD3Ow9ZFsCkRk1Ja2YIRBW3mRUdnqew8mYYKltZJL444 -D5BO/0AisCh9hVI7JzExVmwYL/HOmbG5GBpy7BLJnSOUU0Di5PSfwoLIOqLsg/9+ -qVqpedb3ivvwVR1pZqTUyrUPDYojLnyw3XCSKb588U6kSNhaMj/Kl5/5KT34OG+2 -m04vBdfnV+VUhCBz0tYn9A==', - ], - ], ], 'daily' => [ - '29' => [ + 30 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-master.zip', 'web' => 'https://docs.nextcloud.com/server/latest/admin_manual/maintenance/upgrade.html', 'eol' => false, + 'minPHPVersion' => '8.1', + ], + 29 => [ + 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable29.zip', + 'web' => 'https://docs.nextcloud.com/server/29/admin_manual/maintenance/upgrade.html', + 'eol' => false, 'minPHPVersion' => '8.0', ], - '28' => [ + 28 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable28.zip', 'web' => 'https://docs.nextcloud.com/server/28/admin_manual/maintenance/upgrade.html', 'eol' => false, 'minPHPVersion' => '8.0', ], - '27' => [ + 27 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable27.zip', 'web' => 'https://docs.nextcloud.com/server/27/admin_manual/maintenance/upgrade.html', 'eol' => false, 'minPHPVersion' => '8.0', ], - '26' => [ + 26 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable26.zip', 'web' => 'https://docs.nextcloud.com/server/26/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '8.0', ], - '25' => [ + 25 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable25.zip', 'web' => 'https://docs.nextcloud.com/server/25/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.4', ], - '24' => [ + 24 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable24.zip', 'web' => 'https://docs.nextcloud.com/server/24/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.4', ], - '23' => [ + 23 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable23.zip', 'web' => 'https://docs.nextcloud.com/server/23/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.3', ], - '22' => [ + 22 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable22.zip', 'web' => 'https://docs.nextcloud.com/server/22/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.3', ], - '21' => [ + 21 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable21.zip', 'web' => 'https://docs.nextcloud.com/server/21/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.3', ], - '20' => [ + 20 => [ 'downloadUrl' => 'https://download.nextcloud.com/server/daily/latest-stable20.zip', 'web' => 'https://docs.nextcloud.com/server/20/admin_manual/maintenance/upgrade.html', 'eol' => true, 'minPHPVersion' => '7.2', ], ], - '_settings' => [ - 'changelogServer' => 'https://updates.nextcloud.com/changelog_server/', - ], ]; diff --git a/config/major_versions.json b/config/major_versions.json new file mode 100644 index 00000000..f1a8d45f --- /dev/null +++ b/config/major_versions.json @@ -0,0 +1,89 @@ +{ + "30": { + "minPHP": "8.1" + }, + "29": { + "eol": "2025-04", + "minPHP": "8.0" + }, + "28": { + "eol": "2024-12", + "minPHP": "8.0" + }, + "27": { + "eol": "2024-06", + "minPHP": "8.0" + }, + "26": { + "eol": "2024-03", + "minPHP": "8.0" + }, + "25": { + "eol": "2023-10", + "minPHP": "7.4" + }, + "24": { + "eol": "2023-04", + "minPHP": "7.4" + }, + "23": { + "eol": "2022-12", + "minPHP": "7.3" + }, + "22": { + "eol": "2022-07", + "minPHP": "7.3" + }, + "21": { + "eol": "2022-02", + "minPHP": "7.3" + }, + "20": { + "eol": "2021-11", + "minPHP": "7.2" + }, + "19": { + "eol": "2021-06", + "minPHP": "7.2" + }, + "18": { + "eol": "2021-01", + "minPHP": "7.2" + }, + "17": { + "eol": "2020-10", + "minPHP": "7.1" + }, + "16": { + "eol": "2020-06", + "minPHP": "7.1" + }, + "15": { + "eol": "2019-12", + "minPHP": "7.0" + }, + "14": { + "eol": "2019-09", + "minPHP": "7.0" + }, + "13": { + "eol": "2019-02", + "minPHP": "5.6" + }, + "12": { + "eol": "2018-11", + "minPHP": "5.6" + }, + "11": { + "eol": "2018-03", + "minPHP": "5.6" + }, + "10": { + "eol": "2017-08", + "minPHP": "5.4" + }, + "9": { + "eol": "2017-04", + "minPHP": "5.4" + } +} diff --git a/config/releases.json b/config/releases.json new file mode 100644 index 00000000..6b036746 --- /dev/null +++ b/config/releases.json @@ -0,0 +1,92 @@ +{ + "9.0.58": { + "internalVersion": "9.0.58" + }, + "10.0.6": { + "internalVersion": "9.1.6.1" + }, + "11.0.8": { + "internalVersion": "11.0.8.1", + "signature": "jZbAdJ9cHzBcw7BatJoX7/0Nv9NdecbsR4wEnRBbWI/EmAQ09HoMmmC1xiY88ME5lvHlcEgF0sVTx6tdg4LvqAH2ze34LhzxgIu7mS1tAHIZ81elGhv66VuRv17QYVs17QQySikKMprI+mzdTjIf3rloc97lpm9ynQ+6vizwdxhZ0w5r4Gl85ni52MpeN1ZdSx/Z9LJ0bCIO9C+E6kyQvjI7Q7A+WpMF1SiQL2RJsLJERtV4BP8izVuZQ/hI9NDjrdZAAiMKh8jB0atDNbxu24dWI2Ie7MvnzadL6Ax9+qIWUzlZIqX9yXgFVE2RsGVSvbaIJ8CiZnKdMBDAdXAVMA==" + }, + "12.0.13": { + "internalVersion": "12.0.13.2", + "signature": "jZbAdJ9cHzBcw7BatJoX7/0Nv9NdecbsR4wEnRBbWI/EmAQ09HoMmmC1xiY88ME5lvHlcEgF0sVTx6tdg4LvqAH2ze34LhzxgIu7mS1tAHIZ81elGhv66VuRv17QYVs17QQySikKMprI+mzdTjIf3rloc97lpm9ynQ+6vizwdxhZ0w5r4Gl85ni52MpeN1ZdSx/Z9LJ0bCIO9C+E6kyQvjI7Q7A+WpMF1SiQL2RJsLJERtV4BP8izVuZQ/hI9NDjrdZAAiMKh8jB0atDNbxu24dWI2Ie7MvnzadL6Ax9+qIWUzlZIqX9yXgFVE2RsGVSvbaIJ8CiZnKdMBDAdXAVMA==" + }, + "13.0.12": { + "internalVersion": "13.0.12.1", + "signature": "GRVpINAV11LUd+UxjnQtb2gbFHaxNrh9WzzQgPpjaKJ6J28PRQ9sq8J1GlfEN2K7RnD/6pFkDRTlBOU56g4XC3GgDpY6F88OVQ0z9D1/nudSZV+cSu6xRuC6q7Z9sStGoyDn+o4Z8c+i2yR6zcoVD5itXiU1w41fMT/dlzCtIDmo953+K9fNlTPlU9h9H3MIHVECrm+3NmISmI8+5hl4Ju5p8tudxVhGF2aHR0ilG0ff+wjdz5CtsiZXoP+BUNn+VFRfhy9vBf+VD6khhFkDXSymw0X6xNN3lMqQIJmJPsPONDXtk2diY6h204uEUofPyiBfUT4yVTwIOt+tnqZzzw==" + }, + "14.0.14": { + "internalVersion": "14.0.14.1", + "signature": "Nw1PhE391uasWeU66JtBoJGTRHDdImBNBkpMlh4nTG6UJFouFTDDmqHq6DcanS5eqoC79rxiC7lloaN/05AZ7AY1FSNjG5G9xPM4OWgTCbwXhUfD3DjGVzzbMVnTWgeKZMgZqqU8F4uWHkcEB0fqImZYnFMdX7E7xZmEIO8BSOOdS6PvvZTAeDXEwWSBMRVa7wEYp/hwJzV3UCy5SThYHqs+8EIdQeql1/3o/P/0bsGnsgpLGK/2bV4lzVV74m3TRrZ6EDdSnGyybYX4QGv/wfng9RijMdMdr1SYzJfkRKj+JX37zgscL/87XgnApkQSFaqAZYszh1hjGEyQaoibXw==" + }, + "15.0.12": { + "internalVersion": "15.0.12.1", + "signature": "ky2vKMSu1tjkpsPaAf6CkqtKJwkeZ8fxT9a9TBNwAAbl3AAIYqQKjT0Np5nvFwzbZ9N2axbhWdy0WuY7ffxDwYL7lKzzJ4nfeYzIVJV49y1W2kbz5KvDhX4/ACgGw42mWSmJdyx7hnp5JdcddA/eZDh2yrffC+MjrSaZXBvitnxMtI2xaeOUpphvjKgy8wF+Cb8hjiKCAbhG11F2qq8TpX79l5I1n32RhvhJMc1GXmSSlR+dKK0zVIspW9ENMsRcxsVlYeI9cGdGpShVj4eC3ya2ZZ0KFsEwwvJlOjXbJ8Ctw133fWEp/1nGFuiCP3sZnfCSJ75Tc780Fqo0Q4pc8A==" + }, + "15.0.14": { + "internalVersion": "15.0.14.1", + "signature": "A5WWizBmhSC+dfJNrA3eNjx4w3w9i+9GKs0TWCEOAi74E1gfQymaSa3UNdm/fjmPOsy1fnmICjDfXoIwkle+dlfAbwg2faRkF1px9a538Y5XXTXZ63P5JXABHYSvIAY3QDk2CwzM4tSiL2rf7tGgG8uxtvXkyG7DfHH7BweKFBPQ0Ly2ESiSHzVagAHo7f/Ox3G7qC6o4g8pVPfVyXhOZcwf29et9DY3xtKluMQxrmHVTQ6mJ65IRny+/MNMrjwf05B0WC1WDnIiMAfUcEMovxuqoFexvrpnJ9ByOPPLTYMWfpQcJHjw4FiqgFQ/of/iDvYBQvWAJx0Q7tV9bofZjA==" + }, + "16.0.11": { + "internalVersion": "16.0.11.1", + "signature": "b7SOD6KATY0bpbAcL/+1gdeLeuWAvsIn+tuUzF6HStrjxLrARw8cOrM7bCq5zcq7tJCWrI2Ww9CrKH8kNalEZNMDZy346QhYkUZNOiU2IP8wdb1601vRXfIkPyTVSpdkRDMQWtIushwa/WIZTKnJWo1fd0juxBnbmIl30rxDgUpBOkjx0zGvA2Ff+mssezX3qGhaB0Btr45xpgbHbeEQwsH1w2PXJFy9GsF2psbBEIykCPAxgRWR32bTGH8ws9UyzpAxCj7W4wEnJFhsQ2zb0Wh5ZjSA9G1SARJhMp/8Efwm3uWJr5xK4MYKG2bQ29mtHWPTEBalqX2V9enOLAgVWQ==" + }, + "17.0.10": { + "internalVersion": "17.0.10.1", + "signature": "UNo0Sh9xK+TlO6rL6s380gB436990558QOjdQiDaeYuFANjCQFz0aO957FetpkolidhfkICTMtBC5mlSVAJjMW+5BIQ0kAHeJykqz6YD4Vw0aEIHHFgA1qCEphEj0/D5p5OzkP6JSkwp+/e1O8xFdr/8VIHdkCEM5Kd5lchzp83XmfZm1t6YdcV8ziACDZrTGaiG/TGRdHeR4ifgMpdMLZIy0x4Qd6k06dhCFsEz8H10Cf0oVmtrjxJsKEPY7doW4QZIg8gwFj8Uxk4ylijHFSeIxCX96ZSmj+7wolAn8kYqq5Q8iwVYjNqFtJZ/YXIccNaaoBpx0s3QFdfhSnSgQQ==" + }, + "18.0.14": { + "internalVersion": "18.0.14.1", + "signature": "nzM1fD0IYCr86Pb7fJLGQA0usVUOKE+JyFVVhJArh4BpdDI0C2yC7l2zeJgCEd+gRiXGB1N5a7GTfNSqdLO6ho+5dEg55OQYiTE75ji+dTKz9IDz99crk4BiYIsKc+btZtuq8p/kxJK7wkRlsxDTULQWlVe0f1shX2sTCg9CNYzY5/kwmQtz8OQ/umwya1sFFedS379Vnpa2NgAEq9W45r9hP6iZmKDBlwrY+r/pBWaJteI9xW9Ag8hhv4pSku0qBX4Qwl1YI2f8b0KHy3yIqmY58qsWTjGb319Nq3tPFsY8N2hUmFu4yve0nW6Zb/+1OcrbOha2Z819kkukqEE34Q==" + }, + "19.0.13": { + "internalVersion": "19.0.13.1", + "signature": "qWFamMWZegXESQawjDX9Zn5XHVNUElbOfmVKyCG/MWqTfX0cUIt/xDOccSK24hce8M47spBztkAKLEqsCBfwwmnpqDL2iVhuQVAwHuOyev/53lfdge5j7AH4yqPAEa+jXDdnHtLClAtYI7QtIeUAhuj0ychW47rcWRNsZ1tTxKGclZqPubiMd8eO6kn8S/uPSnaqLa3zSAKlqrda4qsvt4AnGfOB7/MZxQBO9Sy/D6F60DqvI9/IntjJyJm6uUzo+ziDzSgzCHt8/tFdbtjLR1j3zEv5n7epNdTZuj/Z3FVbBi4HSk9oOHa6LQTeqAeAWN2PwtM3nn6/5y0BMhJueQ==" + }, + "20.0.14": { + "internalVersion": "20.0.14.2", + "signature": "ie2H7/drKls2RxE5aS50ocGeXIBiAlczHvhCeObYF21s0qQtx0mGJe6TUvA8diQ5T3ZiZwRLQT2BH6GKHbOt6ku6RRSTILhglffUAv3CellNrYmkyAl1ob6/4H5/XHjCDgQ6Ykglk7xvQICw2l7s4tfa8KNIWLdPuWfUvXBBDsXKtFEmv8d0SU+f/dQR6JKuuLzb1cmunoldyvH/qC4XdKx1r/JqPEaQxW7l3WQeXaLCA2OiLxIBcHH6ucNJ4ik6fZCxpy3szm7gaozWquGfD+oglIY7GLVsbeZBTDFgF44OcDAY/29AL3TKRKN+cnQr6feVFe2PlZ2FK5zxWZNYfw==" + }, + "21.0.9": { + "internalVersion": "21.0.9.1", + "signature": "UmaMy3Rp14wXYO8IQPzJWIsJnz5po9Fw42upR3ci+EPmfpptUgCpxDBZ+uIMLpIfEe9waBv1ZPRgOaUmzwWQUGzL+z1+LRMe9rm/m2SKEYDWzq0Uk0wmheqAdhaZHFYqEIXWXKMauXl+KxdNsJOftU96NzoiWTO8m4JjT7758fyGuio7jRWHCun1m+nb4hSDLQHdC1Ipng5IPFcR2EJ9zP+SpLR7pO7g+2raxlnLhvqT27FfiTAw3J4ztm/BsGTWBQwO9DSgH23A3veRLMpZnuiZcZfOJIr/LSRjvgxU+RdHKWFJkmngNQAg7pTPnjMHmE2YG/R4IKW+A8xqweVzig==" + }, + "22.2.10": { + "internalVersion": "22.2.10.2", + "signature": "XDDYmHMD8famkqCoed6EmUO4PNL8YsMOv859HOmcPThrQ2GcTr0jeX06oQ3ZrRsCwkfN+idHSOwY++S/qN7Pp65/isSfVU7LSYn/ELEnyRC5l8M1g1F/By4Bj8Np+7mAHIJmvvAKiVflOGPHWIhcXin1whDXeLXxpz3ntHR02XARLgozkbnyOrjxmkcx0BOkyyRgxVQXLR1QsFUhrt8+zjlhL/JsEHzCQ954n0mggdx8IhiEUqpHFjubwQbEytX9fhlPbaifQKypXBpBdN/RBRt6Ox5z2lSG5IY/g8nc4x7rYQSpiTrtWi1vlcxF0aITGorEOAeOrtcV0ba4AVoETQ==" + }, + "23.0.12": { + "internalVersion": "23.0.12.2", + "signature": "tu+v9XHqXSKxncQi5ps0Sz7DHZ8l4sXAPw/8B2REvlkw/YC8OMSpnTy8LSKKgIdZsFsVcvA0Q6l84Xve6cxE3XpRKxSAxWJbamsmE35HcLwxVtuwpWxyOFD9xUzDVCVfnZfQcDUjeK2xQxV+qVjuPuoz0TmRwcZJwrXk/nZiA1cAV/k2PPG9FP25R8WAdIQDrfrM7C5GWPNSzv9qcUteJ4jv9ORJ/FiZVewSfP+5hKxTIeUw+D/9LbCjRVzKwvIx3r9oA+gwN2zYNOuYFvpF9FtVtJ9NLR/EJWBoHWLuO0XcrXgVWoemwF97nFeV5HdpPlWRhIoX0XzP82+TC5b1dg==" + }, + "24.0.12": { + "internalVersion": "24.0.12.1", + "signature": "aCQnJpJjf83glgpOxTs1tenmKYhdBK34JyhBtwhikoE4bg1GpfNPe+5OVEDkKPLio3tAWWdx8SAR1+PuLYwjkyy6hhr80ojDrhnmjVprB9PZ5Dqqz9Uk5sLjyse2e0FCL9eCQfFLRMxNYyucp8ihSW2100KbDKPXq5K/GUS/9TuLV99JdwJjAWtPQzsm5KK93SMqwkuwWg+39qVS9W1w4zWjAwfP1xyJUFTIBeS35hnmnol2goE0JbSlTMoBYFyQPC8WFtnBG8EIA1ncyQ/IDKUZjg79E8cM8zyIY8PYmA/Jf4MpTMwfoGJQ0GtD6nCFACWMWE93WNcq+HBa025zsw==" + }, + "25.0.13": { + "internalVersion": "25.0.13.2", + "signature": "FVPFITm49G4y0pv7xo9XWeLw4zKopsAwrj2iVSW2je9Nq2U25RpudHkrSwHZY2JDFsjx8xFncgjHT1iiuZJHBOkInfmJYvsBe3RVuS87uLhmeVevLKwBC+ZkgbRiMwX8j6TaNthAVOlYaowAQAjyRgJ8AAg3L5liYmqhobBUgtwd86wRlzk5Fy9MTAM3BSwnJ5CqVqcGxVBCJdTp73oryXSctu1lHS4zS4eMWaqSPrCDb4uSMyjE4DESH60dwVyRX6IrjOfLlNvurihALJuhJzqWG+Xdi3xurMOI65ad8im2+7tiB/yu5Bb5NdSl8KvLc2rOEZwqzv2p7fWh4Ovl6g==" + }, + "26.0.13": { + "internalVersion": "26.0.13.1", + "signature": "bvGxFDuB+F5C9DqiARiF9MifdcZEQ2R5+AvgCEs/hnrUugRjTXMvJPRkaDLL01YfQoiNwNG3da/2JQEAfZ23YkQedNQ6T3fs7HGbhUZA3xFZb06kxQpLJFI/Ncei8i16+QyxhlQtOlhBG0ExG0M0LD3Ow9ZFsCkRk1Ja2YIRBW3mRUdnqew8mYYKltZJL444D5BO/0AisCh9hVI7JzExVmwYL/HOmbG5GBpy7BLJnSOUU0Di5PSfwoLIOqLsg/9+qVqpedb3ivvwVR1pZqTUyrUPDYojLnyw3XCSKb588U6kSNhaMj/Kl5/5KT34OG+2m04vBdfnV+VUhCBz0tYn9A==" + }, + "27.1.9": { + "internalVersion": "27.1.9.1", + "signature": "MofbMy9BK9Tib2LaSkg31dKRjRK6B+k8CTMh9xhUyQoC+yBdCKmchvw0ApohBc9h4R0Ejxi57AEpMWrXwotSpQ5R41puIn6pSulN5DDhdj/AFvUUeoyI0nVKXCBCmqcOzo7UPX07GqKIqQ8uTEuy3Q7ayREkVrFvbWUCDHgjGFV2xVwR4nqppmzlZKmC0SYuKIFKVB0s5pFLvC2J/TcpqKGS86iQIUAaNkER3hiAf4iO+GxatM4rEtveD/Bv9Gdyis8mB1xOT+wd3WCdwHoIu14IlWcy1CNgWKe+sjoz4VvR579TG3I4mk9VxSxLu8rO3No9jhWhcURoGeKTWQJ5pw==" + }, + "27.1.10 RC1": { + "internalVersion": "27.1.10.0", + "signature": "FSxqA+X8x6DcejCf5jlBYI65U4h2EQqd8quDYs0ujleYeVXtMUiB/l8s3baE6y61LyN0jHS7KCa4Sh+fEYI5S2IidHzkFUjXUEKaT9EQ/JceOxh2rVLtKkUWGQad28fflttquSA3ds80nSZ+fo7o8EjJTcQa9ghVPCwpJEQCkq0XMgTQ2iGpanaYZhYAaH/va2C7k/Ws5sBpknXND92llt4ohJbRHzH/K2lKA+gFnoAfAymDlZHT0oQJBzBqy4jcn+OSia547bnvfzcYhEPr8YqvJ/n1dMlUhefiUezjyOOwE4zx7JHRGwYMMn8CsO6PW5+qwqiC+Y+JfHS77DCPVg==" + }, + "28.0.6": { + "internalVersion": "28.0.6.1", + "signature": "jO4wVLt+cW1R+b1t4kmF5Up+O94LbHoDmX6SzMAWJ3nasoWua2S3svbx5gvoVaciux8TyPtIWmtBjGOD74cOzaBY/lQRQtyjp+hSuf0Dfr7dw5TjLUn9/kHkvNydRfmPPXmPL7+8ByeZqHoAbYrAaTDpxbMAOpPHmhIg5LZmN3kTz6PGHkOVqIS9jf+O9B3ZaSpbFAs7XlHHOR30pYqftcnnOmYHWiKRsH/Qs1J1WHcj+YGLUVLEvk25z1+ruCpFnSZvIxRTQw8tdqnkqgCnGTEHHh5dvqsfhbcLQwHZ6ldkoAhSf9TZ1m0nVlQFsRmiQnK0Bov0chs7kRKuaA/Hew==" + }, + "29.0.1": { + "internalVersion": "29.0.1.1", + "signature": "MV1tA/Qtn5SUMSOPiu9c1N3PEL09AO7PKduaQGYXlWIRA+qJcJfq6YtN4W0QvSDaKo/j4KcpAM0w8b3O+qOJOFApDo3vHVH3mqNLnyL6+SYKTob2Kclnnx9Fke1tozviki29GZmbff8KNPuSSYOt2HTY73bh0Esit73+jIufsOciMNyAtOd47TtkAKfK/fNIDbGT9YJn0gi3ulQ9zfMRFhK+yP4S5WQY43RFPp8qzjA44pgLn2IMu9HmH0Mz36ddmyRG4PG3IaLxfIF3O3/xhvEpqz0BSrJRAIptAZ9YdQZjt+bkh1DoW0HtkN+4FVp40DAbpdTSYEu6OUzAFq8I1g==" + } +} diff --git a/tests/integration/features/beta.feature b/tests/integration/features/beta.feature index 2c8e9429..59072c03 100644 --- a/tests/integration/features/beta.feature +++ b/tests/integration/features/beta.feature @@ -7,23 +7,23 @@ Feature: Testing the update scenario of beta releases And the installation mtime is "11" When The request is sent Then The response is non-empty - And Update to version "17.0.10.1" is available - And URL to download is "https://download.nextcloud.com/server/releases/nextcloud-17.0.10.zip" - And URL to documentation is "https://docs.nextcloud.com/server/17/admin_manual/maintenance/upgrade.html" + And Update to version "16.0.11.1" is available + And URL to download is "https://download.nextcloud.com/server/releases/nextcloud-16.0.11.zip" + And URL to documentation is "https://docs.nextcloud.com/server/16/admin_manual/maintenance/upgrade.html" And EOL is set to "1" And The signature is """ - UNo0Sh9xK+TlO6rL6s380gB436990558QOjdQiDaeYuFANjCQFz0aO957Fetpkol - idhfkICTMtBC5mlSVAJjMW+5BIQ0kAHeJykqz6YD4Vw0aEIHHFgA1qCEphEj0/D5 - p5OzkP6JSkwp+/e1O8xFdr/8VIHdkCEM5Kd5lchzp83XmfZm1t6YdcV8ziACDZrT - GaiG/TGRdHeR4ifgMpdMLZIy0x4Qd6k06dhCFsEz8H10Cf0oVmtrjxJsKEPY7doW - 4QZIg8gwFj8Uxk4ylijHFSeIxCX96ZSmj+7wolAn8kYqq5Q8iwVYjNqFtJZ/YXIc - cNaaoBpx0s3QFdfhSnSgQQ== + b7SOD6KATY0bpbAcL/+1gdeLeuWAvsIn+tuUzF6HStrjxLrARw8cOrM7bCq5zcq7 + tJCWrI2Ww9CrKH8kNalEZNMDZy346QhYkUZNOiU2IP8wdb1601vRXfIkPyTVSpdk + RDMQWtIushwa/WIZTKnJWo1fd0juxBnbmIl30rxDgUpBOkjx0zGvA2Ff+mssezX3 + qGhaB0Btr45xpgbHbeEQwsH1w2PXJFy9GsF2psbBEIykCPAxgRWR32bTGH8ws9Uy + zpAxCj7W4wEnJFhsQ2zb0Wh5ZjSA9G1SARJhMp/8Efwm3uWJr5xK4MYKG2bQ29mt + HWPTEBalqX2V9enOLAgVWQ== """ Scenario: Updating an outdated Nextcloud 17.0.0 on the beta channel Given There is a release with channel "beta" - And The received version is "17.0.10.2" + And The received version is "17.0.10.1" And The received PHP version is "7.2.0" And the installation mtime is "11" When The request is sent @@ -107,7 +107,7 @@ Feature: Testing the update scenario of beta releases Scenario: Updating the latest Nextcloud 19.0.13 on the beta channel Given There is a release with channel "beta" - And The received version is "19.0.13.0" + And The received version is "19.0.13.1" And The received PHP version is "7.2.0" And the installation mtime is "11" When The request is sent @@ -233,7 +233,7 @@ Feature: Testing the update scenario of beta releases Scenario: Updating the latest Nextcloud 22 on the beta channel Given There is a release with channel "beta" - And The received version is "22.2.10.0" + And The received version is "22.2.10.2" And The received PHP version is "7.3.0" And the installation mtime is "11" When The request is sent @@ -317,7 +317,7 @@ Feature: Testing the update scenario of beta releases Scenario: Updating the latest Nextcloud 24 on the beta channel Given There is a release with channel "beta" - And The received version is "24.0.12.0" + And The received version is "24.0.12.1" And The received PHP version is "7.4.0" And the installation mtime is "11" When The request is sent diff --git a/tests/integration/features/daily.feature b/tests/integration/features/daily.feature index 427f196c..eee4082f 100644 --- a/tests/integration/features/daily.feature +++ b/tests/integration/features/daily.feature @@ -1,8 +1,8 @@ Feature: Testing the update scenario of daily releases - Scenario: Updating an outdated Nextcloud 28 daily + Scenario: Updating an outdated Nextcloud 30 daily Given There is a release with channel "daily" - And The received version is "29.1.0" + And The received version is "30.1.0" And the received build is "2012-10-19T18:44:30+00:00" When The request is sent Then The response is non-empty @@ -12,6 +12,18 @@ Feature: Testing the update scenario of daily releases And EOL is set to "0" And No signature is set + Scenario: Updating an outdated Nextcloud 29 daily + Given There is a release with channel "daily" + And The received version is "29.1.0" + And the received build is "2012-10-19T18:44:30+00:00" + When The request is sent + Then The response is non-empty + And Update to version "100.0.0.0" is available + And URL to download is "https://download.nextcloud.com/server/daily/latest-stable29.zip" + And URL to documentation is "https://docs.nextcloud.com/server/29/admin_manual/maintenance/upgrade.html" + And EOL is set to "0" + And No signature is set + Scenario: Updating an outdated Nextcloud 28 daily Given There is a release with channel "daily" And The received version is "28.1.0" diff --git a/tests/integration/features/stable.feature b/tests/integration/features/stable.feature index c95fbdec..d7bda265 100644 --- a/tests/integration/features/stable.feature +++ b/tests/integration/features/stable.feature @@ -21,25 +21,25 @@ Feature: Testing the update scenario of stable releases cNaaoBpx0s3QFdfhSnSgQQ== """ - Scenario: Updating an outdated Nextcloud 16.0.7 on the stable channel (expect 17) + Scenario: Updating an outdated Nextcloud 16.0.7 on the stable channel Given There is a release with channel "stable" And The received version is "16.0.1.1" And The received PHP version is "7.2.0" And the installation mtime is "40" When The request is sent Then The response is non-empty - And Update to version "17.0.10.1" is available - And URL to download is "https://download.nextcloud.com/server/releases/nextcloud-17.0.10.zip" - And URL to documentation is "https://docs.nextcloud.com/server/17/admin_manual/maintenance/upgrade.html" + And Update to version "16.0.11.1" is available + And URL to download is "https://download.nextcloud.com/server/releases/nextcloud-16.0.11.zip" + And URL to documentation is "https://docs.nextcloud.com/server/16/admin_manual/maintenance/upgrade.html" And EOL is set to "1" And The signature is """ - UNo0Sh9xK+TlO6rL6s380gB436990558QOjdQiDaeYuFANjCQFz0aO957Fetpkol - idhfkICTMtBC5mlSVAJjMW+5BIQ0kAHeJykqz6YD4Vw0aEIHHFgA1qCEphEj0/D5 - p5OzkP6JSkwp+/e1O8xFdr/8VIHdkCEM5Kd5lchzp83XmfZm1t6YdcV8ziACDZrT - GaiG/TGRdHeR4ifgMpdMLZIy0x4Qd6k06dhCFsEz8H10Cf0oVmtrjxJsKEPY7doW - 4QZIg8gwFj8Uxk4ylijHFSeIxCX96ZSmj+7wolAn8kYqq5Q8iwVYjNqFtJZ/YXIc - cNaaoBpx0s3QFdfhSnSgQQ== + b7SOD6KATY0bpbAcL/+1gdeLeuWAvsIn+tuUzF6HStrjxLrARw8cOrM7bCq5zcq7 + tJCWrI2Ww9CrKH8kNalEZNMDZy346QhYkUZNOiU2IP8wdb1601vRXfIkPyTVSpdk + RDMQWtIushwa/WIZTKnJWo1fd0juxBnbmIl30rxDgUpBOkjx0zGvA2Ff+mssezX3 + qGhaB0Btr45xpgbHbeEQwsH1w2PXJFy9GsF2psbBEIykCPAxgRWR32bTGH8ws9Uy + zpAxCj7W4wEnJFhsQ2zb0Wh5ZjSA9G1SARJhMp/8Efwm3uWJr5xK4MYKG2bQ29mt + HWPTEBalqX2V9enOLAgVWQ== """ Scenario: Updating an up-to-date Nextcloud 17.0.2 on the stable channel