Skip to content

Use Brigade for coverage #1505

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Nov 23, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,25 @@ matrix:
- php: '7.0'
- php: '7.1'
- php: '7.2'
env: coverage=1 lint=1
env: lint=1
- php: '7.2'
env: deps='low'

before_install:
- phpenv config-rm xdebug.ini || echo "xdebug not available"
- echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- npm install -g swagger-cli
- if [[ $coverage = 1 ]]; then mkdir -p build/logs build/cov; fi
- if [[ $coverage = 1 ]]; then wget https://phar.phpunit.de/phpcov.phar; fi
- if [[ $coverage = 1 ]]; then wget https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar; fi
- if [[ $lint = 1 ]]; then wget https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.7.1/php-cs-fixer.phar; fi
- if [[ $lint = 1 ]]; then composer global require --dev 'phpstan/phpstan:^0.8'; fi
- export PATH="$PATH:$HOME/.composer/vendor/bin"

install:
- if [[ $coverage = 1 ]]; then composer require --dev --no-update 'phpunit/php-code-coverage:^5.2.2'; fi
- if [[ ! $deps ]]; then composer update --prefer-dist --no-progress --no-suggest --ansi; fi
- if [[ $deps = 'low' ]]; then composer update --prefer-dist --no-progress --no-suggest --prefer-stable --prefer-lowest --ansi; fi

script:
- if [[ $coverage = 1 ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-php build/cov/coverage-phpunit.cov; else vendor/bin/phpunit; fi
- if [[ $coverage = 1 ]]; then for f in $(find features -name '*.feature'); do FEATURE=${f//\//_} phpdbg -qrr vendor/bin/behat --format=progress --profile coverage $f || exit $?; done; else vendor/bin/behat --format=progress; fi
- if [[ $coverage = 1 ]]; then phpdbg -qrr phpcov.phar merge --clover build/logs/clover.xml build/cov; fi
- vendor/bin/phpunit
- vendor/bin/behat --format=progress
- tests/Fixtures/app/console api:swagger:export > swagger.json && swagger-cli validate swagger.json && rm swagger.json
- if [[ $lint = 1 ]]; then php php-cs-fixer.phar fix --dry-run --diff --no-ansi; fi
- if [[ $lint = 1 ]]; then phpstan analyse -c phpstan.neon -l5 --ansi src tests; fi

after_success:
- if [[ $coverage = 1 ]]; then travis_retry php coveralls.phar; fi
30 changes: 30 additions & 0 deletions Dockerfile.coverage
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM composer:1.5
FROM php:rc-alpine

RUN apk add --no-cache --virtual .persistent-deps \
git \
icu-libs \
zlib

RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
icu-dev \
zlib-dev \
curl

RUN set -xe \
&& docker-php-ext-install \
intl \
zip

COPY --from=0 /usr/bin/composer /usr/bin/composer

RUN curl -L -o /usr/bin/phpcov https://phar.phpunit.de/phpcov.phar \
&& curl -L -o /usr/bin/coveralls https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar \
&& chmod 755 /usr/bin/phpcov /usr/bin/coveralls

RUN apk del .build-deps

RUN echo "memory_limit=-1" > $PHP_INI_DIR/conf.d/memory-limit.ini

ENV COMPOSER_ALLOW_SUPERUSER 1
29 changes: 29 additions & 0 deletions brigade.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const { events, Job } = require('brigadier');

const coverage = (event, project) => {
console.log(`===> Building ${ project.repo.cloneURL } ${ event.commit }`);

const job = new Job('coverage', 'cooptilleuls/api-platform-core-brigade-coverage:latest');

job.tasks = [
'set -xe',
'cd /src/',
'mkdir -p build/logs build/cov',
`composer require --dev --no-update 'phpunit/php-code-coverage:^5.2.2'`,
'composer update --prefer-dist --no-progress --no-suggest --ansi',
'phpdbg -qrr vendor/bin/phpunit --coverage-php build/cov/coverage-phpunit.cov',
`for f in $(find features -name '*.feature'); do FEATURE=\${f//\\//_} phpdbg -qrr vendor/bin/behat --format=progress --profile coverage $f || exit $?; done`,
'phpdbg -qrr $(which phpcov) merge --clover build/logs/clover.xml build/cov;',
'coveralls -v',
];

job.env = {
COVERALLS_RUN_LOCALLY: '1',
COVERALLS_REPO_TOKEN: project.secrets.coverallsToken,
};

job.run();
};

events.on('push', coverage);
events.on('pull_request', coverage);