pockethost/.github/workflows/publish-dashboard.yaml
Ben Allfree a7e74b512a wip
2025-08-07 14:56:37 -07:00

105 lines
4.0 KiB
YAML

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 }}`'