diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 000000000..1bda77ec8 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,77 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Continuous Integration" + +on: + - "pull_request" + +env: + COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --no-suggest --prefer-dist --optimize-autoloader" + SYMFONY_PHPUNIT_VERSION: "" + +jobs: + tests: + name: "Tests" + + runs-on: "ubuntu-latest" + + strategy: + matrix: + php-version: + - "5.3" + - "5.4" + - "5.5" + - "5.6" + - "7.0" + - "7.1" + - "7.2" + - "7.3" + - "7.4" + + dependencies: + - "locked" + - "highest" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + ini-values: "memory_limit=-1" + php-version: "${{ matrix.php-version }}" + + - name: "Determine composer cache directory" + id: "determine-composer-cache-directory" + run: "echo \"::set-output name=directory::$(composer config cache-dir)\"" + + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v1" + with: + path: "${{ steps.determine-composer-cache-directory.outputs.directory }}" + key: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}-${{ hashFiles('**/composer.lock') }}" + restore-keys: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}" + + - name: "Install highest dependencies from composer.json using composer binary provided by system" + if: "matrix.dependencies == 'highest'" + run: "composer update ${{ env.COMPOSER_FLAGS }}" + + - name: "Install dependencies from composer.lock using composer binary provided by system" + if: "matrix.dependencies == 'locked'" + run: "composer install ${{ env.COMPOSER_FLAGS }}" + + - name: "Install dependencies from composer.lock using composer binary from source" + if: "matrix.dependencies == 'locked'" + run: "bin/composer install ${{ env.COMPOSER_FLAGS }}" + + - name: "Prepare git environment" + run: "git config --global user.name composer && git config --global user.email composer@example.com" + + - name: "Set SYMFONY_PHPUNIT_VERSION environment variable" + if: "matrix.php-version == '7.4'" + run: "echo \"::set-env name=SYMFONY_PHPUNIT_VERSION::7.5\"" + + - name: "Run tests" + run: "vendor/bin/simple-phpunit" diff --git a/README.md b/README.md index c538df803..1134e088c 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Composer helps you declare, manage, and install dependencies of PHP projects. See [https://getcomposer.org/](https://getcomposer.org/) for more information and documentation. +[![Continuous Integration](https://github.com/composer/composer.svg/workflows/Continuous%20Integration/badge.svg?branch=master)](https://github.com/composer/composer.svg/actions) [![Build Status](https://travis-ci.org/composer/composer.svg?branch=master)](https://travis-ci.org/composer/composer) Installation / Usage