resources: containers: - container: redis image: redis ports: - 6379:6379 services: redis: redis pool: vmImage: 'Ubuntu-20.04' variables: PHP_VERSION: 8.0 COMPOSER_CACHE_DIR: $(Build.Repository.LocalPath)/src/vendor COMPOSER_CACHE_RESTORED: 'false' steps: - task: Cache@2 inputs: key: 'composer-vendor | "$(Agent.OS)" | src/composer.lock' path: $(COMPOSER_CACHE_DIR) cacheHitVar: COMPOSER_CACHE_RESTORED displayName: 'Cache dependencies' - task: SonarCloudPrepare@1 displayName: 'SonarCloud Config' inputs: SonarCloud: 'SonarCloud' organization: 'onepoint-apac' scannerMode: 'CLI' configMode: 'manual' cliProjectKey: 'API-Mobile' cliSources: 'src' extraProperties: | sonar.sources=src/app,src/resources/views sonar.tests=src/tests sonar.php.coverage.reportPaths=src/storage/coverage/clover.xml - task: UseDotNet@2 displayName: 'Installs dotnet for code coverage publishing' inputs: packageType: 'sdk' version: '2.1.x' continueOnError: true - script: | sudo update-alternatives --set php /usr/bin/php$(PHP_VERSION) sudo update-alternatives --set phar /usr/bin/phar$(PHP_VERSION) sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(PHP_VERSION) sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(PHP_VERSION) sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(PHP_VERSION) php -version displayName: 'Use PHP $(PHP_VERSION)' condition: always() - task: DownloadSecureFile@1 name: envFile inputs: secureFile: 'API.env.$(environment).txt' displayName: 'Download .env file' condition: always() - script: mv $(envFile.secureFilePath) .env workingDirectory: src displayName: 'Copy .env file' condition: always() - script: | composer global require hirak/prestissimo composer install --no-interaction --no-suggest --classmap-authoritative workingDirectory: src displayName: 'Composer install' condition: eq(variables.COMPOSER_CACHE_RESTORED, 'false') - script: | composer dumpautoload --classmap-authoritative workingDirectory: src displayName: 'Composer autoload' condition: eq(variables.COMPOSER_CACHE_RESTORED, 'true') - script: touch storage/app/sqlite.db workingDirectory: src displayName: 'Initiate database' - script: php artisan optimize workingDirectory: src displayName: 'Optimisations' - script: php artisan cache:clear workingDirectory: src displayName: 'Clear application cache' - script: | sudo mkdir -p /etc/php/8.0/cli/conf.d sudo bash -c "echo \"xdebug.mode=coverage\" > /etc/php/8.0/cli/conf.d/99-xdebug-override.ini" php --ri xdebug continueOnError: true displayName: 'Set xdebug mode' - script: php artisan test --log-junit storage/testing-logs/junit.xml --coverage-clover=storage/coverage/clover.xml name: phpunit workingDirectory: src displayName: 'Run PHPUnit' - script: if ls api-*.log &> /dev/null; then cat `ls -rt api-*.log | tail -n 1`; fi workingDirectory: src/storage/logs displayName: 'Dump API logs' condition: failed() - script: if ls mf-*.log &> /dev/null; then cat `ls -rt mf-*.log | tail -n 1`; fi workingDirectory: src/storage/logs displayName: 'Dump MF logs' condition: failed() - task: PublishTestResults@2 displayName: 'Publish test results' inputs: testResultsFormat: 'JUnit' testResultsFiles: 'src/storage/testing-logs/junit.xml' condition: always() - task: PublishCodeCoverageResults@2 displayName: 'Publish code coverage results. It is failing now because: https://github.com/microsoft/azure-pipelines-tasks/issues/17700' inputs: summaryFileLocation: 'src/storage/coverage/clover.xml' condition: always() continueOnError: true - task: SonarCloudAnalyze@1 displayName: 'SonarCloud Analysis' continueOnError: true - task: SonarCloudPublish@1 displayName: 'SonarCloud Publish' inputs: pollingTimeoutSec: '300' trigger: - development