From e8f0920317658b4a9c96c1d91e0e0ced2ab40d10 Mon Sep 17 00:00:00 2001 From: Giacomo Fornari Date: Wed, 13 Oct 2021 11:52:15 +0200 Subject: [PATCH] Migrate CI from CircleCI to Github Actions --- .circleci/config.yml | 151 -------------------- .github/actions/composer-install/action.yml | 20 +++ .github/workflows/ci.yml | 91 ++++++++++++ 3 files changed, 111 insertions(+), 151 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/actions/composer-install/action.yml create mode 100644 .github/workflows/ci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 3e7360b..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,151 +0,0 @@ -version: 2 - -workflows: - version: 2 - quality-tools: - jobs: - - unit-tests - - integration-tests - - mutation-tests: - requires: - - unit-tests - - phpstan - - phpcs - - composer-require-checker - -jobs: - unit-tests: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: mkdir -p ~/phpunit - - run: make test-unit FLAGS="--log-junit ~/phpunit/unit.xml" - - store_test_results: - path: ~/phpunit - - store_artifacts: - path: ~/phpunit - - integration-tests: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: mkdir -p ~/phpunit - - run: make test-integration FLAGS="--log-junit ~/phpunit/integration.xml" - - store_test_results: - path: ~/phpunit - - store_artifacts: - path: ~/phpunit - - mutation-tests: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: make test-mutation - - phpstan: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: make static-analysis - - phpcs: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: make cs-check - - composer-require-checker: - docker: - - image: circleci/php:7.4 - steps: - - run: sudo composer self-update - - checkout - - restore_cache: - keys: - - project-dependencies-{{ checksum "~/project/composer.lock" }} - - composer-cache - - run: make install-ci - - save_cache: - key: project-dependencies-{{ checksum "~/project/composer.lock" }} - paths: - - ~/project/vendor - - save_cache: - key: composer-cache - paths: - - ~/.composer/cache - - run: make composer-require-checker diff --git a/.github/actions/composer-install/action.yml b/.github/actions/composer-install/action.yml new file mode 100644 index 0000000..d7b6f39 --- /dev/null +++ b/.github/actions/composer-install/action.yml @@ -0,0 +1,20 @@ +name: Install dependencies +description: Install dependencies with Composer +runs: + using: 'composite' + steps: + - run: composer validate --strict + shell: bash + + - id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + shell: bash + + - uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - run: composer install -a -n --no-progress + shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..119cb6a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,91 @@ +name: Quality checks + +on: + pull_request: + +jobs: + test: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + php-version: + - "7.4" + - "8.0" + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: composer:v2 + + - uses: ./.github/actions/composer-install + + - name: Run unit tests + run: make test-unit + + - name: Run mutation tests + run: make test-mutation + + - name: Run integration tests + run: make test-integration + + static-analysis: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + tools: composer:v2 + + - uses: ./.github/actions/composer-install + + - name: Run static analysis + run: make static-analysis + + style-check: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + tools: composer:v2 + + - uses: ./.github/actions/composer-install + + - name: Run style checker + run: make cs-check + + composer-require-checker: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + tools: composer:v2 + + - uses: ./.github/actions/composer-install + + - name: Run ComposerRequireChecker + run: make composer-require-checker +