|
40 | 40 | CC: ccache gcc
|
41 | 41 | CXX: ccache g++
|
42 | 42 | jobs:
|
43 |
| - LINUX_X64: |
44 |
| - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' |
45 |
| - services: |
46 |
| - mysql: |
47 |
| - image: mysql:8.3 |
48 |
| - ports: |
49 |
| - - 3306:3306 |
50 |
| - env: |
51 |
| - MYSQL_DATABASE: test |
52 |
| - MYSQL_ROOT_PASSWORD: root |
53 |
| - postgres: |
54 |
| - image: postgres |
55 |
| - ports: |
56 |
| - - 5432:5432 |
57 |
| - env: |
58 |
| - POSTGRES_USER: postgres |
59 |
| - POSTGRES_PASSWORD: postgres |
60 |
| - POSTGRES_DB: test |
61 |
| - firebird: |
62 |
| - image: jacobalberty/firebird |
63 |
| - ports: |
64 |
| - - 3050:3050 |
65 |
| - env: |
66 |
| - ISC_PASSWORD: test |
67 |
| - FIREBIRD_DATABASE: test.fdb |
68 |
| - FIREBIRD_USER: test |
69 |
| - FIREBIRD_PASSWORD: test |
70 |
| - strategy: |
71 |
| - fail-fast: false |
72 |
| - matrix: |
73 |
| - include: |
74 |
| - - debug: false |
75 |
| - zts: false |
76 |
| - asan: false |
77 |
| - - debug: true |
78 |
| - zts: true |
79 |
| - asan: true |
80 |
| - name: "LINUX_X64_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}${{ matrix.asan && '_ASAN' || '' }}" |
81 |
| - runs-on: ubuntu-24.04 |
82 |
| - timeout-minutes: 50 |
83 |
| - steps: |
84 |
| - - name: git checkout |
85 |
| - uses: actions/checkout@v4 |
86 |
| - - name: apt |
87 |
| - uses: ./.github/actions/apt-x64 |
88 |
| - - name: System info |
89 |
| - run: | |
90 |
| - echo "::group::Show host CPU info" |
91 |
| - lscpu |
92 |
| - echo "::endgroup::" |
93 |
| - echo "::group::Show installed package versions" |
94 |
| - dpkg -l |
95 |
| - echo "::endgroup::" |
96 |
| - - name: Create MSSQL container |
97 |
| - if: ${{ !matrix.asan }} |
98 |
| - uses: ./.github/actions/setup-mssql |
99 |
| - - name: Setup Caddy server |
100 |
| - uses: ./.github/actions/setup-caddy |
101 |
| - - name: ccache |
102 |
| - uses: hendrikmuhs/ccache-action@v1.2 |
103 |
| - with: |
104 |
| - # This duplicates the "job.name" expression above because |
105 |
| - # GitHub has no way to query the job name (github.job is the |
106 |
| - # job id, not the job name) |
107 |
| - key: "LINUX_X64_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}${{ matrix.asan && '_ASAN' || '' }}-${{hashFiles('main/php_version.h')}}" |
108 |
| - append-timestamp: false |
109 |
| - save: ${{ github.event_name != 'pull_request' }} |
110 |
| - - name: ./configure |
111 |
| - uses: ./.github/actions/configure-x64 |
112 |
| - with: |
113 |
| - configurationParameters: >- |
114 |
| - --${{ matrix.debug && 'enable' || 'disable' }}-debug |
115 |
| - --${{ matrix.zts && 'enable' || 'disable' }}-zts |
116 |
| - ${{ matrix.asan && 'CFLAGS="-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC" LDFLAGS="-fsanitize=undefined,address -fno-sanitize=function" CC=clang CXX=clang++' || '' }} |
117 |
| - skipSlow: ${{ matrix.asan }} |
118 |
| - - name: make |
119 |
| - run: make -j$(/usr/bin/nproc) >/dev/null |
120 |
| - - name: make install |
121 |
| - uses: ./.github/actions/install-linux |
122 |
| - - name: Setup |
123 |
| - if: ${{ !matrix.asan }} |
124 |
| - uses: ./.github/actions/setup-x64 |
125 |
| - - name: Test |
126 |
| - if: matrix.asan == false |
127 |
| - uses: ./.github/actions/test-linux |
128 |
| - - name: Test Tracing JIT |
129 |
| - uses: ./.github/actions/test-linux |
130 |
| - with: |
131 |
| - jitType: tracing |
132 |
| - runTestsParameters: >- |
133 |
| - -d zend_extension=opcache.so |
134 |
| - -d opcache.enable_cli=1 |
135 |
| - ${{ matrix.asan && '--asan -x' || '' }} |
136 |
| - - name: Verify generated files are up to date |
137 |
| - if: ${{ !matrix.asan }} |
138 |
| - uses: ./.github/actions/verify-generated-files |
139 |
| - LINUX_X32: |
140 |
| - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' |
141 |
| - name: LINUX_X32_DEBUG_ZTS |
142 |
| - runs-on: ubuntu-latest |
143 |
| - timeout-minutes: 50 |
144 |
| - container: |
145 |
| - image: ubuntu:24.04 |
146 |
| - env: |
147 |
| - MYSQL_TEST_HOST: mysql |
148 |
| - PDO_MYSQL_TEST_DSN: mysql:host=mysql;dbname=test |
149 |
| - PDO_MYSQL_TEST_HOST: mysql |
150 |
| - services: |
151 |
| - mysql: |
152 |
| - image: mysql:8.3 |
153 |
| - ports: |
154 |
| - - 3306:3306 |
155 |
| - env: |
156 |
| - MYSQL_DATABASE: test |
157 |
| - MYSQL_ROOT_PASSWORD: root |
158 |
| - steps: |
159 |
| - - name: git checkout |
160 |
| - uses: actions/checkout@v4 |
161 |
| - - name: apt |
162 |
| - uses: ./.github/actions/apt-x32 |
163 |
| - - name: ccache |
164 |
| - uses: hendrikmuhs/ccache-action@v1.2 |
165 |
| - with: |
166 |
| - key: "${{github.job}}-${{hashFiles('main/php_version.h')}}" |
167 |
| - append-timestamp: false |
168 |
| - - name: ./configure |
169 |
| - uses: ./.github/actions/configure-x32 |
170 |
| - with: |
171 |
| - configurationParameters: >- |
172 |
| - --enable-debug |
173 |
| - --enable-zts |
174 |
| - - name: make |
175 |
| - run: make -j$(/usr/bin/nproc) >/dev/null |
176 |
| - - name: make install |
177 |
| - uses: ./.github/actions/install-linux-x32 |
178 |
| - - name: Test Tracing JIT |
179 |
| - uses: ./.github/actions/test-linux |
180 |
| - with: |
181 |
| - jitType: tracing |
182 |
| - runTestsParameters: >- |
183 |
| - -d zend_extension=opcache.so |
184 |
| - -d opcache.enable_cli=1 |
185 |
| - MACOS_DEBUG_NTS: |
186 |
| - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' |
187 |
| - strategy: |
188 |
| - fail-fast: false |
189 |
| - matrix: |
190 |
| - include: |
191 |
| - - os: 13 |
192 |
| - arch: X64 |
193 |
| - - os: 14 |
194 |
| - arch: ARM64 |
195 |
| - name: MACOS_${{ matrix.arch }}_DEBUG_NTS |
196 |
| - runs-on: macos-${{ matrix.os }} |
197 |
| - timeout-minutes: 50 |
198 |
| - steps: |
199 |
| - - name: git checkout |
200 |
| - uses: actions/checkout@v4 |
201 |
| - - name: brew |
202 |
| - uses: ./.github/actions/brew |
203 |
| - - name: ccache |
204 |
| - uses: hendrikmuhs/ccache-action@v1.2 |
205 |
| - with: |
206 |
| - key: "${{github.job}}-${{matrix.os}}-${{hashFiles('main/php_version.h')}}" |
207 |
| - append-timestamp: false |
208 |
| - save: ${{ github.event_name != 'pull_request' }} |
209 |
| - - name: ./configure |
210 |
| - uses: ./.github/actions/configure-macos |
211 |
| - with: |
212 |
| - configurationParameters: --enable-debug --disable-zts |
213 |
| - - name: make |
214 |
| - run: |- |
215 |
| - export PATH="$(brew --prefix)/opt/bison/bin:$PATH" |
216 |
| - make -j$(sysctl -n hw.logicalcpu) >/dev/null |
217 |
| - - name: make install |
218 |
| - run: sudo make install |
219 |
| - - name: Test Tracing JIT |
220 |
| - uses: ./.github/actions/test-macos |
221 |
| - with: |
222 |
| - jitType: tracing |
223 |
| - runTestsParameters: >- |
224 |
| - -d zend_extension=opcache.so |
225 |
| - -d opcache.enable_cli=1 |
226 |
| - - name: Verify generated files are up to date |
227 |
| - uses: ./.github/actions/verify-generated-files |
228 | 43 | WINDOWS:
|
229 | 44 | if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
|
230 | 45 | name: WINDOWS_X64_ZTS
|
@@ -252,118 +67,3 @@ jobs:
|
252 | 67 | run: .github/scripts/windows/build.bat
|
253 | 68 | - name: Test
|
254 | 69 | run: .github/scripts/windows/test.bat
|
255 |
| - BENCHMARKING: |
256 |
| - name: BENCHMARKING |
257 |
| - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' |
258 |
| - runs-on: ubuntu-24.04 |
259 |
| - timeout-minutes: 50 |
260 |
| - steps: |
261 |
| - - name: git checkout |
262 |
| - uses: actions/checkout@v4 |
263 |
| - with: |
264 |
| - fetch-depth: 0 |
265 |
| - # ASLR can cause a lot of noise due to missed sse opportunities for memcpy |
266 |
| - # and other operations, so we disable it during benchmarking. |
267 |
| - - name: Disable ASLR |
268 |
| - run: echo 0 | sudo tee /proc/sys/kernel/randomize_va_space |
269 |
| - - name: apt |
270 |
| - run: | |
271 |
| - set -x |
272 |
| - sudo apt-get update |
273 |
| - sudo apt-get install \ |
274 |
| - bison \ |
275 |
| - libgmp-dev \ |
276 |
| - libonig-dev \ |
277 |
| - libsqlite3-dev \ |
278 |
| - openssl \ |
279 |
| - re2c \ |
280 |
| - valgrind |
281 |
| - - name: ccache |
282 |
| - uses: hendrikmuhs/ccache-action@v1.2 |
283 |
| - with: |
284 |
| - key: "${{github.job}}-${{hashFiles('main/php_version.h')}}" |
285 |
| - append-timestamp: false |
286 |
| - save: ${{ github.event_name != 'pull_request' }} |
287 |
| - - name: ./configure |
288 |
| - run: | |
289 |
| - set -x |
290 |
| - ./buildconf --force |
291 |
| - ./configure \ |
292 |
| - --disable-debug \ |
293 |
| - --enable-mbstring \ |
294 |
| - --enable-opcache \ |
295 |
| - --enable-option-checking=fatal \ |
296 |
| - --enable-sockets \ |
297 |
| - --enable-werror \ |
298 |
| - --prefix=/usr \ |
299 |
| - --with-config-file-scan-dir=/etc/php.d \ |
300 |
| - --with-gmp \ |
301 |
| - --with-mysqli=mysqlnd \ |
302 |
| - --with-openssl \ |
303 |
| - --with-pdo-sqlite \ |
304 |
| - --with-valgrind |
305 |
| - - name: make |
306 |
| - run: make -j$(/usr/bin/nproc) >/dev/null |
307 |
| - - name: make install |
308 |
| - run: | |
309 |
| - set -x |
310 |
| - sudo make install |
311 |
| - sudo mkdir -p /etc/php.d |
312 |
| - sudo chmod 777 /etc/php.d |
313 |
| - echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini |
314 |
| - echo zend_extension=opcache.so >> /etc/php.d/opcache.ini |
315 |
| - echo opcache.enable=1 >> /etc/php.d/opcache.ini |
316 |
| - echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini |
317 |
| - - name: Setup |
318 |
| - run: | |
319 |
| - git config --global user.name "Benchmark" |
320 |
| - git config --global user.email "benchmark@php.net" |
321 |
| - sudo service mysql start |
322 |
| - mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS wordpress" |
323 |
| - mysql -uroot -proot -e "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;" |
324 |
| - mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'wordpress'@'localhost' WITH GRANT OPTION;" |
325 |
| - - name: git checkout benchmarking-data |
326 |
| - uses: actions/checkout@v4 |
327 |
| - with: |
328 |
| - repository: php/benchmarking-data |
329 |
| - ssh-key: ${{ secrets.BENCHMARKING_DATA_DEPLOY_KEY }} |
330 |
| - path: benchmark/repos/data |
331 |
| - - name: Benchmark |
332 |
| - run: php benchmark/benchmark.php true |
333 |
| - - name: Store result |
334 |
| - if: github.event_name == 'push' |
335 |
| - run: | |
336 |
| - set -x |
337 |
| - cd benchmark/repos/data |
338 |
| - git pull --autostash |
339 |
| - if [ -e ".git/MERGE_HEAD" ]; then |
340 |
| - echo "Merging, can't proceed" |
341 |
| - exit 1 |
342 |
| - fi |
343 |
| - git add . |
344 |
| - if git diff --cached --quiet; then |
345 |
| - exit 0 |
346 |
| - fi |
347 |
| - git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}" |
348 |
| - git push |
349 |
| - - name: Show diff |
350 |
| - if: github.event_name == 'pull_request' |
351 |
| - run: |- |
352 |
| - set -x |
353 |
| - php benchmark/generate_diff.php \ |
354 |
| - ${{ github.sha }} \ |
355 |
| - $(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.sha }}) \ |
356 |
| - > $GITHUB_STEP_SUMMARY |
357 |
| - - uses: actions/upload-artifact@v4 |
358 |
| - with: |
359 |
| - name: profiles |
360 |
| - path: ${{ github.workspace }}/benchmark/profiles |
361 |
| - retention-days: 30 |
362 |
| - FREEBSD: |
363 |
| - name: FREEBSD |
364 |
| - runs-on: ubuntu-latest |
365 |
| - steps: |
366 |
| - - name: git checkout |
367 |
| - uses: actions/checkout@v4 |
368 |
| - - name: FreeBSD |
369 |
| - uses: ./.github/actions/freebsd |
0 commit comments