GSIT CI #701
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: "GSIT 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: gsittests | |
MARIADB_USER: gsittests | |
MARIADB_PASSWORD: gsittests | |
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: 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: gsittests | |
POSTGRES_PASSWORD: gsittests | |
POSTGRES_DB: gsittests | |
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: PHPUnit tests | |
run: ./vendor/bin/phpunit --coverage-text |