Add 'user_migration' to relevant quick presets #52119
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors | |
| # SPDX-License-Identifier: MIT | |
| name: Performance testing | |
| on: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: performance-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| performance-testing: | |
| runs-on: ubuntu-latest | |
| # Skip entirely on fork PRs so the job result is 'skipped' rather than | |
| # 'failure'. The profiler action uses github.event.pull_request.head.repo.clone_url | |
| # and GITHUB_TOKEN in ways that do not work reliably from forks, and a | |
| # clean skip is far less confusing for contributors than a mid-run error. | |
| if: >- | |
| github.repository_owner != 'nextcloud-gmbh' && | |
| github.event.pull_request.head.repo.full_name == github.repository | |
| permissions: | |
| pull-requests: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php-versions: ['8.2'] | |
| name: performance-${{ matrix.php-versions }} | |
| steps: | |
| - name: Checkout server before PR | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| submodules: true | |
| ref: ${{ github.event.pull_request.base.ref }} | |
| - name: Set up php ${{ matrix.php-versions }} | |
| uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 | |
| timeout-minutes: 5 | |
| with: | |
| php-version: ${{ matrix.php-versions }} | |
| extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - 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@00504403f76cb2a09efd0d16793575055e6f63cb # v0.1.2 | |
| with: | |
| blueprint: tests/blueprints/basic.toml | |
| ref: ${{ github.event.pull_request.head.ref }} | |
| - name: Run before measurements | |
| uses: nextcloud/profiler@6a74c915048285b35b8e1cd96c0835a635945044 | |
| 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 | |
| profiler-branch: master | |
| - name: Apply PR # zizmor: ignore[template-injection] | |
| run: | | |
| git remote add pr '${{ github.event.pull_request.head.repo.clone_url }}' | |
| git fetch pr '${{ github.event.pull_request.head.ref }}' | |
| git checkout -b 'pr/${{ github.event.pull_request.head.ref }}' | |
| git submodule update | |
| ./occ upgrade | |
| - name: Run after measurements | |
| id: compare | |
| uses: nextcloud/profiler@6a74c915048285b35b8e1cd96c0835a635945044 | |
| 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 | |
| profiler-branch: master | |
| compare-with: before.json | |
| - name: Upload profiles | |
| if: always() | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f | |
| with: | |
| name: profiles | |
| path: | | |
| before.json | |
| after.json | |
| - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v7 | |
| if: failure() && steps.compare.outcome == 'failure' | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| let comment = `Possible performance regression detected\n`; | |
| comment += `<details><summary>Show Output</summary> | |
| \`\`\` | |
| ${{ steps.compare.outputs.compare }} | |
| \`\`\` | |
| </details>`; | |
| github.rest.issues.createComment({ | |
| issue_number: context.issue.number, | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| body: comment | |
| }) |