Skip to content

Commit ea80dd0

Browse files
committed
Merge branch '4.4' into 5.1
* 4.4: Use Symfony Flex and do not favor any CI tool
2 parents 9fca26f + d1e5e5c commit ea80dd0

File tree

1 file changed

+55
-69
lines changed

1 file changed

+55
-69
lines changed

bundles/best_practices.rst

Lines changed: 55 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -171,73 +171,59 @@ Continuous Integration
171171

172172
Testing bundle code continuously, including all its commits and pull requests,
173173
is a good practice called Continuous Integration. There are several services
174-
providing this feature for free for open source projects. The most popular
175-
service for Symfony bundles is called `Travis CI`_.
176-
177-
Here is the recommended configuration file (``.travis.yml``) for Symfony bundles,
178-
which test the two latest :doc:`LTS versions </contributing/community/releases>`
179-
of Symfony and the latest beta release:
180-
181-
.. code-block:: yaml
182-
183-
language: php
184-
185-
cache:
186-
directories:
187-
- $HOME/.composer/cache/files
188-
- $HOME/symfony-bridge/.phpunit
189-
190-
env:
191-
global:
192-
- PHPUNIT_FLAGS="-v"
193-
- SYMFONY_PHPUNIT_DIR="$HOME/symfony-bridge/.phpunit"
194-
195-
matrix:
196-
fast_finish: true
197-
include:
198-
# Minimum supported dependencies with the latest and oldest PHP version
199-
- php: 7.2
200-
env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" SYMFONY_DEPRECATIONS_HELPER="max[self]=0"
201-
- php: 7.1
202-
env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" SYMFONY_DEPRECATIONS_HELPER="max[self]=0"
203-
204-
# Test the latest stable release
205-
- php: 7.1
206-
- php: 7.2
207-
env: COVERAGE=true PHPUNIT_FLAGS="-v --coverage-text"
208-
209-
# Test LTS versions. This makes sure we do not use Symfony packages with version greater
210-
# than 2 or 3 respectively. Read more at https://github.com/symfony/lts
211-
- php: 7.2
212-
env: DEPENDENCIES="symfony/lts:^2"
213-
- php: 7.2
214-
env: DEPENDENCIES="symfony/lts:^3"
215-
216-
# Latest commit to master
217-
- php: 7.2
218-
env: STABILITY="dev"
219-
220-
allow_failures:
221-
# Dev-master is allowed to fail.
222-
- env: STABILITY="dev"
223-
224-
before_install:
225-
- if [[ $COVERAGE != true ]]; then phpenv config-rm xdebug.ini || true; fi
226-
- if ! [ -z "$STABILITY" ]; then composer config minimum-stability ${STABILITY}; fi;
227-
- if ! [ -v "$DEPENDENCIES" ]; then composer require --no-update ${DEPENDENCIES}; fi;
228-
229-
install:
230-
- composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
231-
- ./vendor/bin/simple-phpunit install
232-
233-
script:
234-
- composer validate --strict --no-check-lock
235-
# simple-phpunit is the PHPUnit wrapper provided by the PHPUnit Bridge component and
236-
# it helps with testing legacy code and deprecations (composer require symfony/phpunit-bridge)
237-
- ./vendor/bin/simple-phpunit $PHPUNIT_FLAGS
238-
239-
Consider using the `Travis cron`_ tool to make sure your project is built even if
240-
there are no new pull requests or commits.
174+
providing this feature for free for open source projects, like `GitHub Actions`_
175+
and `Travis CI`_.
176+
177+
A bundle should at least test:
178+
179+
* The lower bound of their dependencies (by running ``composer update --prefer-lowest``);
180+
* The supported PHP versions;
181+
* All supported major Symfony versions (e.g. both ``4.x`` and ``5.x`` if
182+
support is claimed for both).
183+
184+
Thus, a bundle supporting PHP 7.3, 7.4 and 8.0, and Symfony 3.4 and 4.x should
185+
have at least this test matrix:
186+
187+
=========== =============== ===================
188+
PHP version Symfony version Composer flags
189+
=========== =============== ===================
190+
7.3 ``3.*`` ``--prefer-lowest``
191+
7.4 ``4.*``
192+
8.0 ``4.*``
193+
=========== =============== ===================
194+
195+
.. tip::
196+
197+
The tests should be run with the ``SYMFONY_DEPRECATIONS_HELPER``
198+
env variable set to ``max[direct]=0``. This ensures no code in the
199+
bundle uses deprecated features directly.
200+
201+
The lowest dependency tests can be run with this variable set to
202+
``disabled=1``.
203+
204+
Require a Specific Symfony Version
205+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206+
207+
You can use the special ``SYMFONY_REQUIRE`` environment variable together
208+
with Symfony Flex to install a specific Symfony version:
209+
210+
.. code-block:: bash
211+
212+
# this requires Symfony 5.x for all Symfony packages
213+
export SYMFONY_REQUIRE=5.*
214+
215+
# install Symfony Flex in the CI environment
216+
composer global require --no-progress --no-scripts --no-plugins symfony/flex
217+
218+
# install the dependencies (using --prefer-dist and --no-progress is
219+
# recommended to have a better output and faster download time)
220+
composer update --prefer-dist --no-progress
221+
222+
.. caution::
223+
224+
If you want to cache your Composer dependencies, **do not** cache the
225+
``vendor/`` directory as this has side-effects. Instead cache
226+
``$HOME/.composer/cache/files``.
241227

242228
Installation
243229
------------
@@ -529,5 +515,5 @@ Learn more
529515
.. _`Packagist`: https://packagist.org/
530516
.. _`choose any license`: https://choosealicense.com/
531517
.. _`valid license identifier`: https://spdx.org/licenses/
532-
.. _`Travis CI`: https://travis-ci.org/
533-
.. _`Travis cron`: https://docs.travis-ci.com/user/cron-jobs/
518+
.. _`GitHub Actions`: https://docs.github.com/en/free-pro-team@latest/actions
519+
.. _`Travis CI`: https://docs.travis-ci.com/

0 commit comments

Comments
 (0)