4
4
workflow_call :
5
5
6
6
jobs :
7
- coverage :
7
+ module- coverage :
8
8
runs-on : ubuntu-latest
9
+ container :
10
+ image : " ghcr.io/it-at-m/eappointment-php-base:8.0-dev"
9
11
strategy :
10
12
fail-fast : false
11
13
matrix :
12
14
module : [
13
- ' mellon' ,
14
15
' zmsadmin' ,
15
- ' zmsapi' ,
16
16
' zmscalldisplay' ,
17
17
' zmscitizenapi' ,
18
- ' zmsclient' ,
19
- ' zmsdb' ,
20
18
' zmsdldb' ,
21
19
' zmsentities' ,
22
20
' zmsmessaging' ,
23
21
' zmsslim' ,
24
22
' zmsstatistic' ,
25
23
' zmsticketprinter'
26
24
]
27
-
28
25
steps :
29
- - uses : actions/checkout@v4
26
+ - uses : actions/checkout@main
27
+ - name : Install dependencies
28
+ run : |
29
+ cd "${{ matrix.module }}"
30
+ composer install --no-progress --prefer-dist --optimize-autoloader
31
+ - name : Run coverage
32
+ run : |
33
+ cd "${{ matrix.module }}"
34
+ mkdir -p coverage
35
+ php -dzend_extension=xdebug.so -dmemory_limit=-1 vendor/bin/phpunit \
36
+ --coverage-html coverage/html --coverage-clover coverage/clover.xml
37
+ - name : Upload coverage
38
+ uses : actions/upload-artifact@v4
39
+ with :
40
+ name : coverage-temp-${{ matrix.module }}
41
+ path : ${{ matrix.module }}/coverage/
42
+ retention-days : 1
30
43
31
- - name : Setup PHP
32
- uses : shivammathur/setup-php@v2
33
- with :
34
- php-version : ' 8.0'
35
- coverage : pcov
36
- tools : composer:v2
37
- ini-values : memory_limit=512M
38
-
39
- - name : Install dependencies
40
- working-directory : ${{ matrix.module }}
41
- run : composer install --prefer-dist --no-progress
42
-
43
- - name : Add ReturnTypeWillChange attribute
44
- run : |
45
- if [ -f "zmsentities/src/Zmsentities/Schema/Entity.php" ]; then
46
- sed -i '1,/class Entity/s/class Entity/#[\ReturnTypeWillChange]\nclass Entity/' zmsentities/src/Zmsentities/Schema/Entity.php
47
- fi
44
+ zmsapi-coverage :
45
+ runs-on : ubuntu-latest
46
+ container :
47
+ image : " ghcr.io/it-at-m/eappointment-php-base:8.0-dev"
48
+ services :
49
+ mariadb :
50
+ image : mariadb:10.6
51
+ env :
52
+ MYSQL_ROOT_PASSWORD : zmsapi
53
+ MYSQL_DATABASE : zmsbo
54
+ MYSQL_CHARACTER_SET : utf8mb4
55
+ MYSQL_COLLATION : utf8mb4_unicode_ci
56
+ ports :
57
+ - 3306:3306
58
+ options : >-
59
+ --health-cmd "mysqladmin ping"
60
+ --health-interval 10s
61
+ --health-timeout 10s
62
+ --health-retries 5
63
+ steps :
64
+ - uses : actions/checkout@main
65
+ - name : Install python3
66
+ run : |
67
+ apt update
68
+ apt install -y python3 python3-click python3-git
69
+ - name : Reference local modules
70
+ run : python3 ./cli modules reference-libraries --no-symlink
71
+ - name : Install dependencies
72
+ run : |
73
+ cd zmsapi
74
+ composer install --no-progress --prefer-dist --optimize-autoloader
75
+ - name : Setup and run coverage
76
+ env :
77
+ MYSQL_PORT : " tcp://mariadb:3306"
78
+ MYSQL_DATABASE : zmsbo
79
+ MYSQL_ROOT_PASSWORD : zmsapi
80
+ run : |
81
+ cd zmsapi
82
+ rm -rf data
83
+ ln -s vendor/eappointment/zmsdb/tests/Zmsdb/fixtures data
84
+ vendor/bin/importTestData --commit
85
+ mkdir -p coverage
86
+ php -dzend_extension=xdebug.so -dmemory_limit=-1 vendor/bin/phpunit \
87
+ --coverage-html coverage/html --coverage-clover coverage/clover.xml
88
+ - name : Upload coverage
89
+ uses : actions/upload-artifact@v4
90
+ with :
91
+ name : coverage-temp-zmsapi
92
+ path : zmsapi/coverage/
93
+ retention-days : 1
48
94
49
- - name : Run tests with coverage
50
- working-directory : ${{ matrix.module }}
51
- env :
52
- XDEBUG_MODE : coverage
53
- run : |
54
- mkdir -p coverage
55
- vendor/bin/phpunit --coverage-html coverage/html --coverage-clover coverage/clover.xml
95
+ zmsdb-coverage :
96
+ runs-on : ubuntu-latest
97
+ container :
98
+ image : " ghcr.io/it-at-m/eappointment-php-base:8.0-dev"
99
+ services :
100
+ mariadb :
101
+ image : mariadb:10.6
102
+ env :
103
+ MYSQL_ROOT_PASSWORD : zmsdb
104
+ MYSQL_DATABASE : zmsbo
105
+ MYSQL_CHARACTER_SET : utf8mb4
106
+ MYSQL_COLLATION : utf8mb4_unicode_ci
107
+ ports :
108
+ - 3306:3306
109
+ options : >-
110
+ --health-cmd "mysqladmin ping"
111
+ --health-interval 10s
112
+ --health-timeout 10s
113
+ --health-retries 5
114
+ steps :
115
+ - uses : actions/checkout@main
116
+ - name : Install python3
117
+ run : |
118
+ apt update
119
+ apt install -y python3 python3-click python3-git
120
+ - name : Reference local modules
121
+ run : python3 ./cli modules reference-libraries --no-symlink
122
+ - name : Install dependencies
123
+ run : |
124
+ cd zmsdb
125
+ composer install --no-progress --prefer-dist --optimize-autoloader
126
+ - name : Setup and run coverage
127
+ env :
128
+ MYSQL_PORT : " tcp://mariadb:3306"
129
+ MYSQL_DATABASE : zmsbo
130
+ MYSQL_ROOT_PASSWORD : zmsdb
131
+ run : |
132
+ cd zmsdb
133
+ bin/importTestData --commit
134
+ mkdir -p coverage
135
+ php -dzend_extension=xdebug.so -dmemory_limit=-1 vendor/bin/phpunit \
136
+ --coverage-html coverage/html --coverage-clover coverage/clover.xml
137
+ - name : Upload coverage
138
+ uses : actions/upload-artifact@v4
139
+ with :
140
+ name : coverage-temp-zmsdb
141
+ path : zmsdb/coverage/
142
+ retention-days : 1
56
143
57
- - name : Upload individual coverage
58
- uses : actions/upload-artifact@v4
59
- with :
60
- name : coverage-temp-${{ matrix.module }}
61
- path : ${{ matrix.module }}/coverage/
62
- retention-days : 1
63
- compression-level : 6
144
+ zmsclient-coverage :
145
+ runs-on : ubuntu-latest
146
+ steps :
147
+ - uses : actions/checkout@main
148
+ - name : Install Docker Compose
149
+ run : |
150
+ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
151
+ sudo chmod +x /usr/local/bin/docker-compose
152
+ - name : Run coverage
153
+ run : |
154
+ cd zmsclient
155
+ docker-compose up -d
156
+ mkdir -p coverage
157
+ docker-compose exec -T test ./vendor/bin/phpunit \
158
+ --coverage-html coverage/html --coverage-clover coverage/clover.xml
159
+ - name : Upload coverage
160
+ uses : actions/upload-artifact@v4
161
+ with :
162
+ name : coverage-temp-zmsclient
163
+ path : zmsclient/coverage/
164
+ retention-days : 1
64
165
65
166
combine-coverage :
66
- needs : coverage
167
+ needs : [module- coverage, zmsapi-coverage, zmsdb-coverage, zmsclient-coverage]
67
168
runs-on : ubuntu-latest
68
169
steps :
69
- - name : Download all coverage reports
70
- uses : actions/download-artifact@v4
71
- with :
72
- path : all-coverage
73
- merge-multiple : true
74
-
75
- - name : Combine reports
76
- run : |
77
- mkdir -p combined-coverage
78
- for module in mellon zmsadmin zmsapi zmscalldisplay zmscitizenapi zmsclient zmsdb zmsdldb zmsentities zmsmessaging zmsslim zmsstatistic zmsticketprinter; do
79
- if [ -d "all-coverage/coverage-temp-$module" ]; then
80
- mkdir -p "combined-coverage/$module"
81
- cp -r "all-coverage/coverage-temp-$module"/* "combined-coverage/$module/"
82
- fi
83
- done
84
-
85
- - name : Upload combined coverage
86
- uses : actions/upload-artifact@v4
87
- with :
88
- name : coverage-reports
89
- path : combined-coverage/
90
- retention-days : 7
170
+ - name : Download all coverage reports
171
+ uses : actions/download-artifact@v4
172
+ with :
173
+ path : all-coverage
174
+ merge-multiple : true
175
+ - name : Combine reports
176
+ run : |
177
+ mkdir -p combined-coverage
178
+ for module in zmsadmin zmscalldisplay zmscitizenapi zmsdldb zmsentities zmsmessaging zmsslim zmsstatistic zmsticketprinter zmsapi zmsdb zmsclient; do
179
+ if [ -d "all-coverage/coverage-temp-$module" ]; then
180
+ mkdir -p "combined-coverage/$module"
181
+ cp -r "all-coverage/coverage-temp-$module"/* "combined-coverage/$module/"
182
+ fi
183
+ done
184
+ - name : Upload combined coverage
185
+ uses : actions/upload-artifact@v4
186
+ with :
187
+ name : coverage-reports
188
+ path : combined-coverage/
189
+ retention-days : 7
0 commit comments