.travis.yml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. dist: xenial
  2. os: linux
  3. language: php
  4. git:
  5. depth: 10
  6. cache:
  7. directories:
  8. - $HOME/.composer
  9. - $HOME/bin
  10. env:
  11. global:
  12. - DEFAULT_COMPOSER_FLAGS="--optimize-autoloader --no-interaction --no-progress"
  13. - COMPOSER_FLAGS=""
  14. before_install:
  15. # turn off XDebug
  16. - phpenv config-rm xdebug.ini || return 0
  17. # Composer v2
  18. - composer self-update --2
  19. jobs:
  20. include:
  21. -
  22. stage: Static Code Analysis
  23. php: 7.4
  24. env: COMPOSER_FLAGS="--prefer-stable"
  25. install:
  26. - travis_retry ./dev-tools/install.sh
  27. - travis_retry composer update $DEFAULT_COMPOSER_FLAGS $COMPOSER_FLAGS
  28. - composer info -D | sort
  29. before_script:
  30. - if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then COMMIT_RANGE=$TRAVIS_COMMIT_RANGE; else COMMIT_RANGE="HEAD~..HEAD"; fi;
  31. - export CHANGED_PHP_FILES=`git diff --name-only --diff-filter=ACMRTUXB $COMMIT_RANGE | grep -E "\.php$"`
  32. script:
  33. # @TODO remove at 3.0
  34. - |
  35. git archive -o /dev/null HEAD -v 2>&1 | grep tests | grep \.php \
  36. | grep -v tests/Test/AbstractFixerTestCase.php \
  37. | grep -v tests/Test/AbstractIntegrationCaseFactory.php \
  38. | grep -v tests/Test/AbstractIntegrationTestCase.php \
  39. | grep -v tests/Test/Assert/AssertTokensTrait.php \
  40. | grep -v tests/Test/IntegrationCase.php \
  41. | grep -v tests/Test/IntegrationCaseFactory.php \
  42. | grep -v tests/Test/IntegrationCaseFactoryInterface.php \
  43. | grep -v tests/Test/InternalIntegrationCaseFactory.php \
  44. | grep -v tests/Test/IsIdenticalConstraint.php \
  45. | grep -v tests/TestCase.php \
  46. && (echo "UNKNOWN FILES DETECTED" && travis_terminate 1) || echo "NO UNKNOWN FILES"
  47. - ./dev-tools/check_file_permissions.sh || travis_terminate 1
  48. - ./dev-tools/check_trailing_spaces.sh || travis_terminate 1
  49. - dev-tools/vendor/bin/phpstan analyse
  50. - if [ -n "$CHANGED_PHP_FILES" ]; then ./dev-tools/vendor/bin/phpmd `echo "$CHANGED_PHP_FILES" | xargs | sed 's/ /,/g'` text phpmd.xml || travis_terminate 1; fi
  51. - ./dev-tools/vendor/bin/composer-require-checker check composer.json --config-file $(realpath .composer-require-checker.json) || travis_terminate 1
  52. - composer normalize --dry-run --working-dir=./dev-tools ../composer.json
  53. - ./dev-tools/check_shell_scripts.sh
  54. - &STANDARD_TEST_JOB
  55. stage: Fast Test
  56. php: 7.0
  57. install:
  58. # Composer: enforce given Symfony components version
  59. - if [ "$SYMFONY_VERSION" != "" ]; then composer global show symfony/flex -q || travis_retry composer global require $DEFAULT_COMPOSER_FLAGS symfony/flex; fi
  60. - if [ "$SYMFONY_VERSION" != "" ]; then composer config extra.symfony.require $SYMFONY_VERSION || true; fi
  61. - travis_retry composer update $DEFAULT_COMPOSER_FLAGS $COMPOSER_FLAGS
  62. - composer info -D | sort
  63. script:
  64. - vendor/bin/phpunit || travis_terminate 1
  65. - PHP_CS_FIXER_FUTURE_MODE=1 php php-cs-fixer --diff --dry-run -v fix
  66. -
  67. <<: *STANDARD_TEST_JOB
  68. stage: Test
  69. php: 5.6
  70. env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest"
  71. -
  72. <<: *STANDARD_TEST_JOB
  73. stage: Test
  74. php: 7.1
  75. name: 7.1 | Symfony ~4.1.0
  76. env: SYMFONY_DEPRECATIONS_HELPER=disabled PHP_CS_FIXER_TEST_USE_LEGACY_TOKENIZER=1 SYMFONY_VERSION="~4.1.0"
  77. -
  78. <<: *STANDARD_TEST_JOB
  79. stage: Test
  80. php: 7.2
  81. name: 7.2 | Symfony ^5.0
  82. env: SYMFONY_DEPRECATIONS_HELPER=disabled PHP_CS_FIXER_TEST_USE_LEGACY_TOKENIZER=1 SYMFONY_VERSION="^5.0"
  83. -
  84. <<: *STANDARD_TEST_JOB
  85. stage: Test
  86. php: 7.3
  87. name: 7.3 | With migration rules
  88. before_script:
  89. - php php-cs-fixer fix --rules @PHP73Migration,@PHP71Migration:risky,blank_line_after_opening_tag -q || travis_terminate 1
  90. -
  91. <<: *STANDARD_TEST_JOB
  92. stage: Test
  93. php: 7.4
  94. name: 7.4 | Collect coverage
  95. before_install:
  96. # for building a tag release we don't need to collect code coverage
  97. - if [ $TRAVIS_TAG ]; then travis_terminate 0; fi
  98. ## regular `before_install`
  99. # turn off XDebug
  100. - phpenv config-rm xdebug.ini || return 0
  101. # Composer v2
  102. - composer self-update --2
  103. # Require PHPUnit 8
  104. - composer require --dev --no-update phpunit/phpunit:^8
  105. # Install PCOV
  106. - pecl install pcov
  107. before_script:
  108. # Make code compatible with PHPUnit 8
  109. - PHP_CS_FIXER_FUTURE_MODE=1 php php-cs-fixer fix --rules=void_return -q tests || return 0
  110. script:
  111. - vendor/bin/phpunit --testsuite coverage --exclude-group covers-nothing --coverage-clover build/logs/clover.xml || travis_terminate 1
  112. - php vendor/bin/php-coveralls -v
  113. -
  114. <<: *STANDARD_TEST_JOB
  115. stage: Test
  116. php: nightly
  117. env: COMPOSER_FLAGS="--ignore-platform-reqs" PHP_CS_FIXER_IGNORE_ENV=1 SYMFONY_DEPRECATIONS_HELPER=weak
  118. -
  119. stage: Deployment
  120. php: 7.4
  121. install: ./dev-tools/build.sh
  122. script:
  123. - PHP_CS_FIXER_TEST_ALLOW_SKIPPING_SMOKE_TESTS=0 vendor/bin/phpunit tests/Smoke/
  124. before_deploy:
  125. # ensure that deployment is happening only if tag matches version of PHP CS Fixer
  126. - test $(php dev-tools/info-extractor.php | jq .version.vnumber) == "\"$TRAVIS_TAG\""
  127. deploy:
  128. provider: releases
  129. token:
  130. secure: K9NKi7X1OPz898fxtVc1RfWrSI+4hTFFYOik932wTz1jC4dQJ64Khh1LV9frA1+JiDS3+R6TvmQtpzbkX3y4L75UrSnP1ADH5wfMYIVmydG3ZjTMo8SWQWHmRMh3ORAKTMMpjl4Q7EkRkLp6RncKe+FAFPP5mgv55mtIMaE4qUk=
  131. file: php-cs-fixer.phar
  132. skip_cleanup: true
  133. on:
  134. repo: FriendsOfPHP/PHP-CS-Fixer
  135. tags: true
  136. after_deploy:
  137. - ./dev-tools/trigger-website.sh ${TRAVIS_TOKEN} ${TRAVIS_TAG}
  138. allow_failures:
  139. - php: nightly