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