193 lines
5.5 KiB
YAML
193 lines
5.5 KiB
YAML
name: "build"
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- ".docs/**"
|
|
push:
|
|
branches:
|
|
- "*"
|
|
schedule:
|
|
- cron: "0 8 * * 1" # At 08:00 on Monday
|
|
|
|
env:
|
|
extensions: "json"
|
|
cacheVersion: "1"
|
|
composerVersion: "v2"
|
|
composerInstall: "composer install"
|
|
|
|
jobs:
|
|
qa:
|
|
name: "Quality Assurance"
|
|
runs-on: "${{ matrix.operating-system }}"
|
|
|
|
strategy:
|
|
matrix:
|
|
php-versions: [ "8.0" ]
|
|
operating-system: [ "ubuntu-latest" ]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: "actions/checkout@v2"
|
|
|
|
- name: "Setup PHP cache environment"
|
|
id: "extcache"
|
|
uses: "shivammathur/cache-extensions@v1"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
key: "${{ env.cacheVersion }}"
|
|
|
|
- name: "Cache PHP extensions"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.extcache.outputs.dir }}"
|
|
key: "${{ steps.extcache.outputs.key }}"
|
|
restore-keys: "${{ steps.extcache.outputs.key }}"
|
|
|
|
- name: "Install PHP"
|
|
uses: "shivammathur/setup-php@v2"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
tools: "composer:${{ env.composerVersion }} "
|
|
|
|
- name: "Setup problem matchers for PHP"
|
|
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
|
|
|
|
- name: "Get Composer cache directory"
|
|
id: "composercache"
|
|
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
|
|
|
|
- name: "Cache PHP dependencies"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.composercache.outputs.dir }}"
|
|
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
restore-keys: "${{ runner.os }}-composer-"
|
|
|
|
- name: "Validate Composer"
|
|
run: "composer validate"
|
|
|
|
- name: "Install dependencies"
|
|
run: "${{ env.composerInstall }}"
|
|
|
|
- name: "Coding Standard"
|
|
run: "make cs"
|
|
|
|
static-analysis:
|
|
name: "Static analysis"
|
|
runs-on: "${{ matrix.operating-system }}"
|
|
|
|
strategy:
|
|
matrix:
|
|
php-versions: [ "8.0" ]
|
|
operating-system: [ "ubuntu-latest" ]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: "actions/checkout@v2"
|
|
|
|
- name: "Setup PHP cache environment"
|
|
id: "extcache"
|
|
uses: "shivammathur/cache-extensions@v1"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
key: "${{ env.cacheVersion }}"
|
|
|
|
- name: "Cache PHP extensions"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.extcache.outputs.dir }}"
|
|
key: "${{ steps.extcache.outputs.key }}"
|
|
restore-keys: "${{ steps.extcache.outputs.key }}"
|
|
|
|
- name: "Install PHP"
|
|
uses: "shivammathur/setup-php@v2"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
tools: "composer:${{ env.composerVersion }} "
|
|
|
|
- name: "Setup problem matchers for PHP"
|
|
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
|
|
|
|
- name: "Get Composer cache directory"
|
|
id: "composercache"
|
|
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
|
|
|
|
- name: "Cache PHP dependencies"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.composercache.outputs.dir }}"
|
|
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
restore-keys: "${{ runner.os }}-composer-"
|
|
|
|
- name: "Install dependencies"
|
|
run: "${{ env.composerInstall }}"
|
|
|
|
- name: "PHPStan"
|
|
run: "make phpstan"
|
|
|
|
tests:
|
|
name: "Tests"
|
|
runs-on: "${{ matrix.operating-system }}"
|
|
|
|
strategy:
|
|
matrix:
|
|
php-versions: [ "8.0" ]
|
|
operating-system: [ "ubuntu-latest" ]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: "actions/checkout@v2"
|
|
|
|
- name: "Setup PHP cache environment"
|
|
id: "extcache"
|
|
uses: "shivammathur/cache-extensions@v1"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
key: "${{ env.cacheVersion }}"
|
|
|
|
- name: "Cache PHP extensions"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.extcache.outputs.dir }}"
|
|
key: "${{ steps.extcache.outputs.key }}"
|
|
restore-keys: "${{ steps.extcache.outputs.key }}"
|
|
|
|
- name: "Install PHP"
|
|
uses: "shivammathur/setup-php@v2"
|
|
with:
|
|
php-version: "${{ matrix.php-versions }}"
|
|
extensions: "${{ env.extensions }}"
|
|
tools: "composer:${{ env.composerVersion }} "
|
|
|
|
- name: "Setup problem matchers for PHP"
|
|
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
|
|
|
|
- name: "Get Composer cache directory"
|
|
id: "composercache"
|
|
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
|
|
|
|
- name: "Cache PHP dependencies"
|
|
uses: "actions/cache@v2"
|
|
with:
|
|
path: "${{ steps.composercache.outputs.dir }}"
|
|
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
restore-keys: "${{ runner.os }}-composer-"
|
|
|
|
- name: "Install dependencies"
|
|
run: "${{ env.composerInstall }}"
|
|
|
|
- name: "Setup problem matchers for PHPUnit"
|
|
run: 'echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"'
|
|
|
|
- name: "Tests"
|
|
run: "make tests"
|