.appveyor.yml 5.96 KB
Newer Older
1 2 3 4 5 6
build: false
platform:
  - x64
#matrix:
#  fast_finish: true # kills the build at the first failure
clone_folder: C:\projects\dbal
7
clone_depth: 2
8 9 10 11

cache:
  - C:\ProgramData\chocolatey\bin -> .appveyor.yml
  - C:\ProgramData\chocolatey\lib -> .appveyor.yml
Walt Sorensen's avatar
Walt Sorensen committed
12
  - C:\tools\php -> .appveyor.yml
13 14 15
  - C:\tools\cacert -> .appveyor.yml
  - C:\tools\composer -> .appveyor.yml
  - C:\tools\ocular -> .appveyor.yml
16
  - '%LOCALAPPDATA%\Composer\files -> composer.json'
17 18 19 20 21 22 23

## Build matrix for lowest and highest possible targets
environment:
  matrix:
  - db: mssql
    driver: sqlsrv
    db_version: sql2012sp1
24
    php: 7.3
25
    coverage: yes
26 27 28
  - db: mssql
    driver: sqlsrv
    db_version: sql2017
29
    coverage: no
30
    php: 7.3
31 32 33
  - db: mssql
    driver: pdo_sqlsrv
    db_version: sql2017
34
    php: 7.3
35
    coverage: yes
36 37

init:
38
  - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;C:\tools\composer;C:\tools\ocular;%PATH%
39 40 41 42 43 44 45 46
  - SET COMPOSER_NO_INTERACTION=1
  - SET ANSICON=121x90 (121x90)

## Install PHP and composer, and run the appropriate composer command
install:
    - ps: |
        # Check if installation is cached
        if (!(Test-Path c:\tools\php)) {
47
          appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version 7.3.12
48 49 50 51 52 53 54 55 56
          # install sqlite
          appveyor-retry cinst -y sqlite
          Get-ChildItem -Path c:\tools\php
          cd c:\tools\php

          # Set PHP environment items that are always needed
          copy php.ini-production php.ini
          Add-Content php.ini "`n date.timezone=UTC"
          Add-Content php.ini "`n extension_dir=ext"
57
          Add-Content php.ini "`n memory_limit=1G"
58 59 60 61 62
          Add-Content php.ini "`n extension=php_openssl.dll"
          Add-Content php.ini "`n extension=php_mbstring.dll"
          Add-Content php.ini "`n extension=php_fileinfo.dll"
          Add-Content php.ini "`n extension=php_pdo_sqlite.dll"
          Add-Content php.ini "`n extension=php_sqlite3.dll"
63
          Add-Content php.ini "`n extension=php_curl.dll"
64
          Add-Content php.ini "`n curl.cainfo=C:\tools\cacert\bundle.pem"
65

66 67
          # Get and install the latest stable sqlsrv DLL's
          $DLLVersion = (Invoke-WebRequest "https://pecl.php.net/rest/r/sqlsrv/stable.txt").Content
Walt Sorensen's avatar
Walt Sorensen committed
68 69 70 71 72 73 74 75 76
          cd c:\tools\php\ext
          $source = "https://windows.php.net/downloads/pecl/releases/sqlsrv/$($DLLVersion)/php_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip"
          $destination = "c:\tools\php\ext\php_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip"
          Invoke-WebRequest $source -OutFile $destination
          7z x -y php_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip > $null
          $source = "https://windows.php.net/downloads/pecl/releases/pdo_sqlsrv/$($DLLVersion)/php_pdo_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip"
          $destination = "c:\tools\php\ext\php_pdo_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip"
          Invoke-WebRequest $source -OutFile $destination
          7z x -y php_pdo_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc15-x64.zip > $null
77
          $DLLVersion = (Invoke-WebRequest "https://pecl.php.net/rest/r/xdebug/stable.txt").Content
78 79 80
          $source = "https://xdebug.org/files/php_xdebug-$($DLLVersion)-$($env:php)-vc15-nts-x86_64.dll"
          $destination = "c:\tools\php\ext\php_xdebug.dll"
          Invoke-WebRequest $source -OutFile $destination
Walt Sorensen's avatar
Walt Sorensen committed
81 82 83 84
          Remove-Item c:\tools\php\* -include .zip
          cd c:\tools\php
          Add-Content php.ini "`nextension=php_sqlsrv.dll"
          Add-Content php.ini "`nextension=php_pdo_sqlsrv.dll"
85
          Add-Content php.ini "`nzend_extension=php_xdebug.dll"
Walt Sorensen's avatar
Walt Sorensen committed
86
          Add-Content php.ini "`n"
87

88 89 90 91 92 93 94
          # download Composer
          if (!(Test-Path C:\tools\composer)) {
            New-Item -path c:\tools -name composer -itemtype directory
          }
          if (!(Test-Path c:\tools\composer\composer.phar)) {
            appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar -Filename C:\tools\composer\composer.phar
            Set-Content -path 'C:\tools\composer\composer.bat' -Value ('@php C:\tools\composer\composer.phar %*')
95
          }
96

97 98 99 100 101 102 103
          # download Scrutinizer's Ocular
          if (!(Test-Path C:\tools\ocular)) {
            New-Item -path c:\tools -name ocular -itemtype directory
          }
          if (!(Test-Path c:\tools\ocular\ocular.phar)) {
            appveyor-retry appveyor DownloadFile https://github.com/scrutinizer-ci/ocular/releases/download/1.5.2/ocular.phar -Filename C:\tools\ocular\ocular.phar
            Set-Content -path 'C:\tools\ocular\ocular.bat' -Value ('@php C:\tools\ocular\ocular.phar %*')
104 105
          }

106 107 108 109 110 111
          # download CA bundle
          if (!(Test-Path C:\tools\cacert)) {
            New-Item -path c:\tools\ -name cacert -itemtype directory
          }
          if (!(Test-Path c:\tools\cacert\bundle.pem)) {
            appveyor-retry appveyor DownloadFile https://curl.haxx.se/ca/cacert.pem -Filename C:\tools\cacert\bundle.pem
112
          }
113 114
        }
    # install composer dependencies
115 116
    - cd C:\projects\dbal
    - appveyor-retry composer self-update
117
    - appveyor-retry composer install --no-progress --prefer-dist
118 119 120 121 122 123

before_test:
# Selectively start the services
  - ps: >-
      if ($env:db -eq "mssql") {
        $instanceName = $env:db_version.ToUpper()
124
        net start "MSSQL`$$instanceName"
125 126 127 128 129
      }

test_script:
  - ps: >-
      if ($env:db_version) {
130
        $env:phpunit_config = "ci\appveyor\$($env:db).$($env:db_version).$($env:driver).appveyor.xml"
131
      } else {
132
        $env:phpunit_config = "ci\appveyor\$($env:db).$($env:driver).appveyor.xml"
133
      }
134

135 136 137 138
      if ($env:coverage -eq "yes") {
        vendor\bin\phpunit -c $($env:phpunit_config) --coverage-clover clover.xml
      } else {
        vendor\bin\phpunit -c $($env:phpunit_config)
139
      }
140 141 142 143 144 145 146 147 148 149

      if ($LastExitCode -ne 0) {
        $host.SetShouldExit($LastExitCode)
      }

after_test:
  - ps: >-
      if ($env:coverage -eq "yes") {
        appveyor-retry ocular code-coverage:upload --format=php-clover clover.xml
      }