.circleci/config.yml
version: 2.1
jobs:
build:
parameters:
php:
type: string
laravel:
type: string
phpunit:
type: string
coverage:
type: boolean
default: false
docker:
- image: circleci/php:<<parameters.php>>
steps:
- checkout
- run:
name: Install dependencies
command: |
composer require "laravel/framework:<<parameters.laravel>>" --no-update -n
composer require "phpunit/phpunit:<<parameters.phpunit>>" --dev --no-update -n
composer install --no-suggest --prefer-dist -n -o
- when:
condition: <<parameters.coverage>>
steps:
- run:
name: Install Code Coverage
command: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
- run:
name: Run PHPUnit
command: |
./cc-test-reporter before-build
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
./cc-test-reporter after-build --coverage-input-type clover --exit-code $?
- when:
unless: <<parameters.coverage>>
steps:
- run:
name: Run PHPUnit
command: vendor/bin/phpunit
release:
docker:
- image: circleci/node:latest
steps:
- checkout
- run:
name: Create release
command: npx semantic-release
workflows:
version: 2
build:
jobs:
- build:
name: "php7.2-6"
php: "7.2"
laravel: ^6.0
phpunit: ^8.0
- build:
name: "php7.3-6"
php: "7.3"
laravel: ^6.0
phpunit: ^8.0
- build:
name: "php7.2-7"
php: "7.2"
laravel: ^7.0
phpunit: ^8.5
- build:
name: "php7.3-7"
php: "7.3"
laravel: ^7.0
phpunit: ^8.5
coverage: true
- release:
context: semantic-release
filters:
branches:
only: master
requires:
- php7.2-6
- php7.3-6
- php7.2-7
- php7.3-7