name: Publish Dashboard to Cloudflare Pages on: push: paths: - .github/workflows/publish-dashboard.yaml - packages/dashboard/** - package.json - pnpm-lock.yaml pull_request: types: [opened, synchronize, reopened] paths: - .github/workflows/publish-dashboard.yaml - packages/dashboard/** - package.json - pnpm-lock.yaml env: PUBLIC_APEX_DOMAIN: ${{ vars.PUBLIC_APEX_DOMAIN }} MAIN_BRANCH: main jobs: publish: runs-on: ubuntu-latest permissions: contents: read deployments: write pull-requests: write name: Publish to Cloudflare Pages steps: - name: Checkout uses: actions/checkout@v4.1.1 - name: pnpm uses: pnpm/action-setup@v3.0.0 with: version: 10.12.4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: 20.x cache: 'pnpm' - name: Prepare build run: | pnpm i cd packages/dashboard pnpm build - name: Expose git commit data uses: rlespinasse/git-commit-data-action@v1.5.0 - name: Publish to Cloudflare Pages uses: cloudflare/wrangler-action@v3 id: deployment with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} gitHubToken: ${{ secrets.GITHUB_TOKEN }} command: pages deploy ./packages/dashboard/build --project-name=pockethost --branch=${{ github.head_ref || github.ref_name }} - name: Find related pull request id: find_pr uses: actions/github-script@v7 with: result-encoding: string script: | const { owner, repo } = context.repo const branch = (context.payload.pull_request && context.payload.pull_request.head && context.payload.pull_request.head.ref) || process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME const prs = await github.rest.pulls.list({ owner, repo, state: 'open', head: `${owner}:${branch}` }) if (prs.data.length > 0) { return String(prs.data[0].number) } return '' - name: Comment preview URL on PR if: steps.find_pr.outputs.result != '' uses: marocchino/sticky-pull-request-comment@v2 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} number: ${{ steps.find_pr.outputs.result }} header: pockethost-dashboard-preview message: | ✅ Preview available: ${{ steps.deployment.outputs.deployment-url }} Triggered by @${{ github.actor }} on `${{ github.ref_name }}`. - name: Discord feature branch notification if: github.ref_name != env.MAIN_BRANCH env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: args: '**DASHBOARD PREVIEW** ${{ steps.deployment.outputs.deployment-url }} was generated by ${{ github.actor }} in [${{ env.GIT_COMMIT_SHORT_SHA }}](https://github.com/${{ github.repository}}/commit/${{ github.sha }}) on [${{ github.repository}}#${{ github.ref_name }}](https://github.com/${{ github.repository}}/tree/${{ github.ref_name }}) with memo `${{ env.GIT_COMMIT_MESSAGE_SUBJECT }}`' - name: Discord live branch notification if: github.ref_name == env.MAIN_BRANCH env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: args: '**DASHBOARD LIVE** https://pockethost.io ([permalink](${{ steps.deployment.outputs.deployment-url }})) was updated by ${{ github.actor }} in [${{ env.GIT_COMMIT_SHORT_SHA }}](https://github.com/${{ github.repository}}/commit/${{ github.sha }}) on [${{ github.repository}}#${{ github.ref_name }}](https://github.com/${{ github.repository}}/tree/${{ github.ref_name }}): `${{ env.GIT_COMMIT_MESSAGE_SUBJECT }}`'