#5114: CI: Simplify installing PHP extensions and tools #303
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit Tests | |
on: | |
push: | |
pull_request: | |
env: | |
MYSQL_DATABASE: app | |
MYSQL_ROOT_PASSWORD: 'Database Password for Continuous Integration' | |
#CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} | |
CC_TEST_REPORTER_ID: 8948074581c1ffe7f4e47995c65d7d303882310256edd73536723d7c92adb1e3 | |
jobs: | |
test-unit: | |
strategy: | |
fail-fast: false | |
matrix: | |
interpreter: | |
- image: php:7.4 | |
- image: php:8.1 | |
- image: php:8.2 | |
- image: php:8.3 | |
db: | |
- image: mysql:5.5 | |
- image: bitnami/mysql:8.0 | |
- image: mariadb:10.0 | |
- image: mariadb:10.6 | |
- image: mariadb:10.11 | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.interpreter.image }} | |
services: | |
db: | |
image: ${{ matrix.db.image }} | |
env: | |
MYSQL_ROOT_PASSWORD: 'Database Password for Continuous Integration' | |
MYSQL_DATABASE: 'app' | |
MYSQL_AUTHENTICATION_PLUGIN: 'mysql_native_password' | |
MYSQL_CHARACTER_SET: 'utf8mb3' | |
options: >- | |
--health-cmd "mysqladmin ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- name: Enable Debian backports | |
run: | | |
if ! apt-get update; then | |
sed -i 's#/\(deb\|security\)\.debian\.org/#/archive.debian.org/#g' /etc/apt/sources.list | |
sed -r -i '/^[^\s#]*[^\s]+\s+[^\s]+\s+[^#]*-updates/d' /etc/apt/sources.list | |
echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99ignore-obsolete | |
echo 'Acquire::AllowInsecureRepositories "true";' >> /etc/apt/apt.conf.d/99ignore-obsolete | |
echo 'APT::Get::AllowUnauthenticated "true";' >> /etc/apt/apt.conf.d/99ignore-obsolete | |
apt-get update | |
DEBIAN_FRONTEND=noninteractive apt-get -y full-upgrade | |
fi | |
apt-get install -y debian-archive-keyring | |
grep -m1 -P '^deb http://(deb|archive).debian.org/debian [a-z]+ main' /etc/apt/sources.list | | |
awk '$3 = $3"-backports"' >> /etc/apt/sources.list | |
- name: Update operating system software repository | |
run: apt-get update | |
- name: Install operating system dependencies | |
run: | | |
. /etc/os-release | |
DEBIAN_RELEASE="$(echo "$VERSION" | grep -oP '^[^(]+\(\K[^)]+')" | |
USE_GIT_BPO="$(test $VERSION_ID -lt 10 && echo "-t ${DEBIAN_RELEASE}-backports" || echo)" | |
apt-get $USE_GIT_BPO install -y git zip libzip-dev libbz2-dev libpng-dev libjpeg-dev libwebp-dev libvpx-dev libicu-dev | |
- name: Install PHP extensions and tools | |
uses: shivammathur/setup-php@v2 | |
with: | |
extensions: zip, bz2, gd, pdo_mysql, mysqli, intl | |
coverage: xdebug | |
tools: composer | |
- uses: actions/checkout@v3 | |
- name: Install test dependencies | |
run: composer update --prefer-dist --no-progress | |
working-directory: ./e107_tests/ | |
- name: Opt out of CVE-2022-24765 mitigation | |
run: git config --global safe.directory '*' | |
- name: Download Git submodule dependencies | |
run: git submodule update --init --recursive --remote | |
- name: Install the CI test configuration file | |
run: cp ./e107_tests/lib/ci/config.unit.ci.yml ./e107_tests/config.yml | |
- name: Download Code Climate test reporter | |
run: | | |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter | |
chmod +x ./cc-test-reporter | |
working-directory: ./e107_tests/vendor/bin/ | |
continue-on-error: true | |
- name: Code Climate report before build | |
run: ./e107_tests/vendor/bin/cc-test-reporter before-build | |
continue-on-error: true | |
- name: Build Codeception | |
run: php ./vendor/bin/codecept build | |
working-directory: ./e107_tests/ | |
continue-on-error: false | |
- name: Run unit tests | |
run: | | |
if [ $(php -r 'printf(extension_loaded("xdebug") ? 1 : 0);') = '1' ] | |
then | |
php -d xdebug.mode=coverage ./vendor/bin/codecept run unit --steps --debug --coverage --coverage-xml #--coverage-html | |
else | |
echo "Warning: xdebug not available; skipping coverage..." | |
php ./vendor/bin/codecept run unit --steps --debug | |
fi | |
working-directory: ./e107_tests/ | |
- name: Send code coverage report to Code Climate | |
run: | | |
./e107_tests/vendor/bin/cc-test-reporter format-coverage \ | |
--input-type clover \ | |
--output ./e107_tests/tests/_output/coverage/codeclimate.json \ | |
./e107_tests/tests/_output/coverage.xml | |
./e107_tests/vendor/bin/cc-test-reporter upload-coverage \ | |
--input ./e107_tests/tests/_output/coverage/codeclimate.json | |
continue-on-error: true | |
- name: Upload test output | |
uses: actions/upload-artifact@v1 | |
with: | |
name: tests_output | |
path: ./e107_tests/tests/_output/ |