Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: vercel ci #16

Merged
merged 1 commit into from
Jan 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions .github/workflows/vercel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Vercel Deployment

on:
workflow_dispatch:
branches:
- main
inputs:
environment:
type: choice
description: 'Environment'
options:
- preview
- production

concurrency:
# don't allow multiple deployments at once
group: 'deploy-main'
cancel-in-progress: true

env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

jobs:
setup:
name: Setup
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Install
run: yarn install --immutable
- name: Cache
uses: actions/cache@v3
with:
path: |
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}

create_deploy_request:
if: ${{ github.event.inputs.environment == 'preview' }}
needs: [setup]
name: Create Deploy Request
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
# this can probably be removed later
- name: Set short SHA
id: vars
run: |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
deploy-preview:
if: ${{ github.event.inputs.environment == 'preview' }}
name: Deploy Preview
runs-on: ubuntu-latest
needs: [setup, create_deploy_request]
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Cache
uses: actions/cache@v3
with:
path: |
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- name: Setup Environment Variables
run: vercel pull --yes --environment preview --token ${{ secrets.VERCEL_TOKEN }}
- name: Build Preview
run: vercel build --token ${{ secrets.VERCEL_TOKEN }}
- name: Deploy Preview
run: vercel deploy --prebuilt --token ${{ secrets.VERCEL_TOKEN }}

deploy-production:
if: ${{ github.event.inputs.environment == 'production' }}
name: Deploy Production
runs-on: ubuntu-latest
needs: [setup]
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Cache
uses: actions/cache@v3
with:
path: |
node_modules
key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- name: Setup Environment Variables
run: vercel pull --yes --environment production --token ${{ secrets.VERCEL_TOKEN }}
- name: Build Production
run: vercel build --prod --token ${{ secrets.VERCEL_TOKEN }}
- name: Deploy Production
run: vercel deploy --prebuilt --prod --token ${{ secrets.VERCEL_TOKEN }}