Skip to content
# This workflow specifically deploys the `apps/erd-sample` app.
# For deployments of other `apps/*` apps, see `.github/workflows/vercel-deploy.yml`.
name: Vercel Deployment erd-sample
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
setup-deployment:
runs-on: ubuntu-latest
outputs:
environment: ${{ steps.environment.outputs.environment }}
has-changes: ${{ steps.changes.outputs.src }}
steps:
- uses: actions/checkout@v4
- uses: tj-actions/[email protected]
id: branch-name
- name: Detect Environment Changes
id: environment
run: |
echo "environment=${{ steps.branch-name.outputs.current_branch == 'main' && 'production' || 'preview' }}" >> $GITHUB_OUTPUT
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
src:
- './.github/workflows/vercel-deploy-erd-sample.yml'
- './frontend/apps/erd-sample/**'
- './frontend/packages/cli/**'
- './frontend/packages/db-structure/**'
- './frontend/packages/erd-core/**'
- './frontend/packages/ui/**'
deploy:
name: Deploy
needs: [setup-deployment]
runs-on: ubuntu-latest
timeout-minutes: 15
if: ${{ needs.setup-deployment.outputs.has-changes == 'true' }}
strategy:
matrix:
apps:
- name: "@liam-hq/erd-sample"
vercel-project-id-key: VERCEL_PROJECT_ID_ERD_SAMPLE
environment:
name: "${{ needs.setup-deployment.outputs.environment }} - ${{ matrix.apps.name }}"
url: ${{ steps.deployment.outputs.deployment-url }}
outputs:
app-name: ${{ matrix.apps.name }}
url: ${{ steps.deployment.outputs.deployment-url }}
env:
VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ vars[matrix.apps.vercel-project-id-key] }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/pnpm-setup
with:
working-directory: frontend
- name: Install Vercel CLI
run: pnpm add --global vercel@latest
- name: Pull Vercel Enviroment Infomation
run: vercel pull --yes --environment=${{ needs.setup-deployment.outputs.environment }} --token=${{ secrets.VERCEL_TOKEN }}
- name: Run prepare command
run: pnpm build
working-directory: frontend
- name: Update index.html content
run: pnpm --filter ${{ matrix.apps.name }} update_dist_content
working-directory: frontend
# if: ${{ main }}
- name: Build Project Artifacts
run: vercel build ${{ needs.setup-deployment.outputs.environment == 'production' && '--prod' || '' }}
- name: Deploy Project Artifacts to Vercel
run: |
vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} ${{ needs.setup-deployment.outputs.environment == 'production' && '--prod' || '' }} > deployment-url.txt
echo "deployment-url=$(cat deployment-url.txt)" >> $GITHUB_OUTPUT
id: deployment