Skip to content

feat: add white logo to hero and update favicon set #54

feat: add white logo to hero and update favicon set

feat: add white logo to hero and update favicon set #54

Workflow file for this run

name: Deploy Previews
# Every PR into `main` gets a standard Vercel Preview deployment, commented
# on the PR. Production deploys happen in release.yml, gated behind
# semantic-release on `main`.
on:
pull_request:
branches: [main]
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Install Vercel CLI
run: npm install -g vercel@58.4.4
- name: Pull Vercel environment (preview)
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
- name: Build (preview)
run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy (preview)
id: deploy-preview
# Without --archive=tgz, the CLI uploads every build output file as
# its own request and blows through Vercel's free-plan per-file
# upload quota ("Too many requests ... code: api-upload-free"),
# surfacing as an opaque "Upload aborted". Bundling into one tgz
# upload avoids that entirely. Retry loop stays as a safety net for
# genuine transient network blips.
run: |
for i in 1 2 3; do
url=$(vercel deploy --prebuilt --archive=tgz --token=${{ secrets.VERCEL_TOKEN }}) && break
echo "Deploy attempt $i failed, retrying in 15s..."
sleep 15
if [ "$i" = "3" ]; then
echo "::error::Deploy failed after 3 attempts"
exit 1
fi
done
echo "url=$url" >> "$GITHUB_OUTPUT"
- name: Comment preview URL on PR
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `Preview deployed: ${{ steps.deploy-preview.outputs.url }}`
});