feat: add GitHub Actions workflows for build and deploy preview

- Introduced a new workflow for building the preview site and uploading build artifacts.
- Added a deployment workflow to Cloudflare Pages triggered by the successful completion of the build workflow.
- Configured Node.js and pnpm for dependency management and build processes.
This commit is contained in:
Mauricio Siu 2025-03-16 11:02:43 -06:00
parent 986f73c0be
commit 4fde69f674
2 changed files with 75 additions and 0 deletions

37
.github/workflows/build-preview.yml vendored Normal file
View File

@ -0,0 +1,37 @@
name: Build Preview Deployment
on:
pull_request:
types: [opened, synchronize]
jobs:
build-preview:
runs-on: ubuntu-latest
name: Build Preview Site and Upload Build Artifact
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install dependencies
working-directory: app
run: pnpm install
- name: Build
working-directory: app
run: pnpm build
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: preview-build
path: app/dist

38
.github/workflows/deploy-preview.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: Upload Preview Deployment
on:
workflow_run:
workflows: ['Build Preview Deployment']
types:
- completed
permissions:
actions: read
deployments: write
contents: read
pull-requests: write
jobs:
deploy-preview:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
name: Deploy Preview to Cloudflare Pages
steps:
- name: Download build artifact
uses: actions/download-artifact@v4
id: preview-build-artifact
with:
name: preview-build
path: build
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
- name: Deploy to Cloudflare Pages
uses: AdrianGonz97/refined-cf-pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
githubToken: ${{ secrets.GITHUB_TOKEN }}
projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
deploymentName: Preview
directory: ${{ steps.preview-build-artifact.outputs.download-path }}