Skip to content

Commit

Permalink
Add GitHub actions workflow configuration (#16)
Browse files Browse the repository at this point in the history
* Add GitHub actions workflow configuration

* Disable b/c check

* Fix up PHP requirements

* Remove Travis, Appveyor, Scrutinizer and Violinist.
  • Loading branch information
greg-1-anderson authored Oct 6, 2022
1 parent d52a61a commit 490e3ef
Show file tree
Hide file tree
Showing 16 changed files with 254 additions and 4,353 deletions.
155 changes: 155 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
on:
pull_request:
branches:
- main
push:
branches:
- main

name: CI

jobs:
coding-guidelines:
name: Coding Guidelines

runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
coverage: none

- name: Install dependencies
run: composer install --no-ansi --no-interaction --no-progress

- name: Run phpcs
run: composer cs

- name: Run linter
run: composer lint

backward-compatibility:
name: Backward Compatibility

# Remove the 'if' line below once you have a 1.0.0 release
if: ${{ false }}

runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Fetch tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*

- name: Install PHP with extensions
uses: shivammathur/setup-php@v2
with:
php-version: 8.0
coverage: none
extensions: intl

- name: Install roave/backward-compatibility-check
run: |
mkdir -p tools
composer --working-dir=tools require roave/backward-compatibility-check:^7
- name: Run roave/backward-compatibility-check
run: ./tools/vendor/bin/roave-backward-compatibility-check --from=1.0.0

tests:
name: Tests

runs-on: ${{ matrix.os }}

env:
PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter

strategy:
matrix:
os:
- ubuntu-latest
- windows-latest

php-version:
- "8.0"

php-ini-values:
- assert.exception=1, zend.assertions=1, phar.readonly=false

dependencies:
- locked

include:
- os: ubuntu-latest
php-version: "8.0"
dependencies: lowest
php-ini-values: assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205, phar.readonly=false

- os: ubuntu-latest
php-version: "8.1"
dependencies: highest
php-ini-values: assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205, phar.readonly=false

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Install PHP with extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: pcov
extensions: ${{ env.PHP_EXTENSIONS }}
ini-values: ${{ matrix.php-ini-values }}

- name: Determine composer cache directory on Linux
if: matrix.os == 'ubuntu-latest'
run: echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV

- name: Determine composer cache directory on Windows
if: matrix.os == 'windows-latest'
run: Add-Content -Path $ENV:GITHUB_ENV -Value "COMPOSER_CACHE_DIR=~\AppData\Local\Composer"

- name: Cache dependencies installed with composer
uses: actions/cache@v1
with:
path: ${{ env.COMPOSER_CACHE_DIR }}
key: php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}
restore-keys: |
php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-
- name: Make sure composer.json is valid before we start modifyig it
run: composer validate

- name: Clear platform php configuration in case we need to update phpunit
run: composer config --unset platform.php

- name: Update phpunit if dependencies are locked in case phpunit version in lock file is not compatible
if: matrix.dependencies == 'locked'
run: |
composer install --no-ansi --no-interaction --no-progress
composer update --no-ansi --no-interaction --no-progress phpunit/phpunit --with-all-dependencies
- name: Install lowest dependencies with composer
if: matrix.dependencies == 'lowest'
run: composer update --no-ansi --no-interaction --no-progress --prefer-lowest

- name: Install highest dependencies with composer
if: matrix.dependencies == 'highest'
run: composer config --unset platform.php && composer update --no-ansi --no-interaction --no-progress

- name: Run tests with phpunit
run: composer unit

- name: Publish code coverage to Codecov
if: matrix.os == 'ubuntu-latest' && matrix.php-version == '8.0'
run: bash <(curl -s https://codecov.io/bash)
11 changes: 0 additions & 11 deletions .scrutinizer.yml

This file was deleted.

39 changes: 0 additions & 39 deletions .travis.yml

This file was deleted.

Loading

0 comments on commit 490e3ef

Please sign in to comment.