pipelines:
  default:
    - step:
        image: php:7.4
        name: "PHP 7.4"
        script:
          # Install Dependencies
          - apt-get update && apt-get install -y subversion git zip libzip-dev --no-install-recommends

          # PHP extensions
          - docker-php-ext-install -j$(nproc) mysqli pdo_mysql zip

          # Setup WordPress tests
          - bash bin/install-wp-tests.sh wordpress_tests root root 127.0.0.1 latest true

          # Install Composer
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - export PATH="$PATH:$HOME/.composer/vendor/bin"
          - export COMPOSER_ALLOW_SUPERUSER=1

          # Install PHPUnit
          - PHPUNIT_VERSION=9.6.19
          - curl -o /usr/local/bin/phpunit "https://phar.phpunit.de/phpunit-${PHPUNIT_VERSION}.phar" && chmod +x /usr/local/bin/phpunit
          - composer global require yoast/phpunit-polyfills
          - export WP_TESTS_PHPUNIT_POLYFILLS_PATH="$HOME/.composer/vendor/yoast/phpunit-polyfills"
          - phpunit --version

          # Install PHPCS and WPCS
          - composer global config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
          - composer global require "wp-coding-standards/wpcs"
          - composer global require "phpcompatibility/phpcompatibility-wp"
          - phpcs --version

          # Run PHPCS
          - phpcs

          # Run PHPUnit
          - phpunit
        services:
          - database

    - step:
        image: php:8.0
        name: "PHP 8.0"
        script:
          # Install Dependencies
          - apt-get update && apt-get install -y subversion git zip libzip-dev --no-install-recommends

          # PHP extensions
          - docker-php-ext-install -j$(nproc) mysqli pdo_mysql zip

          # Setup WordPress tests
          - bash bin/install-wp-tests.sh wordpress_tests root root 127.0.0.1 latest true

          # Install Composer
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - export PATH="$PATH:$HOME/.composer/vendor/bin"
          - export COMPOSER_ALLOW_SUPERUSER=1

          # Install PHPUnit
          - PHPUNIT_VERSION=9.6.19
          - curl -o /usr/local/bin/phpunit "https://phar.phpunit.de/phpunit-${PHPUNIT_VERSION}.phar" && chmod +x /usr/local/bin/phpunit
          - composer global require yoast/phpunit-polyfills
          - export WP_TESTS_PHPUNIT_POLYFILLS_PATH="$HOME/.composer/vendor/yoast/phpunit-polyfills"
          - phpunit --version

          # Install PHPCS and WPCS
          - composer global config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
          - composer global require "wp-coding-standards/wpcs"
          - composer global require "phpcompatibility/phpcompatibility-wp"
          - phpcs --version

          # Run PHPCS
          - phpcs

          # Run PHPUnit
          - phpunit
        services:
          - database

    - step:
        image: php:8.2
        name: "PHP 8.2"
        script:
          # Install Dependencies
          - apt-get update && apt-get install -y subversion git zip libzip-dev --no-install-recommends

          # PHP extensions
          - docker-php-ext-install -j$(nproc) mysqli pdo_mysql zip

          # Setup WordPress tests
          - bash bin/install-wp-tests.sh wordpress_tests root root 127.0.0.1 latest true

          # Install Composer
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - export PATH="$PATH:$HOME/.composer/vendor/bin"
          - export COMPOSER_ALLOW_SUPERUSER=1

          # Install PHPUnit
          - PHPUNIT_VERSION=9.6.19
          - curl -o /usr/local/bin/phpunit "https://phar.phpunit.de/phpunit-${PHPUNIT_VERSION}.phar" && chmod +x /usr/local/bin/phpunit
          - composer global require yoast/phpunit-polyfills
          - export WP_TESTS_PHPUNIT_POLYFILLS_PATH="$HOME/.composer/vendor/yoast/phpunit-polyfills"
          - phpunit --version

          # Install PHPCS and WPCS
          - composer global config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
          - composer global require "wp-coding-standards/wpcs"
          - composer global require "phpcompatibility/phpcompatibility-wp"
          - phpcs --version

          # Run PHPCS
          - phpcs

          # Run PHPUnit
          - phpunit
        services:
          - database

definitions:
  services:
    database:
      image: mysql:latest
      environment:
        MYSQL_DATABASE: 'wordpress_tests'
        MYSQL_ROOT_PASSWORD: 'root'
