1name: Preview PR 2on: 3 pull_request_target: 4 5jobs: 6 build: 7 runs-on: "ubuntu-22.04" 8 if: github.repository_owner == 'php' 9 steps: 10 - uses: actions/checkout@v4 11 with: 12 ref: "refs/pull/${{ github.event.number }}/merge" 13 14 - uses: easingthemes/ssh-deploy@main 15 with: 16 REMOTE_HOST: ${{ secrets.PREVIEW_REMOTE_HOST }} 17 REMOTE_USER: ${{ secrets.PREVIEW_REMOTE_USER }} 18 SSH_PRIVATE_KEY: ${{ secrets.PREVIEW_SSH_KEY }} 19 TARGET: "/home/thephpfoundation/preview/web-php-pr-${{ github.event.number }}/public" 20 SCRIPT_BEFORE: bash /home/thephpfoundation/scripts/pr_created_pre.sh web-php ${{ github.event.number }} 21 SCRIPT_AFTER: bash /home/thephpfoundation/scripts/pr_created.sh web-php ${{ github.event.number }} 22 23 - uses: peter-evans/find-comment@v3 24 id: fc 25 with: 26 issue-number: ${{ github.event.number }} 27 comment-author: 'github-actions[bot]' 28 body-includes: 'Preview for commit' 29 30 - uses: peter-evans/create-or-update-comment@v4 31 with: 32 issue-number: ${{ github.event.number }} 33 comment-id: ${{ steps.fc.outputs.comment-id }} 34 edit-mode: 'replace' 35 body: | 36 Preview for commit ${{ github.sha }} can be found at https://web-php-pr-${{ github.event.number }}.preview.thephp.foundation 37 38 tests_visual: 39 name: "Visual Tests" 40 41 runs-on: "ubuntu-latest" 42 if: github.repository_owner == 'php' 43 44 strategy: 45 matrix: 46 php-version: 47 - "8.2" 48 node-version: 49 - "22.x" 50 51 env: 52 HTTP_HOST: "localhost:8080" 53 54 steps: 55 - uses: actions/checkout@v4 56 with: 57 ref: "refs/pull/${{ github.event.number }}/merge" 58 59 - uses: shivammathur/setup-php@v2 60 with: 61 coverage: "none" 62 extensions: "none, curl, dom, json, mbstring, tokenizer, xml, xmlwriter" 63 php-version: "${{ matrix.php-version }}" 64 65 - name: Use Node.js ${{ matrix.node-version }} 66 uses: actions/setup-node@v4 67 with: 68 node-version: ${{ matrix.node-version }} 69 70 - name: "Set up problem matchers for PHP" 71 run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" 72 73 - name: "Set up problem matchers for phpunit/phpunit" 74 run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" 75 76 - name: "Determine composer cache directory" 77 run: "echo \"COMPOSER_CACHE_DIR=$(composer config cache-dir)\" >> $GITHUB_ENV" 78 79 - name: "Cache dependencies installed with composer" 80 uses: actions/cache@v3 81 with: 82 path: "${{ env.COMPOSER_CACHE_DIR }}" 83 key: "php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.lock') }}" 84 restore-keys: "php-${{ matrix.php-version }}-composer-" 85 86 - name: "Install dependencies with composer" 87 run: "composer install --ansi --no-interaction --no-progress" 88 89 - name: "Install dependencies" 90 run: "yarn install" 91 92 - name: "Install Playwright" 93 run: "npx playwright install" 94 95 - name: "Run visual tests" 96 run: "make tests_visual" 97 98 - uses: actions/upload-artifact@v4 99 if: ${{ !cancelled() }} 100 with: 101 name: playwright-report 102 path: playwright-report/ 103 retention-days: 30 104 105 - uses: easingthemes/ssh-deploy@main 106 if: ${{ !cancelled() }} 107 with: 108 REMOTE_HOST: ${{ secrets.PREVIEW_REMOTE_HOST }} 109 REMOTE_USER: ${{ secrets.PREVIEW_REMOTE_USER }} 110 SSH_PRIVATE_KEY: ${{ secrets.PREVIEW_SSH_KEY }} 111 SOURCE: "playwright-report/" 112 TARGET: "/home/thephpfoundation/preview/web-php-regression-report-pr-${{ github.event.number }}/public" 113 SCRIPT_BEFORE: bash /home/thephpfoundation/scripts/pr_created_pre.sh web-php-regression-report ${{ github.event.number }} 114 115 - uses: peter-evans/find-comment@v3 116 if: ${{ !cancelled() }} 117 id: snapshot 118 with: 119 issue-number: ${{ github.event.number }} 120 comment-author: 'github-actions[bot]' 121 body-includes: 'Regression report for commit' 122 123 - uses: peter-evans/create-or-update-comment@v4 124 if: ${{ !cancelled() }} 125 with: 126 issue-number: ${{ github.event.number }} 127 comment-id: ${{ steps.snapshot.outputs.comment-id }} 128 edit-mode: 'replace' 129 body: | 130 Regression report for commit ${{ github.sha }} is at https://web-php-regression-report-pr-${{ github.event.number }}.preview.thephp.foundation 131