name: Preview PR on: pull_request_target: types: [ labeled ] jobs: build: runs-on: "ubuntu-22.04" if: "github.repository_owner == 'php' && github.event.label.name == 'Status: Preview Allowed'" steps: - uses: actions/checkout@v4 with: ref: "refs/pull/${{ github.event.number }}/merge" - uses: easingthemes/ssh-deploy@main with: REMOTE_HOST: ${{ secrets.PREVIEW_REMOTE_HOST }} REMOTE_USER: ${{ secrets.PREVIEW_REMOTE_USER }} SSH_PRIVATE_KEY: ${{ secrets.PREVIEW_SSH_KEY }} TARGET: "/home/thephpfoundation/preview/web-php-pr-${{ github.event.number }}/public" SCRIPT_BEFORE: bash /home/thephpfoundation/scripts/pr_created_pre.sh web-php ${{ github.event.number }} SCRIPT_AFTER: bash /home/thephpfoundation/scripts/pr_created.sh web-php ${{ github.event.number }} - uses: peter-evans/find-comment@v3 id: fc with: issue-number: ${{ github.event.number }} comment-author: 'github-actions[bot]' body-includes: 'Preview for commit' - uses: peter-evans/create-or-update-comment@v4 with: issue-number: ${{ github.event.number }} comment-id: ${{ steps.fc.outputs.comment-id }} edit-mode: 'replace' body: | 🚀 Preview for commit ${{ github.sha }} can be found at https://web-php-pr-${{ github.event.number }}.preview.thephp.foundation tests_visual: name: "Visual Tests" runs-on: "ubuntu-latest" if: "github.repository_owner == 'php' && github.event.label.name == 'Status: Preview Allowed'" strategy: matrix: php-version: - "8.2" node-version: - "22.x" env: HTTP_HOST: "localhost:8080" steps: - uses: actions/checkout@v4 with: ref: "refs/pull/${{ github.event.number }}/merge" - uses: shivammathur/setup-php@v2 with: coverage: "none" extensions: "none, curl, dom, json, mbstring, tokenizer, xml, xmlwriter" php-version: "${{ matrix.php-version }}" - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: "Set up problem matchers for PHP" run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" - name: "Set up problem matchers for phpunit/phpunit" run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" - name: "Determine composer cache directory" run: "echo \"COMPOSER_CACHE_DIR=$(composer config cache-dir)\" >> $GITHUB_ENV" - name: "Cache dependencies installed with composer" uses: actions/cache@v4 with: path: "${{ env.COMPOSER_CACHE_DIR }}" key: "php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.lock') }}" restore-keys: "php-${{ matrix.php-version }}-composer-" - name: "Install dependencies with composer" run: "composer install --ansi --no-interaction --no-progress" - name: "Install dependencies" run: "yarn install" - name: "Install Playwright" run: "npx playwright install" - name: "Run visual tests" run: "make tests_visual" - uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} with: name: playwright-report path: playwright-report/ retention-days: 30 - uses: easingthemes/ssh-deploy@main if: ${{ !cancelled() }} with: REMOTE_HOST: ${{ secrets.PREVIEW_REMOTE_HOST }} REMOTE_USER: ${{ secrets.PREVIEW_REMOTE_USER }} SSH_PRIVATE_KEY: ${{ secrets.PREVIEW_SSH_KEY }} SOURCE: "playwright-report/" TARGET: "/home/thephpfoundation/preview/web-php-regression-report-pr-${{ github.event.number }}/public" SCRIPT_BEFORE: bash /home/thephpfoundation/scripts/pr_created_pre.sh web-php-regression-report ${{ github.event.number }} - uses: peter-evans/find-comment@v3 if: ${{ !cancelled() }} id: snapshot with: issue-number: ${{ github.event.number }} comment-author: 'github-actions[bot]' body-includes: 'Regression report for commit' - uses: peter-evans/create-or-update-comment@v4 if: ${{ !cancelled() }} with: issue-number: ${{ github.event.number }} comment-id: ${{ steps.snapshot.outputs.comment-id }} edit-mode: 'replace' body: | 🚀 Regression report for commit ${{ github.sha }} is at https://web-php-regression-report-pr-${{ github.event.number }}.preview.thephp.foundation