1
1
<?php
2
2
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 ' ];
10
4
11
5
function get_branch_commit_cache_file_path (): string {
12
6
return dirname (__DIR__ ) . '/branch-commit-cache.json ' ;
@@ -21,137 +15,21 @@ function get_branches() {
21
15
22
16
$ changed_branches = [];
23
17
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 ));
26
20
27
21
if ($ previous_commit_hash !== $ current_commit_hash ) {
28
22
$ changed_branches [] = $ branch ;
29
23
}
30
24
31
- $ branch_commit_map [$ branch[ ' ref ' ] ] = $ current_commit_hash ;
25
+ $ branch_commit_map [$ branch ] = $ current_commit_hash ;
32
26
}
33
27
34
28
file_put_contents ($ branch_commit_cache_file , json_encode ($ branch_commit_map ));
35
29
36
30
return $ changed_branches ;
37
31
}
38
32
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
-
155
33
$ trigger = $ argv [1 ] ?? 'schedule ' ;
156
34
$ attempt = (int ) ($ argv [2 ] ?? 1 );
157
35
$ monday = date ('w ' , time ()) === '1 ' ;
@@ -162,19 +40,8 @@ function get_current_version(): array {
162
40
@unlink (get_branch_commit_cache_file_path ());
163
41
}
164
42
$ 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 ];
173
44
174
45
$ f = fopen (getenv ('GITHUB_OUTPUT ' ), 'a ' );
175
46
fwrite ($ 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" );
180
47
fclose ($ f );
0 commit comments