Fusion Resolve IT CI #40
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: "Fusion Resolve IT CI" | |
on: | |
# Runs test suite when a new commit is pushed on "master" and "*/bugfixes" branches | |
# and when a new tag is created | |
push: | |
branches: | |
- master | |
- '*/bugfixes' | |
- 'feature/*' | |
- 'fix/*' | |
- 'security/*' | |
tags: | |
- '*' | |
# Runs test suite when a PR is opened or synchronyzed | |
pull_request: | |
# Runs test suite every night | |
schedule: | |
- cron: '0 0 * * *' | |
# Enable manual run | |
workflow_dispatch: | |
jobs: | |
check_code: | |
runs-on: 'ubuntu-latest' | |
strategy: | |
matrix: | |
php-versions: ['8.2', '8.3'] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
tools: phpstan | |
extensions: xmlrpc | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
- name: Install dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Run PHPStan | |
run: phpstan analyse db src public | |
lint: | |
runs-on: 'ubuntu-latest' | |
strategy: | |
matrix: | |
php-versions: ['8.2', '8.3'] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
tools: cs2pr, phpcs | |
extensions: xmlrpc | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
- name: Install dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Run phpcs | |
run: | | |
files=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }} | grep '^\(src\|public\|db\)' || true) | |
if [ -n "$files" ]; then | |
phpcs -q --report=checkstyle $files | cs2pr | |
fi | |
if: github.event_name == 'pull_request' | |
check_composer: | |
runs-on: 'ubuntu-latest' | |
strategy: | |
matrix: | |
php-versions: ['8.2', '8.3'] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
- name: validate composer | |
run: composer validate --strict | |
- name: validate extensions required | |
run: composer check-platform-reqs | |
tests_unit_integration_MariaDB: | |
runs-on: 'ubuntu-latest' | |
strategy: | |
matrix: | |
php-versions: ['8.2', '8.3'] | |
mariadb-versions: ['10.5', '10.6', '10.11', '11.4'] | |
services: | |
mariadb: | |
image: mariadb:${{ matrix.mariadb-versions }} | |
ports: | |
- 3306:3306 | |
env: | |
MARIADB_DATABASE: frittests | |
MARIADB_USER: frittests | |
MARIADB_PASSWORD: frittests | |
MARIADB_ROOT_PASSWORD: rootpassword | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
extensions: intl, mbstring | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
- name: Install dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Run webpack for production | |
run: | | |
yarn install | |
yarn run production | |
- name: PHPUnit tests | |
run: ./vendor/bin/phpunit --coverage-text | |
tests_unit_integration_PostgreSQL: | |
runs-on: 'ubuntu-latest' | |
strategy: | |
matrix: | |
php-versions: ['8.2', '8.3'] | |
pg-versions: ['13', '14', '15', '16', '17'] | |
services: | |
postgres: | |
image: postgres:${{ matrix.pg-versions }} | |
ports: | |
- 5432:5432 | |
env: | |
POSTGRES_USER: frittests | |
POSTGRES_PASSWORD: frittests | |
POSTGRES_DB: frittests | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
extensions: intl, mbstring | |
- name: update databaseconfiguration | |
run: | | |
sed -i 's/mysql/pgsql/g' phinx.php | |
sed -i 's/utf8mb4/utf8/g' phinx.php | |
sed -i 's/3306/5432/g' phinx.php | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: vendor | |
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} | |
- name: Install dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Run webpack for production | |
run: | | |
yarn install | |
yarn run production | |
- name: PHPUnit tests | |
run: ./vendor/bin/phpunit --coverage-text |