Files
farmOS-dev/vendor/mglaman/phpstan-drupal/.circleci/config.yml
2024-12-10 15:08:16 +01:00

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