Skip to content

Merge pull request #51 from bavix/dependabot/github_actions/bavix/dot… #113

Merge pull request #51 from bavix/dependabot/github_actions/bavix/dot…

Merge pull request #51 from bavix/dependabot/github_actions/bavix/dot… #113

Workflow file for this run

name: phpunits
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
units:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [8.2, 8.3]
databases: [testing, pgsql, mysql, mariadb]
caches: [array, redis, memcached]
locks: [array, redis, memcached]
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 6379:6379
memcached:
image: memcached
options: >-
--health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 11211:11211
pgsql:
image: postgres
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: wallet
POSTGRES_DB: wallet
POSTGRES_INITDB_ARGS: '--encoding=UTF-8 --lc-collate=C --lc-ctype=C'
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 5432:5432
mysql:
image: bitnami/mysql:8.0
env:
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
MYSQL_ROOT_PASSWORD: wallet
MYSQL_DATABASE: wallet
options: >-
--health-cmd="mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 3306:3306
mariadb:
image: mariadb:10.10
env:
MYSQL_ROOT_PASSWORD: wallet
MYSQL_DATABASE: wallet
options: >-
--health-cmd="mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 3307:3306
steps:
- name: Checkout
id: git-checkout
uses: actions/checkout@v4
- name: Setup PHP
id: php-install
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, pgsql, mysql, sqlite, redis, memcached
coverage: pcov
- name: Validate composer.json and composer.lock
id: composer-validate
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
id: composer-dependencies
run: composer install --prefer-dist --no-progress
- name: Check codeclimate
id: codeclimate-check
run: echo "execute=${{ matrix.php-versions == '8.2' && matrix.caches == 'array' && matrix.databases == 'testing' }}" >> $GITHUB_OUTPUT
- name: Prepare codeclimate
id: codeclimate-prepare
run: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
if: ${{ steps.codeclimate-check.outputs.execute == 'true' }}
- name: Prepare run test suite
id: unit-prepare
run: |
mkdir build
- name: Run test suite
id: unit-run
run: composer parabench
env:
WALLET_CACHE_DRIVER: ${{ matrix.caches }}
WALLET_LOCK_DRIVER: ${{ matrix.locks }}
DB_CONNECTION: ${{ matrix.databases }}
- name: Send coverage
id: codeclimate-send
run: |
./cc-test-reporter after-build --coverage-input-type clover --exit-code 0
bash <(curl -s https://codecov.io/bash)
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
if: ${{ steps.codeclimate-check.outputs.execute == 'true' }}