Skip to content

[WIP] Azure: Publish code coverage results #4746

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,8 @@ tmp-php.ini
# ------------------------------------------------------------------------------
*.gcda
*.gcno
/gcovr.xml
/gcovr_html/
/lcov_html/
/php_lcov.info

Expand Down
70 changes: 2 additions & 68 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,73 +12,7 @@ trigger:
- UPGRADING.INTERNALS

jobs:
- template: azure/job.yml
- template: azure/coverage_job.yml
parameters:
configurationName: DEBUG_NTS
configurationName: COVERAGE
configurationParameters: '--enable-debug --disable-maintainer-zts'
- template: azure/job.yml
parameters:
configurationName: RELEASE_ZTS
configurationParameters: '--disable-debug --enable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_DEBUG_ZTS
configurationParameters: '--enable-debug --enable-maintainer-zts'
- template: azure/macos/job.yml
parameters:
configurationName: MACOS_DEBUG_NTS
configurationParameters: '--enable-debug --disable-maintainer-zts'
- ${{ if eq(variables['Build.Reason'], 'Schedule') }}:
- template: azure/job.yml
parameters:
configurationName: DEBUG_ZTS
configurationParameters: '--enable-debug --enable-maintainer-zts'
- template: azure/job.yml
parameters:
configurationName: RELEASE_NTS
configurationParameters: '--disable-debug --disable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_DEBUG_NTS
configurationParameters: '--enable-debug --disable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_RELEASE_NTS
configurationParameters: '--disable-debug --disable-maintainer-zts'
- template: azure/i386/job.yml
parameters:
configurationName: I386_RELEASE_ZTS
configurationParameters: '--disable-debug --enable-maintainer-zts'
- template: azure/macos/job.yml
parameters:
configurationName: MACOS_DEBUG_ZTS
configurationParameters: '--enable-debug --enable-maintainer-zts'
- template: azure/macos/job.yml
parameters:
configurationName: MACOS_RELEASE_NTS
configurationParameters: '--disable-debug --disable-maintainer-zts'
- template: azure/macos/job.yml
parameters:
configurationName: MACOS_RELEASE_ZTS
configurationParameters: '--disable-debug --enable-maintainer-zts'
- template: azure/job.yml
parameters:
configurationName: DEBUG_ZTS_ASAN_UBSAN
configurationParameters: >-
--enable-debug --enable-maintainer-zts
CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC'
LDFLAGS='-fsanitize=undefined,address'
runTestsParameters: --asan
timeoutInMinutes: 120
- template: azure/msan_job.yml
parameters:
configurationName: DEBUG_ZTS_MSAN
configurationParameters: '--enable-debug --enable-maintainer-zts'
runTestsParameters: --asan
- template: azure/community_job.yml
parameters:
configurationName: COMMUNITY
configurationParameters: >-
--enable-debug --enable-maintainer-zts
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
LDFLAGS='-fsanitize=undefined,address'
42 changes: 42 additions & 0 deletions azure/coverage_job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
parameters:
configurationName: ''
configurationParameters: ''
runTestsParameters: ''
timeoutInMinutes: 60

