diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000..af76b9286 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,56 @@ +# we're running the benchmarks in a job separate from CI as it may take some time to finish + +on: + push: + branches: + - benchmark-runner + +name: "Benchmark" + +env: + PHP_EXTENSIONS: fileinfo, gd, imagick, json, mbstring + PHP_INI_VALUES: memory_limit=-1, error_reporting=-1, display_errors=On + +jobs: + + benchmark: + name: "Run Benchmark suite" + runs-on: ubuntu-latest + + steps: + - name: "Checkout sources" + uses: actions/checkout@v4 + with: + ref: main + + - name: "Install PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: "8.3" + extensions: opcache, ${{ env.PHP_EXTENSIONS }} + ini-values: ${{ env.PHP_INI_VALUES }} + coverage: none + + - name: "Install dependencies with composer" + uses: ramsey/composer-install@v3 + with: + working-directory: main + + - name: "Run PHPBench" + run: php main/vendor/bin/phpbench run --progress=plain --report=bare --output=csv + + - name: "Parse benchmark results" + run: php main/benchmark/parse-result.php + + - name: "Generate HTML report" + run: php main/benchmark/generate-html.php + + - name: "Generate Markdown report" + run: php main/benchmark/generate-markdown.php + + - name: "Publish results to branch benchmark" + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: benchmark + folder: main/.build/phpbench + clean: true