Skip to content

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
# https://github.com/ikalnytskyi/action-setup-postgres
# https://github.com/marketplace/actions/actions-setup-mysql
# https://github.com/potatoqualitee/mssqlsuite
name: "Continuous Integration"
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
PHP_EXTENSIONS: json, mbstring, simplexml, sodium, odbc, pdo_odbc, mysqli, pdo_mysql, pgsql, pdo_pgsql, sqlite3, pdo_sqlite, sqlsrv, pdo_sqlsrv, pdo_firebird
PHP_INI_VALUES: memory_limit=-1, error_reporting=-1, display_errors=On
jobs:
static-code-analysis:
name: "Static Code Analysis"
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php-version:
- "8.2"
- "8.3"
# - "8.4"
env:
PHAN_ALLOW_XDEBUG: 0
PHAN_DISABLE_XDEBUG_WARN: 1
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: ast, ${{ env.PHP_EXTENSIONS }}
ini-values: ${{ env.PHP_INI_VALUES }}
coverage: none
- name: "Update dependencies with composer"
uses: ramsey/composer-install@v3
- name: "Run phan"
run: php vendor/bin/phan --target-php-version=${{ matrix.php-version }}
build-docs:
name: "Build and publish Docs"
if: github.ref_name == 'main'
runs-on: ubuntu-latest
steps:
- name: "Checkout sources"
uses: actions/checkout@v4
- name: "Install PHP"
uses: shivammathur/setup-php@v2
with:
php-version: "8.2"
coverage: none
tools: phpDocumentor
extensions: gd, imagick, json, mbstring
- name: "Build Docs"
run: phpdoc --config=phpdoc.xml
- name: "Publish Docs to gh-pages"
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: docs
clean: true
tests:
name: "Unit Tests"
needs: static-code-analysis
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
php-version:
- "8.2"
- "8.3"
- "8.4"
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install SQLite (Linux)"
if: ${{ runner.os == 'Linux' }}
run: sudo apt-get -y install sqlite3 libsqlite3-dev
- name: "Install SQLite (Windows)"
if: ${{ runner.os == 'Windows' }}
run: choco install sqlite
- name: "Install Postgres"
uses: ikalnytskyi/action-setup-postgres@v6
with:
# postgres-version: 14
username: postgres
password: root
database: dbtest
port: 5432
- name: "Install MySQL"
uses: shogo82148/actions-setup-mysql@v1
with:
mysql-version: "8.0"
- name: "Create MySQL test database"
run: mysql --user="root" --host="127.0.0.1" -e "CREATE DATABASE dbtest character set UTF8mb4 collate utf8mb4_bin;"
- name: "Install MSSQL Server (Linux)"
uses: potatoqualitee/[email protected]
with:
version: 2022
install: sqlengine, sqlclient, sqlpackage
sa-password: "DBtestytest42"
- name: "Create MSSQL test database"
run: sqlcmd -S 127.0.0.1 -U sa -P DBtestytest42 -Q "CREATE DATABASE dbtest;"
# - name: "Install Firebird (Linux/Docker)"
# if: ${{ runner.os == 'Linux' }}
# uses: juarezr/[email protected]
# with:
# version: "v4"
# isc_password: "masterkey"
# enable_legacy_client_auth: true
# - name: "Install Firebird (Windows)"
# if: ${{ runner.os == 'Windows' }}
# run: choco install firebird --version=5.0.0 -params '/SuperClassic/ClientAndDevTools'
- name: "Install PHP with extensions"
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: ${{ env.PHP_EXTENSIONS }}
ini-values: ${{ env.PHP_INI_VALUES }}
coverage: pcov
- name: "Update dependencies with composer"
uses: ramsey/composer-install@v3
- name: "Run tests with phpunit"
run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml.dist
- name: "Send code coverage report to Codecov.io"
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: .build/coverage/clover.xml