name: Performance testing on: pull_request: jobs: performance-testing: runs-on: ubuntu-latest strategy: fail-fast: false matrix: php-versions: ['8.0'] name: performance-${{ matrix.php-versions }} steps: - name: Checkout server before PR uses: actions/checkout@v3 with: submodules: true ref: ${{ github.event.pull_request.base.ref }} - name: Set up php ${{ matrix.php-versions }} uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} tools: phpunit extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd - name: Set up Nextcloud run: | mkdir data ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password php -S localhost:8080 & - name: Apply blueprint uses: icewind1991/blueprint@v0.1.2 with: blueprint: tests/blueprints/basic.toml ref: ${{ github.event.pull_request.head.ref }} - name: Run before measurements uses: nextcloud/profiler@fa03a1e6864fcb63fb92b8940fa72f5191baffbe with: run: | curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt output: before.json - name: Apply PR run: | git fetch origin ${{ github.event.pull_request.head.ref }} git checkout ${{ github.event.pull_request.head.ref }} git submodule update ./occ upgrade - name: Run after measurements id: compare uses: nextcloud/profiler@fa03a1e6864fcb63fb92b8940fa72f5191baffbe with: run: | curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt output: after.json compare-with: before.json - name: Upload profiles if: always() uses: actions/upload-artifact@v2 with: name: profiles path: | before.json after.json - uses: actions/github-script@v5 if: failure() && steps.compare.outcome == 'failure' with: github-token: ${{secrets.GITHUB_TOKEN}} script: | let comment = `Possible performance regression detected\n`; comment += `
Show Output \`\`\` ${{ steps.compare.outputs.compare }} \`\`\`
`; github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: comment })