149 lines
4.7 KiB
YAML
149 lines
4.7 KiB
YAML
version: 2.1
|
|
defaults: &defaults
|
|
docker:
|
|
- image: circleci/php:7.4-cli
|
|
working_directory: ~/repo
|
|
aliases:
|
|
- &composer-cache
|
|
v4-composer-cache
|
|
commands:
|
|
start-project:
|
|
steps:
|
|
- run: sudo apt-get update && sudo apt-get install -y libpng-dev libjpeg62-turbo-dev
|
|
- run:
|
|
name: Install PHP Extensions
|
|
command: sudo docker-php-ext-install gd
|
|
- run:
|
|
name: Disable Xdebug PHP extension
|
|
command: sudo rm /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- *composer-cache
|
|
install-dependencies:
|
|
steps:
|
|
- run: composer install -n --prefer-dist
|
|
- save_cache:
|
|
key: *composer-cache
|
|
paths:
|
|
- ~/.composer/cache
|
|
create-drupal-project:
|
|
parameters:
|
|
project:
|
|
type: string
|
|
default: 'drupal/recommended-project:^9.0@alpha'
|
|
steps:
|
|
- run: composer create-project << parameters.project >> /tmp/drupal --no-interaction --prefer-dist --ignore-platform-reqs
|
|
- run: composer require zaporylie/composer-drupal-optimizations:^1.1 --dev --working-dir=/tmp/drupal
|
|
local-require:
|
|
steps:
|
|
- run:
|
|
name: Add as local
|
|
command: |
|
|
cd /tmp/drupal
|
|
composer require --dev drupal/core-dev:^9.0
|
|
composer config repositories.1 '{"type": "path", "url": "'${CIRCLE_WORKING_DIRECTORY}'", "options": { "symlink": false }}'
|
|
composer require --dev mglaman/phpstan-drupal "*" phpstan/extension-installer
|
|
cat composer.json
|
|
cp ~/repo/tests/fixtures/config/drupal-phpstan.neon /tmp/drupal/phpstan.neon
|
|
./vendor/bin/phpstan --version
|
|
jobs:
|
|
build:
|
|
<<: *defaults
|
|
steps:
|
|
- start-project
|
|
- install-dependencies
|
|
- run:
|
|
name: phpspec/prophecy-phpunit fix
|
|
command: composer require --dev phpspec/prophecy-phpunit:^2
|
|
- run:
|
|
name: CodeSniffer
|
|
command: ./vendor/bin/phpcs src
|
|
- run:
|
|
name: PHPStan Analyze
|
|
command: php -dmemory_limit=-1 vendor/bin/phpstan.phar
|
|
- run:
|
|
name: PHPUnit
|
|
command: ./vendor/bin/phpunit
|
|
test_drupal:
|
|
<<: *defaults
|
|
steps:
|
|
- start-project
|
|
- create-drupal-project:
|
|
project: 'drupal/legacy-project:^9.0'
|
|
- local-require
|
|
- run:
|
|
name: Run against a file
|
|
command: |
|
|
cd /tmp/drupal
|
|
./vendor/bin/phpstan analyze core/install.php --debug
|
|
- run:
|
|
name: Run against a module
|
|
command: |
|
|
cd /tmp/drupal
|
|
./vendor/bin/phpstan analyze --memory-limit=256M core/modules/dynamic_page_cache --debug
|
|
test_drupal_project:
|
|
<<: *defaults
|
|
steps:
|
|
- start-project
|
|
- create-drupal-project
|
|
- local-require
|
|
- run:
|
|
name: Run against a file
|
|
command: |
|
|
cd /tmp/drupal
|
|
./vendor/bin/phpstan analyze web/core/install.php --debug
|
|
- run:
|
|
name: Run against a module
|
|
command: |
|
|
cd /tmp/drupal
|
|
./vendor/bin/phpstan analyze --memory-limit=256M web/core/modules/dynamic_page_cache --debug
|
|
test_upgrade_status:
|
|
<<: *defaults
|
|
steps:
|
|
- start-project
|
|
- create-drupal-project:
|
|
project: 'drupal/legacy-project:^9@alpha'
|
|
- local-require
|
|
# Composer constraints prevent requiring via compser, but this helps test drupalci's phpstan build step as well.
|
|
- run:
|
|
name: Add upgrade_status
|
|
command: |
|
|
cd /tmp/drupal
|
|
composer require phpstan/phpstan-deprecation-rules drupal/git_deploy
|
|
curl -L https://ftp.drupal.org/files/projects/upgrade_status-8.x-1.x-dev.tar.gz | tar -zx -C /tmp/drupal/modules
|
|
- run:
|
|
name: Start builtin
|
|
command: php -S 127.0.0.1:8080 -t /tmp/drupal
|
|
background: true
|
|
- run:
|
|
name: Wait for web server
|
|
command: dockerize -wait http://127.0.0.1:8080 -timeout 120s
|
|
- run:
|
|
name: Upgrade Status PHPUnit
|
|
command: |
|
|
cp ~/repo/tests/fixtures/config/circleci-phpunit.xml /tmp/drupal/core/phpunit.xml
|
|
cd /tmp/drupal
|
|
./vendor/bin/phpunit -c core modules/upgrade_status --debug --stop-on-failure
|
|
workflows:
|
|
version: 2
|
|
tests:
|
|
jobs:
|
|
- build
|
|
- test_drupal
|
|
- test_drupal_project
|
|
# - test_upgrade_status
|
|
weekly:
|
|
triggers:
|
|
- schedule:
|
|
# Every thursday to run soon after patch and security updates on wednesdays.
|
|
cron: "0 0 * * 4"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
jobs:
|
|
- build
|
|
- test_drupal
|
|
- test_drupal_project
|