11<?php
22
3- const BRANCHES = [
4- ['name ' => 'master ' , 'ref ' => 'master ' , 'version ' => ['major ' => 8 , 'minor ' => 5 ]],
5- ['name ' => 'PHP-8.4 ' , 'ref ' => 'PHP-8.4 ' , 'version ' => ['major ' => 8 , 'minor ' => 4 ]],
6- ['name ' => 'PHP-8.3 ' , 'ref ' => 'PHP-8.3 ' , 'version ' => ['major ' => 8 , 'minor ' => 3 ]],
7- ['name ' => 'PHP-8.2 ' , 'ref ' => 'PHP-8.2 ' , 'version ' => ['major ' => 8 , 'minor ' => 2 ]],
8- ['name ' => 'PHP-8.1 ' , 'ref ' => 'PHP-8.1 ' , 'version ' => ['major ' => 8 , 'minor ' => 1 ]],
9- ];
3+ const BRANCHES = ['master ' , 'PHP-8.4 ' , 'PHP-8.3 ' , 'PHP-8.2 ' , 'PHP-8.1 ' ];
104
115function get_branch_commit_cache_file_path (): string {
126 return dirname (__DIR__ ) . '/branch-commit-cache.json ' ;
@@ -21,137 +15,21 @@ function get_branches() {
2115
2216 $ changed_branches = [];
2317 foreach (BRANCHES as $ branch ) {
24- $ previous_commit_hash = $ branch_commit_map [$ branch[ ' ref ' ] ] ?? null ;
25- $ current_commit_hash = trim (shell_exec ('git rev-parse origin/ ' . $ branch[ ' ref ' ] ));
18+ $ previous_commit_hash = $ branch_commit_map [$ branch ] ?? null ;
19+ $ current_commit_hash = trim (shell_exec ('git rev-parse origin/ ' . $ branch ));
2620
2721 if ($ previous_commit_hash !== $ current_commit_hash ) {
2822 $ changed_branches [] = $ branch ;
2923 }
3024
31- $ branch_commit_map [$ branch[ ' ref ' ] ] = $ current_commit_hash ;
25+ $ branch_commit_map [$ branch ] = $ current_commit_hash ;
3226 }
3327
3428 file_put_contents ($ branch_commit_cache_file , json_encode ($ branch_commit_map ));
3529
3630 return $ changed_branches ;
3731}
3832
39- function get_matrix_include (array $ branches ) {
40- $ jobs = [];
41- foreach ($ branches as $ branch ) {
42- $ jobs [] = [
43- 'name ' => '_ASAN_UBSAN ' ,
44- 'branch ' => $ branch ,
45- 'debug ' => true ,
46- 'zts ' => true ,
47- 'configuration_parameters ' => "CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address' " ,
48- 'run_tests_parameters ' => '--asan ' ,
49- 'test_function_jit ' => false ,
50- 'asan ' => true ,
51- ];
52- $ jobs [] = [
53- 'name ' => '_REPEAT ' ,
54- 'branch ' => $ branch ,
55- 'debug ' => true ,
56- 'zts ' => false ,
57- 'run_tests_parameters ' => '--repeat 2 ' ,
58- 'timeout_minutes ' => 360 ,
59- 'test_function_jit ' => true ,
60- 'asan ' => false ,
61- ];
62- $ jobs [] = [
63- 'name ' => '_VARIATION ' ,
64- 'branch ' => $ branch ,
65- 'debug ' => true ,
66- 'zts ' => true ,
67- 'configuration_parameters ' => "CFLAGS='-DZEND_RC_DEBUG=1 -DPROFITABILITY_CHECKS=0 -DZEND_VERIFY_FUNC_INFO=1 -DZEND_VERIFY_TYPE_INFERENCE' " ,
68- 'run_tests_parameters ' => '-d zend_test.observer.enabled=1 -d zend_test.observer.show_output=0 ' ,
69- 'timeout_minutes ' => 360 ,
70- 'test_function_jit ' => true ,
71- 'asan ' => false ,
72- ];
73- }
74- return $ jobs ;
75- }
76-
77- function get_windows_matrix_include (array $ branches ) {
78- $ jobs = [];
79- foreach ($ branches as $ branch ) {
80- $ jobs [] = [
81- 'branch ' => $ branch ,
82- 'x64 ' => true ,
83- 'zts ' => true ,
84- 'opcache ' => true ,
85- ];
86- $ jobs [] = [
87- 'branch ' => $ branch ,
88- 'x64 ' => false ,
89- 'zts ' => false ,
90- 'opcache ' => false ,
91- ];
92- }
93- return $ jobs ;
94- }
95-
96- function get_macos_matrix_include (array $ branches ) {
97- $ jobs = [];
98- foreach ($ branches as $ branch ) {
99- foreach ([true , false ] as $ debug ) {
100- foreach ([true , false ] as $ zts ) {
101- $ jobs [] = [
102- 'branch ' => $ branch ,
103- 'debug ' => $ debug ,
104- 'zts ' => $ zts ,
105- 'os ' => '13 ' ,
106- 'arch ' => 'X64 ' ,
107- 'test_jit ' => true ,
108- ];
109- if ($ branch ['version ' ]['minor ' ] >= 4 || $ branch ['version ' ]['major ' ] >= 9 ) {
110- $ jobs [] = [
111- 'branch ' => $ branch ,
112- 'debug ' => $ debug ,
113- 'zts ' => $ zts ,
114- 'os ' => '14 ' ,
115- 'arch ' => 'ARM64 ' ,
116- 'test_jit ' => !$ zts ,
117- ];
118- }
119- }
120- }
121- }
122- return $ jobs ;
123- }
124-
125- function get_alpine_matrix_include (array $ branches ) {
126- $ jobs = [];
127- foreach ($ branches as $ branch ) {
128- if ([$ branch ['version ' ]['major ' ], $ branch ['version ' ]['minor ' ]] < [8 , 4 ]) {
129- continue ;
130- }
131- $ jobs [] = [
132- 'name ' => '_ASAN_UBSAN ' ,
133- 'branch ' => $ branch ,
134- 'debug ' => true ,
135- 'zts ' => true ,
136- 'asan ' => true ,
137- 'test_jit ' => true ,
138- 'configuration_parameters ' => "CFLAGS='-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address -fno-sanitize=function' CC=clang-17 CXX=clang++-17 " ,
139- 'run_tests_parameters ' => '--asan -x ' ,
140- ];
141- }
142- return $ jobs ;
143- }
144-
145- function get_current_version (): array {
146- $ file = dirname (__DIR__ ) . '/main/php_version.h ' ;
147- $ content = file_get_contents ($ file );
148- preg_match ('(^#define PHP_MAJOR_VERSION (?<num>\d+)$)m ' , $ content , $ matches );
149- $ major = $ matches ['num ' ];
150- preg_match ('(^#define PHP_MINOR_VERSION (?<num>\d+)$)m ' , $ content , $ matches );
151- $ minor = $ matches ['num ' ];
152- return ['major ' => $ major , 'minor ' => $ minor ];
153- }
154-
15533$ trigger = $ argv [1 ] ?? 'schedule ' ;
15634$ attempt = (int ) ($ argv [2 ] ?? 1 );
15735$ monday = date ('w ' , time ()) === '1 ' ;
@@ -162,19 +40,8 @@ function get_current_version(): array {
16240 @unlink (get_branch_commit_cache_file_path ());
16341}
16442$ branch = $ argv [3 ] ?? 'master ' ;
165-
166- $ branches = $ branch === 'master '
167- ? get_branches ()
168- : [['name ' => strtoupper ($ branch ), 'ref ' => $ branch , 'version ' => get_current_version ()]];
169- $ matrix_include = get_matrix_include ($ branches );
170- $ windows_matrix_include = get_windows_matrix_include ($ branches );
171- $ macos_matrix_include = get_macos_matrix_include ($ branches );
172- $ alpine_matrix_include = get_alpine_matrix_include ($ branches );
43+ $ branches = $ branch === 'master ' ? get_branches () : [$ branch ];
17344
17445$ f = fopen (getenv ('GITHUB_OUTPUT ' ), 'a ' );
17546fwrite ($ f , 'branches= ' . json_encode ($ branches , JSON_UNESCAPED_SLASHES ) . "\n" );
176- fwrite ($ f , 'matrix-include= ' . json_encode ($ matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
177- fwrite ($ f , 'windows-matrix-include= ' . json_encode ($ windows_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
178- fwrite ($ f , 'macos-matrix-include= ' . json_encode ($ macos_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
179- fwrite ($ f , 'alpine-matrix-include= ' . json_encode ($ alpine_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
18047fclose ($ f );
0 commit comments