jobs:
- job: ${{ parameters.configurationName }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
pool:
vmImage: 'ubuntu-latest'
steps:
- template: apt.yml
- script: |
sudo -H pip install gcovr
displayName: 'Install gcovr'
- template: configure.yml
parameters:
configurationParameters: --enable-gcov ${{ parameters.configurationParameters }}
- script: make -j$(/usr/bin/nproc) >/dev/null
displayName: 'Make Build'
- template: install.yml
- script: |
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo -u postgres psql -c "CREATE DATABASE test;"
displayName: 'Setup'
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
runTestsParameters: ${{ parameters.runTestsParameters }}
- script: |
make gcovr-xml
mv gcovr.xml coverage.xml
displayName: 'Generate ${{ parameters.configurationName }} Test Coverage'
condition: or(succeeded(), failed())
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: coverage.xml
displayName: 'Publish ${{ parameters.configurationName }} Test Coverage'
condition: or(succeeded(), failed())
10 changes: 10 additions & 0 deletions azure/install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
steps:
- script: |
sudo make install
sudo mkdir /etc/php.d
sudo chmod 777 /etc/php.d
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
displayName: 'Install Build'
10 changes: 1 addition & 9 deletions azure/job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,7 @@ jobs:
configurationParameters: ${{ parameters.configurationParameters }}
- script: make -j$(/usr/bin/nproc) >/dev/null
displayName: 'Make Build'
- script: |
sudo make install
sudo mkdir /etc/php.d
sudo chmod 777 /etc/php.d
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
displayName: 'Install Build'
- template: install.yml
- script: |
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
Expand Down
62 changes: 44 additions & 18 deletions build/Makefile.gcov
Original file line number Diff line number Diff line change
@@ -1,38 +1,64 @@
#
# LCOV
# GCOV
#

LTP = lcov
LTP_GENHTML = genhtml

lcov: lcov-html
LCOV_EXCLUDES = \
'$(top_srcdir)/ext/bcmath/libbcmath/*' \
'$(top_srcdir)/ext/date/lib/*' \
'$(top_srcdir)/ext/fileinfo/libmagic/*' \
'$(top_srcdir)/ext/gd/libgd/*' \
'$(top_srcdir)/ext/hash/sha3/*' \
'$(top_srcdir)/ext/mbstring/libmbfl/*' \
'$(top_srcdir)/ext/opcache/jit/libudis86/*' \
'$(top_srcdir)/ext/pcre/pcre2lib/*' \
'$(top_srcdir)/ext/xmlrpc/libxmlrpc/*'

GCOVR_EXCLUDES = \
'ext/bcmath/libbcmath/.*' \
'ext/date/lib/.*' \
'ext/fileinfo/libmagic/.*' \
'ext/gd/libgd/.*' \
'ext/hash/sha3/.*' \
'ext/mbstring/libmbfl/.*' \
'ext/opcache/jit/libudis86/.*' \
'ext/pcre/pcre2lib/.*' \
'ext/xmlrpc/libxmlrpc/.*'

lcov-test: lcov-clean-data test
lcov: lcov-html

php_lcov.info: lcov-test
php_lcov.info:
@echo "Generating lcov data for $@"
@$(LTP) --capture --no-external --directory . --output-file $@
$(LTP) --capture --no-external --directory . --output-file $@
@echo "Stripping bundled libraries from $@"
@$(LTP) --remove $@ \
'*/<stdout>' \
'$(top_srcdir)/ext/bcmath/libbcmath/*' \
'$(top_srcdir)/ext/date/lib/*' \
'$(top_srcdir)/ext/fileinfo/libmagic/*' \
'$(top_srcdir)/ext/gd/libgd/*' \
'$(top_srcdir)/ext/hash/sha3/*' \
'$(top_srcdir)/ext/mbstring/libmbfl/*' \
'$(top_srcdir)/ext/opcache/jit/libudis86/*' \
'$(top_srcdir)/ext/pcre/pcre2lib/*' \
'$(top_srcdir)/ext/xmlrpc/libxmlrpc/*' \
--output-file $@
$(LTP) --output-file $@ --remove $@ '*/<stdout>' $(LCOV_EXCLUDES)

lcov-html: php_lcov.info
@echo "Generating lcov HTML"
@$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info
$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info

lcov-clean:
rm -f php_lcov.info
rm -rf lcov_html/

lcov-clean-data:
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f

gcovr-html:
@echo "Generating gcovr HTML"
@rm -rf gcovr_html/
@mkdir gcovr_html
gcovr -sr . -o gcovr_html/index.html --html --html-details \
--exclude-directories 'ext/date/lib$$' \
$(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))

gcovr-xml:
@echo "Generating gcovr XML"
@rm -f gcovr.xml
gcovr -sr . -o gcovr.xml --xml \
--exclude-directories 'ext/date/lib$$' \
$(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))

.PHONY: gcovr-html lcov-html php_lcov.info