Skip to content

Commit 2ccd4de

Browse files
committed
add vercel preview pipeline
1 parent 00ffbaa commit 2ccd4de

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Vercel Preview Deployment
2+
env:
3+
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
4+
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
5+
on:
6+
push:
7+
branches-ignore:
8+
- main
9+
pull_request:
10+
branches:
11+
- main
12+
jobs:
13+
Deploy-Preview:
14+
name: Deploy to Vercel Preview Hosting
15+
runs-on: ubuntu-latest
16+
outputs:
17+
preview_url: ${{ steps.preview-deployment.outputs.preview_url }}
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Setup
22+
uses: ./.github/setup
23+
24+
- name: Install Vercel CLI
25+
run: pnpm add -g vercel@latest
26+
27+
- name: Pull Vercel Environment Information
28+
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
29+
- name: Build Project Artifacts
30+
run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
31+
- name: Deploy Project Artifacts to Vercel for Preview
32+
id: preview-deployment
33+
run: |
34+
preview_url=$(vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }})
35+
echo "preview_url=$preview_url" >> "$GITHUB_OUTPUT"
36+
37+
Github-Deployment:
38+
name: Create Github Deployment for Preview Environment
39+
runs-on: ubuntu-latest
40+
needs: Deploy-Preview
41+
permissions:
42+
deployments: write
43+
steps:
44+
- name: Add Failed Preview Deployment
45+
id: preview-deployment-failure
46+
if: ${{ needs.Deploy-Preview.result == 'failure' }}
47+
uses: chrnorm/[email protected]
48+
with:
49+
token: "${{ secrets.GITHUB_TOKEN }}"
50+
initial-status: "failure"
51+
environment-url: ${{ needs.Deploy-Preview.outputs.preview_url }}
52+
environment: preview
53+
- name: Add Successful Preview Deployment
54+
id: preview-deployment-success
55+
if: ${{ needs.Deploy-Preview.result == 'success' }}
56+
uses: chrnorm/[email protected]
57+
with:
58+
token: "${{ secrets.GITHUB_TOKEN }}"
59+
initial-status: "success"
60+
environment-url: ${{ needs.Deploy-Preview.outputs.preview_url }}
61+
environment: preview
62+
63+
PR-Comment:
64+
name: Comment on Pull Requests Based on Vercel Deployment Success
65+
if: ${{ github.event_name == 'pull_request' }}
66+
runs-on: ubuntu-latest
67+
needs: Deploy-Preview
68+
steps:
69+
- name: Finding Pull Request ID
70+
id: pr_id_finder
71+
uses: jwalton/[email protected]
72+
with:
73+
github-token: ${{ secrets.CHANGESETS_TOKEN }}
74+
- name: Add PR Comment for Vercel Deployment Failure
75+
if: ${{ steps.pr_id_finder.outputs.pr && needs.Deploy-Preview.result == 'failure' }}
76+
env:
77+
GH_TOKEN: ${{ secrets.CHANGESETS_TOKEN }}
78+
PR_ID: ${{ steps.pr_id_finder.outputs.pr }}
79+
run: |
80+
gh pr comment $PR_ID --body "Deployment Failure"
81+
- name: Add PR Comment for Vercel Deployment Success
82+
if: ${{ steps.pr_id_finder.outputs.pr && needs.Deploy-Preview.result == 'success' }}
83+
env:
84+
GH_TOKEN: ${{ secrets.CHANGESETS_TOKEN }}
85+
PR_ID: ${{ steps.pr_id_finder.outputs.pr }}
86+
run: |
87+
gh pr comment $PR_ID --body "Deployment Success; Changes available at ${{ needs.Deploy-Preview.outputs.preview_url }}"

0 commit comments

Comments
 (0)