1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-26 20:34:47 +01:00
psalm/.circleci/config.yml

120 lines
3.6 KiB
YAML
Raw Normal View History

# Use the latest 2.1 version of CircleCI pipeline processing engine, see https://circleci.com/docs/2.0/configuration-reference/
version: 2.1
executors:
php-72:
docker:
- image: thecodingmachine/php:7.2-v2-cli
jobs:
install-and-self-analyse:
executor: php-72
steps:
- checkout
- run: date "+%F" > /tmp/cachekey; cat composer.json >> /tmp/cachekey
- restore_cache:
keys:
- composer-v2-{{ checksum "/tmp/cachekey" }}
# fallback to using the latest cache if no exact match is found (See https://circleci.com/docs/2.0/caching/)
- composer-v2-
- run: composer update
- save_cache:
key: composer-v2-{{ checksum "/tmp/cachekey" }}
paths:
- vendor
- run:
name: Static analysis
command: php -dextension=pcntl.so ./psalm --threads=10
- persist_to_workspace:
root: /home/docker/project/
paths:
- .
2019-06-15 15:04:52 +02:00
test:
executor: php-72
steps:
- attach_workspace:
at: /home/docker/project/
- run:
name: PHPUnit test
command: php vendor/bin/phpunit --log-junit build/phpunit/phpunit.xml
- store_test_results:
path: build/
2019-06-15 15:04:52 +02:00
- store_artifacts:
path: build/phpunit
- persist_to_workspace:
root: /home/docker/project/
paths:
- .
coverage:
executor: php-72
steps:
- attach_workspace:
at: /home/docker/project/
- run:
name: PHPUnit test with coverage
command: php -dextension=pcov.so vendor/bin/phpunit --log-junit build/phpunit/phpunit.xml --coverage-xml build/phpunit/coverage-xml --coverage-html build/phpunit/coverage-html
- store_artifacts:
path: build/phpunit
- persist_to_workspace:
root: /home/docker/project/
paths:
- .
mutation:
executor: php-72
steps:
- attach_workspace:
at: /home/docker/project/
- run:
name: Install infection
command: composer global require infection/infection
- run:
name: Mutation coverage testing
2019-06-15 23:44:58 +02:00
command: php -d memory_limit=4G ~/.composer/vendor/bin/infection --coverage=build/phpunit --only-covered --threads=2 || echo 'Temporarily ignoring unexplained infection failure'
2019-06-15 15:04:52 +02:00
phar-build:
executor: php-72
steps:
- attach_workspace:
at: /home/docker/project/
- run:
name: Build Phar file
command: bin/build-phar.sh
- run:
name: Smoke test Phar file
command: build/psalm.phar --version
- store_artifacts:
path: build/psalm.phar
- persist_to_workspace:
root: /home/docker/project/
paths:
- build/psalm.phar
test-with-real-projects:
executor: php-72
steps:
- checkout # used here just for the side effect of loading the github public ssh key so we can clone other stuff
- attach_workspace:
at: /home/docker/project/
- run:
name: Analyse PHPUnit
command: bin/test-with-real-projects.sh
- store_artifacts:
path: build/psalm.phar
# Orchestrate or schedule a set of jobs, see https://circleci.com/docs/2.0/workflows/
workflows:
Welcome:
jobs:
- install-and-self-analyse
2019-06-15 15:04:52 +02:00
- test:
requires:
- install-and-self-analyse
2019-06-15 15:04:52 +02:00
- coverage:
requires:
- test
- mutation:
requires:
- coverage
- phar-build:
requires:
- test
- test-with-real-projects:
requires:
- phar-build