mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4: Move benchmarking job to nightly
This commit is contained in:
14
.github/nightly_matrix.php
vendored
14
.github/nightly_matrix.php
vendored
@@ -46,10 +46,11 @@ function get_current_version(): array {
|
||||
return [$major, $minor];
|
||||
}
|
||||
|
||||
function select_jobs($nightly, $labels, $php_version, $ref, $all_variations) {
|
||||
function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $ref, $all_variations) {
|
||||
$no_jobs = in_array('CI: No jobs', $labels, true);
|
||||
$all_jobs = in_array('CI: All jobs', $labels, true) || $nightly;
|
||||
$test_alpine = in_array('CI: Alpine', $labels, true);
|
||||
$test_benchmarking = in_array('CI: Benchmarking', $labels, true);
|
||||
$test_community = in_array('CI: Community', $labels, true);
|
||||
$test_coverage = in_array('CI: COVERAGE', $labels, true);
|
||||
$test_freebsd = in_array('CI: FreeBSD', $labels, true);
|
||||
@@ -67,6 +68,13 @@ function select_jobs($nightly, $labels, $php_version, $ref, $all_variations) {
|
||||
if (version_compare($php_version, '8.4', '>=') && ($all_jobs || !$no_jobs || $test_alpine)) {
|
||||
$jobs['ALPINE'] = true;
|
||||
}
|
||||
if (version_compare($php_version, '8.4', '>=')
|
||||
&& !$nightly
|
||||
&& ($all_jobs || !$no_jobs || $test_benchmarking)
|
||||
// push trigger is restricted to official repository.
|
||||
&& ($repository === 'php/php-src' || $trigger === 'pull_request')) {
|
||||
$jobs['BENCHMARKING'] = true;
|
||||
}
|
||||
if ($all_jobs || $test_community) {
|
||||
$jobs['COMMUNITY']['matrix'] = version_compare($php_version, '8.4', '>=')
|
||||
? ['type' => ['asan', 'verify_type_inference']]
|
||||
@@ -162,9 +170,11 @@ $labels = array_column($labels, 'name');
|
||||
$nightly = $trigger === 'schedule' || $trigger === 'workflow_dispatch';
|
||||
$all_variations = $nightly || in_array('CI: All variations', $labels, true);
|
||||
|
||||
$repository = $argv[5] ?? null;
|
||||
|
||||
foreach ($branches as &$branch) {
|
||||
$php_version = $branch['version'][0] . '.' . $branch['version'][1];
|
||||
$branch['jobs'] = select_jobs($nightly, $labels, $php_version, $branch['ref'], $all_variations);
|
||||
$branch['jobs'] = select_jobs($repository, $trigger, $nightly, $labels, $php_version, $branch['ref'], $all_variations);
|
||||
$branch['config']['ubuntu_version'] = version_compare($php_version, '8.5', '>=') ? '24.04' : '22.04';
|
||||
}
|
||||
|
||||
|
||||
103
.github/workflows/nightly.yml
vendored
103
.github/workflows/nightly.yml
vendored
@@ -964,3 +964,106 @@ jobs:
|
||||
configurationParameters: >-
|
||||
--${{ matrix.zts && 'enable' || 'disable' }}-zts
|
||||
runExtraTests: true
|
||||
BENCHMARKING:
|
||||
name: BENCHMARKING
|
||||
if: ${{ fromJson(inputs.branch).jobs.BENCHMARKING }}
|
||||
runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }}
|
||||
timeout-minutes: 50
|
||||
steps:
|
||||
- name: git checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
# ASLR can cause a lot of noise due to missed sse opportunities for memcpy
|
||||
# and other operations, so we disable it during benchmarking.
|
||||
- name: Disable ASLR
|
||||
run: echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
|
||||
- name: apt
|
||||
run: |
|
||||
set -x
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
bison \
|
||||
libgmp-dev \
|
||||
libonig-dev \
|
||||
libsqlite3-dev \
|
||||
openssl \
|
||||
re2c \
|
||||
valgrind
|
||||
- name: ccache
|
||||
uses: ./.github/actions/ccache
|
||||
with:
|
||||
name: "${{ github.job }}"
|
||||
- name: ./configure
|
||||
run: |
|
||||
set -x
|
||||
./buildconf --force
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--enable-mbstring \
|
||||
--enable-option-checking=fatal \
|
||||
--enable-sockets \
|
||||
--enable-werror \
|
||||
--prefix=/usr \
|
||||
--with-config-file-scan-dir=/etc/php.d \
|
||||
--with-gmp \
|
||||
--with-mysqli=mysqlnd \
|
||||
--with-openssl \
|
||||
--with-pdo-sqlite \
|
||||
--with-valgrind
|
||||
- name: make
|
||||
run: make -j$(/usr/bin/nproc) >/dev/null
|
||||
- name: make install
|
||||
run: |
|
||||
set -x
|
||||
sudo make install
|
||||
sudo mkdir -p /etc/php.d
|
||||
sudo chmod 777 /etc/php.d
|
||||
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
|
||||
echo opcache.enable=1 >> /etc/php.d/opcache.ini
|
||||
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
|
||||
- name: Setup
|
||||
run: |
|
||||
git config --global user.name "Benchmark"
|
||||
git config --global user.email "benchmark@php.net"
|
||||
sudo service mysql start
|
||||
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS wordpress"
|
||||
mysql -uroot -proot -e "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;"
|
||||
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'wordpress'@'localhost' WITH GRANT OPTION;"
|
||||
- name: git checkout benchmarking-data
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
repository: php/benchmarking-data
|
||||
ssh-key: ${{ secrets.BENCHMARKING_DATA_DEPLOY_KEY }}
|
||||
path: benchmark/repos/data
|
||||
- name: Benchmark
|
||||
run: php benchmark/benchmark.php true
|
||||
- name: Store result
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
set -x
|
||||
cd benchmark/repos/data
|
||||
git pull --autostash
|
||||
if [ -e ".git/MERGE_HEAD" ]; then
|
||||
echo "Merging, can't proceed"
|
||||
exit 1
|
||||
fi
|
||||
git add .
|
||||
if git diff --cached --quiet; then
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}"
|
||||
git push
|
||||
- name: Show diff
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |-
|
||||
set -x
|
||||
php benchmark/generate_diff.php \
|
||||
${{ github.sha }} \
|
||||
$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.sha }}) \
|
||||
> $GITHUB_STEP_SUMMARY
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: profiles
|
||||
path: ${{ github.workspace }}/benchmark/profiles
|
||||
retention-days: 30
|
||||
|
||||
105
.github/workflows/push.yml
vendored
105
.github/workflows/push.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Generate Matrix
|
||||
id: set-matrix
|
||||
run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}'
|
||||
run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}"
|
||||
PUSH:
|
||||
needs: GENERATE_MATRIX
|
||||
name: ${{ matrix.branch.ref }}
|
||||
@@ -55,106 +55,3 @@ jobs:
|
||||
all_variations: ${{ needs.GENERATE_MATRIX.outputs.all_variations == 'true' }}
|
||||
branch: ${{ toJSON(matrix.branch) }}
|
||||
secrets: inherit
|
||||
BENCHMARKING:
|
||||
name: BENCHMARKING
|
||||
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 50
|
||||
steps:
|
||||
- name: git checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
# ASLR can cause a lot of noise due to missed sse opportunities for memcpy
|
||||
# and other operations, so we disable it during benchmarking.
|
||||
- name: Disable ASLR
|
||||
run: echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
|
||||
- name: apt
|
||||
run: |
|
||||
set -x
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
bison \
|
||||
libgmp-dev \
|
||||
libonig-dev \
|
||||
libsqlite3-dev \
|
||||
openssl \
|
||||
re2c \
|
||||
valgrind
|
||||
- name: ccache
|
||||
uses: ./.github/actions/ccache
|
||||
with:
|
||||
name: "${{ github.job }}"
|
||||
- name: ./configure
|
||||
run: |
|
||||
set -x
|
||||
./buildconf --force
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--enable-mbstring \
|
||||
--enable-option-checking=fatal \
|
||||
--enable-sockets \
|
||||
--enable-werror \
|
||||
--prefix=/usr \
|
||||
--with-config-file-scan-dir=/etc/php.d \
|
||||
--with-gmp \
|
||||
--with-mysqli=mysqlnd \
|
||||
--with-openssl \
|
||||
--with-pdo-sqlite \
|
||||
--with-valgrind
|
||||
- name: make
|
||||
run: make -j$(/usr/bin/nproc) >/dev/null
|
||||
- name: make install
|
||||
run: |
|
||||
set -x
|
||||
sudo make install
|
||||
sudo mkdir -p /etc/php.d
|
||||
sudo chmod 777 /etc/php.d
|
||||
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
|
||||
echo opcache.enable=1 >> /etc/php.d/opcache.ini
|
||||
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
|
||||
- name: Setup
|
||||
run: |
|
||||
git config --global user.name "Benchmark"
|
||||
git config --global user.email "benchmark@php.net"
|
||||
sudo service mysql start
|
||||
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS wordpress"
|
||||
mysql -uroot -proot -e "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;"
|
||||
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'wordpress'@'localhost' WITH GRANT OPTION;"
|
||||
- name: git checkout benchmarking-data
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
repository: php/benchmarking-data
|
||||
ssh-key: ${{ secrets.BENCHMARKING_DATA_DEPLOY_KEY }}
|
||||
path: benchmark/repos/data
|
||||
- name: Benchmark
|
||||
run: php benchmark/benchmark.php true
|
||||
- name: Store result
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
set -x
|
||||
cd benchmark/repos/data
|
||||
git pull --autostash
|
||||
if [ -e ".git/MERGE_HEAD" ]; then
|
||||
echo "Merging, can't proceed"
|
||||
exit 1
|
||||
fi
|
||||
git add .
|
||||
if git diff --cached --quiet; then
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}"
|
||||
git push
|
||||
- name: Show diff
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |-
|
||||
set -x
|
||||
php benchmark/generate_diff.php \
|
||||
${{ github.sha }} \
|
||||
$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.sha }}) \
|
||||
> $GITHUB_STEP_SUMMARY
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: profiles
|
||||
path: ${{ github.workspace }}/benchmark/profiles
|
||||
retention-days: 30
|
||||
|
||||
2
.github/workflows/root.yml
vendored
2
.github/workflows/root.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
nightly-
|
||||
- name: Generate Matrix
|
||||
id: set-matrix
|
||||
run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}" '[]'
|
||||
run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}" '[]' "${{ github.repository }}"
|
||||
NIGHTLY:
|
||||
needs: GENERATE_MATRIX
|
||||
name: ${{ matrix.branch.ref }}
|
||||
|
||||
Reference in New Issue
Block a user