phpOMS/.github/workflows/main.yml

188 lines
6.3 KiB
YAML

name: CI/CD
on: [push]
jobs:
code-tests:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: oms
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
postgres:
image: postgres:10.8
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: root
POSTGRES_DB: oms
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
memcached:
image: memcached
ports:
- 11211:11211
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.4']
steps:
- name: Checkout Repository
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@master
with:
fetch-depth: 1
ref: develop
repository: Orange-Management/Build
path: Build
- name: Checkout Resource Repository
uses: actions/checkout@master
with:
fetch-depth: 1
ref: develop
repository: Orange-Management/Resources
path: Resources
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
coverage: pcov
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: phpunit
run: vendor/bin/phpunit --coverage-text -v --configuration tests/phpunit_no_coverage.xml
static-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.4']
steps:
- name: Checkout Repository
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@master
with:
fetch-depth: 1
ref: develop
repository: Orange-Management/Build
path: Build
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: Prepare phpstan
run: |
sed -i 's/path: phpOMS\//path: /g' Build/Config/phpstan-baseline.neon
- name: phpstan
run: vendor/bin/phpstan analyse -a Autoloader.php --no-progress -l 7 -c Build/Config/phpstan.neon ./
codestyle-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.4']
steps:
- name: Checkout Repository
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@master
with:
fetch-depth: 1
ref: develop
repository: Orange-Management/Build
path: Build
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: phpcs
run: vendor/bin/phpcs ./ --standard="Build/Config/phpcs.xml" -s --report=full
custom:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.4', '8.0']
steps:
- name: Checkout Repository
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@master
with:
fetch-depth: 1
ref: develop
repository: Orange-Management/Build
path: Build
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: PHP linting
run: find ./ -type f -name '*.php' -print0 | xargs -0 -n1 -P4 php -l -n | (! grep -v "No syntax errors detected" )
- name: Php strict
run: if [[ $(grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ./) -ne "" ]]; then exit 1; fi