Author: Derick Rethans (derickr) Date: 2025-04-24T13:57:13+01:00 Commit: https://github.com/php/web-php/commit/3632f3d75da0e7734a05dcda5bb017b3d6a13d14 Raw diff: https://github.com/php/web-php/commit/3632f3d75da0e7734a05dcda5bb017b3d6a13d14.diff
Merge branch 'move-qa-to-web' Changed paths: A include/release-qa.php A release-candidates.php M downloads.php M get-involved.php Diff: diff --git a/downloads.php b/downloads.php index 20c416ef6e..5468da840f 100644 --- a/downloads.php +++ b/downloads.php @@ -18,11 +18,12 @@ </div> </div> -<p class="panel"><a href="download-docs.php">Documentation download</a></p> -<p class="panel"><a href="download-logos.php">PHP logos</a></p> +<p class="panel"><a href="download-docs.php">Documentation Download</a></p> +<p class="panel"><a href="download-logos.php">PHP Logos</a></p> -<p class="panel"><a href="/git.php">Development sources (git)</a></p> -<p class="panel"><a href="/releases/">Old archives</a></p> +<p class="panel"><a href="/release-candidates.php">Release Candidates</a></p> +<p class="panel"><a href="/git.php">Development Sources (git)</a></p> +<p class="panel"><a href="/releases/">Old Archives</a></p> '; site_header("Downloads", diff --git a/get-involved.php b/get-involved.php index 59f96f4de2..5d1482216d 100644 --- a/get-involved.php +++ b/get-involved.php @@ -26,7 +26,7 @@ <h3 class="content-title" id="ways-to-contribute">Four Best Ways to Contribute</h3> <ol class="content-box listed"> - <li>Running test suites in <a href="https://qa.php.net/">RC</a> + <li>Running test suites in <a href="/release-candidates.php">RC</a> and <a href="https://php.net/releases">release</a> distributions of PHP</li> <li>Help finding and diagnosing failed tests, see the <a href="https://qa.php.net/write-test.php">phpt documentation</a></li> diff --git a/include/release-qa.php b/include/release-qa.php new file mode 100644 index 0000000000..4fe4c18efa --- /dev/null +++ b/include/release-qa.php @@ -0,0 +1,170 @@ +<?php + +/* +What this file does: + - Generates the download links found at qa.php.net + - Determines which test results are emailed to news.php.net/php.qa.reports + - Defines $QA_RELEASES for internal and external (api.php) use, contains all qa related information for future PHP releases + +Documentation: + $QA_RELEASES documentation: + Configuration: + - Key is future PHP version number + - Example: If 5.3.6 is the latest stable release, then use 5.3.7 because 5.3.7-dev is our qa version + - Typically, this is the only part needing changed + - active (bool): + - It's active and being tested here + - Meaning, the version will be reported to the qa.reports list, and be linked at qa.php.net + - File extensions .tar.gz and .tar.bz2 are assumed to be available + - release (array): + - type: RC, alpha, and beta are examples (case should match filename case) + - version: 0 if no such release exists, otherwise an integer of the rc/alpha/beta number + - sha256_bz2: sha256 checksum of this downloadable .tar.bz2 file + - sha256_gz: sha256 checksum of this downloadable .tar.gz file + - sha256_xz: sha256 checksum of this downloadble .xz file + - date: date of release e.g., 21 May 2011 + - baseurl: base url of where these downloads are located + - Multiple checksums can be available, see the $QA_CHECKSUM_TYPES array below + Other variables within $QA_RELEASES are later defined including: + - reported: versions that make it to the qa.reports mailing list + - release: all current qa releases, including paths to dl urls (w/ sha256 info) + - dev_version: dev version + - $QA_RELEASES is made available at qa.php.net/api.php + +TODO: + - Save all reports (on qa server) for all tests, categorize by PHP version (see buildtest-process.php) + - Consider storing rc downloads at one location, independent of release master + - Determine best way to handle rc baseurl, currently assumes .tar.gz/tar.bz2 will exist + - Determine if $QA_RELEASES is compatible with all current, and most future configurations + - Determine if $QA_RELEASES can be simplified + - Determine if alpha/beta options are desired + - Unify then create defaults for most settings + - Add option to allow current releases (e.g., retrieve current release info via daily cron, cache, check, configure ~ALLOW_CURRENT_RELEASES) +*/ + + +$QA_RELEASES = [ + + '8.1.27' => [ + 'active' => true, + 'release' => [ + 'type' => 'RC', + 'number' => 0, + 'sha256_gz' => '', + 'sha256_bz2' => '', + 'sha256_xz' => '', + 'date' => '07 Nov 2023', + 'baseurl' => 'https://downloads.php.net/', + ], + ], + + '8.2.27' => [ + 'active' => true, + 'release' => [ + 'type' => 'RC', + 'number' => 0, + 'sha256_bz2' => '', + 'sha256_gz' => '', + 'sha256_xz' => '', + 'date' => '05 Dec 2024', + 'baseurl' => 'https://downloads.php.net/', + ], + ], + + '8.3.20' => [ + 'active' => true, + 'release' => [ + 'type' => 'RC', + 'number' => 0, + 'sha256_bz2' => '', + 'sha256_gz' => '', + 'sha256_xz' => '', + 'date' => '27 Mar 2025', + 'baseurl' => 'https://downloads.php.net/', + ], + ], + + '8.4.7' => [ + 'active' => true, + 'release' => [ + 'type' => 'RC', + 'number' => 1, + 'sha256_bz2' => 'acddb1da1b128f984df01347c907a64939f316d7d9bd138b49106f4179b7776f', + 'sha256_gz' => 'b12d97767aeda4624ea1904c1d93303efe4ffe1ba91970a3c5774ad556918e93', + 'sha256_xz' => '6cb37632eb65ee311cb4427ad070b6ab27fdaf13e8f0103701b2b78907326c93', + 'date' => '24 Apr 2025', + 'baseurl' => 'https://downloads.php.net/~saki/', + ], + ], +]; + +/*** End Configuration *******************************************************************/ + +// This is a list of the possible checksum values that can be supplied with a QA release. Any +// new algorithm is read from the $QA_RELEASES array under the 'release' index for each version +// in the form of "$algorithm_$filetype". +// +// For example, if SHA512 were to be supported, the following indices would have to be added: +// +// 'sha512_bz2' => 'xxx', +// 'sha512_gz' => 'xxx', +// 'sha512_xz' => 'xxx', +$QA_CHECKSUM_TYPES = ['sha256']; + +// $QA_RELEASES eventually contains just about everything, also for external use +// release : These are encouraged for use (e.g., linked at qa.php.net) +// reported : These are allowed to report @ the php.qa.reports mailing list + +(function(&$QA_RELEASES) use ($QA_CHECKSUM_TYPES) { + foreach ($QA_RELEASES as $pversion => $info) { + + if (isset($info['active']) && $info['active']) { + + // Allow -dev versions of all active types + // Example: 5.3.6-dev + $QA_RELEASES['reported'][] = "{$pversion}-dev"; + $QA_RELEASES[$pversion]['dev_version'] = "{$pversion}-dev"; + + // Allow -dev version of upcoming qa releases (rc/alpha/beta) + // @todo confirm this php version format for all dev versions + if ((int)$info['release']['number'] > 0) { + $QA_RELEASES['reported'][] = "{$pversion}{$info['release']['type']}{$info['release']['number']}"; + if (!empty($info['release']['baseurl'])) { + + // php.net filename format for qa releases + // example: php-5.3.0RC2 + $fn_base = 'php-' . $pversion . $info['release']['type'] . $info['release']['number']; + + $QA_RELEASES[$pversion]['release']['version'] = $pversion . $info['release']['type'] . $info['release']['number']; + foreach ([ 'bz2', 'gz', 'xz' ] as $file_type) { + foreach ($QA_CHECKSUM_TYPES as $algo) { + if (isset($info['release'][$algo . '_' . $file_type])) { + $QA_RELEASES[$pversion]['release']['files'][$file_type][$algo] = $info['release'][$algo . '_' . $file_type]; + } + } + if (!empty($QA_RELEASES[$pversion]['release']['files'][$file_type])) { + $QA_RELEASES[$pversion]['release']['files'][$file_type]['path']= $info['release']['baseurl'] . $fn_base . '.tar.' . $file_type; + } + } + + if (empty($QA_RELEASES[$pversion]['release']['files'])) { + $QA_RELEASES[$pversion]['release']['enabled'] = false; + } + } + } else { + $QA_RELEASES[$pversion]['release']['enabled'] = false; + } + + } + } + + // Sorted information for later use + // @todo need these? + // $QA_RELEASES['releases'] : All current versions with active qa releases + foreach ($QA_RELEASES as $pversion => $info) { + if (isset($info['active']) && $info['active'] && !empty($info['release']['number'])) { + $QA_RELEASES['releases'][$pversion] = $info['release']; + } + } + +})($QA_RELEASES); diff --git a/release-candidates.php b/release-candidates.php new file mode 100644 index 0000000000..d3a6c46432 --- /dev/null +++ b/release-candidates.php @@ -0,0 +1,75 @@ +<?php +$_SERVER['BASE_PAGE'] = 'qa.php'; +include_once __DIR__ . '/include/prepend.inc'; +include_once __DIR__ . '/include/release-qa.php'; + +$SITE_UPDATE = date("D M d H:i:s Y T", filectime(__FILE__)); + +$SIDEBAR_DATA = ' +<div class="panel"> + Test Releases + <div class="body"> + The downloads on this page are not meant to be run in production. They are + for testing only. + </div> + <div class="body"> + If you find a problem when running your library or application with these + builds, please file a report on <a + href="https://github.com/php/php-src/issues/">GitHub Issues</a>. + </div> +</div> +'; + +site_header("Release Candidates", [ + 'current' => 'downloads', +]); + +?> +<h1>Release Candidate Builds</h1> +<p> +This page contains links to the Release Candidate builds that the release +managers create before each actual release. These builds are meant for the +community to test whether no inadvertent changes have been made, and +whether no regressions have been introduced. +</p> + +<h3>Available QA Releases:</h3> +<?php if (!empty($QA_RELEASES['releases'])) : ?> + <?php $plural = count($QA_RELEASES['releases']) > 1 ? 's' : ''; ?> + + <?php foreach ($QA_RELEASES['releases'] as $pversion => $info) : ?> + <h3 class="title"> + PHP <?php echo $info['version']; ?> + </h3> + <div class="content-box"> + + <ul> + <?php foreach ($info['files'] as $file_type => $file_info) : ?> + <li> + <a href="<?php echo $file_info['path'] ?>"><?php echo "php-{$info['version']}.tar.{$file_type}"; ?></a> + <span class="releasedate"><?php echo date('d M Y', strtotime($info['date'])); ?></span> + <?php foreach ($QA_CHECKSUM_TYPES as $algo): ?> + <span class="<?php echo $algo; ?>"> + <?php if (isset($file_info[$algo]) && strlen($file_info[$algo])) : ?> + <?php echo $file_info[$algo]; ?> + <?php else: ?> + <em><small>No checksum value available</small></em>) + <?php endif; ?> + <?php endforeach; ?> + </li> + <?php endforeach; ?> + </ul> + <?php endforeach; ?> +<?php else: ?> + <span class='lihack'>There are no QA releases available at the moment to test.</span> +<?php endif; ?> + +<p> + <br/> + <strong>Windows users:</strong> + See <a href="https://windows.php.net/qa/">here</a> for the Windows QA builds. +</p> + +<?php +site_footer(['sidebar' => $SIDEBAR_DATA]); +