kpumuk/codecolorer

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
# To update the build configuration, edit the "builds" array below and run:
#
#   erb .circleci/config.yml.erb > .circleci/config.yml
#


version: 2

shared_build_steps: &shared_build_steps
  - checkout

  - attach_workspace:
      at: /tmp/workspace

  - run:
      name: Downloading CodeClimate Test Reporter
      command: |
        curl -sL https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
        chmod +x ./cc-test-reporter

  - run:
      name: Storing PHP Version
      command: |
        echo "$PHP_VERSION/$PHPUNIT_VERSION" > PHP_VERSION
        cat PHP_VERSION

  # Download and cache dependencies
  - restore_cache:
      keys:
      - dependencies-{{ .Environment.CACHE_VERSION }}-{{ checksum "PHP_VERSION" }}

  - run:
      name: Installing Dependencies
      command: |
        sudo -E install-php-extensions xdebug-$XDEBUG_VERSION
        sudo docker-php-ext-enable xdebug
        composer require --dev --no-update phpunit/phpunit "~$PHPUNIT_VERSION"
        composer require --dev --no-update doctrine/instantiator "$DOCTRINE_VERSION"
        composer install --no-interaction --ignore-platform-reqs

  - save_cache:
      paths:
        - vendor
        - composer.json
      key: dependencies-{{ .Environment.CACHE_VERSION }}-{{ checksum "PHP_VERSION" }}

  # run tests!
  - run:
      name: Running Tests
      command: |
        vendor/bin/phpunit --version
        vendor/bin/phpunit --coverage-clover clover.xml --configuration tests/phpunit${PHPUNIT_VERSION}.xml tests
      environment:
        XDEBUG_MODE: coverage

  - run:
      name: Formatting Coverage
      command: |
        ./cc-test-reporter format-coverage --input-type clover --output coverage/codeclimate.coverage.json

  - persist_to_workspace:
      root: ~/codecolorer
      paths:
        - "*/coverage/codeclimate.coverage.json"
        - "*/cc-test-reporter"

jobs:
  
  build-php74:
    docker:
      - image: cimg/php:7.4
        environment:
          PHP_VERSION: 7.4
          PHPUNIT_VERSION: 9
          DOCTRINE_VERSION: ^1.5.0
          XDEBUG_VERSION: 3.1.5
    working_directory: ~/codecolorer/php74
    steps: *shared_build_steps
  
  build-php80:
    docker:
      - image: cimg/php:8.0
        environment:
          PHP_VERSION: 8.0
          PHPUNIT_VERSION: 9
          DOCTRINE_VERSION: ^1.5.0
          XDEBUG_VERSION: 3.2.1
    working_directory: ~/codecolorer/php80
    steps: *shared_build_steps
  
  build-php81:
    docker:
      - image: cimg/php:8.1
        environment:
          PHP_VERSION: 8.1
          PHPUNIT_VERSION: 10
          DOCTRINE_VERSION: ^2.0
          XDEBUG_VERSION: 3.2.1
    working_directory: ~/codecolorer/php81
    steps: *shared_build_steps
  
  build-php82:
    docker:
      - image: cimg/php:8.2
        environment:
          PHP_VERSION: 8.2
          PHPUNIT_VERSION: 10
          DOCTRINE_VERSION: ^2.0
          XDEBUG_VERSION: 3.2.1
    working_directory: ~/codecolorer/php82
    steps: *shared_build_steps
  

  upload-coverage:
    docker:
      - image: cimg/base:2023.04
        environment:
          CC_TEST_REPORTER_ID: c905307dfede8f3280ee4209d836ef7035981e83a62a7d256b249c9e7ea35484
    steps:
      - attach_workspace:
          at: /tmp/workspace

      - run:
          name: Uploading Code Coverage
          command: |
            cd /tmp/workspace/php74
            ./cc-test-reporter upload-coverage --input coverage/codeclimate.coverage.json || true

workflows:
  version: 2
  test:
    jobs:
      
      - build-php74
      
      - build-php80
      
      - build-php81
      
      - build-php82
      

      - upload-coverage:
          requires:
            - build-php74