DEV Community

Noble Okechi
Noble Okechi

Posted on

🚀 Setting Up CI/CD on Vercel with GitHub Actions (Without a Vercel Pro Plan)

Introduction

Setting up Continuous Integration and Continuous Deployment (CI/CD) is a must-have for modern development teams. While Vercel offers built-in GitHub integration, its team collaboration features are gated behind a paid Pro plan. This becomes a blocker when multiple developers need to deploy but aren’t part of the paid team.

In this guide, I’ll show you how to bypass that limitation and set up a working CI/CD pipeline using GitHub Actions and the Vercel CLI — all without needing to pay for Vercel Pro or add developers to your Vercel team.

Why Not Just Use Vercel Teams?

If a non-member tries to deploy to a Vercel team project, they'll see this:

@yourgitusername is attempting to deploy a commit to the Team Name' projects team on Vercel, but is not a member of this team.
Enter fullscreen mode Exit fullscreen mode

This error means:

  • The developer is not part of the Vercel team
  • The team requires a Pro plan ($20/user/month) to add members

The Solution: Use GitHub Actions + Vercel CLI

Instead of relying on Vercel’s GitHub integration, we use GitHub Actions to automate deployments via the Vercel CLI, authenticated with a token.

What You’ll Need:

  • A GitHub repo connected to your project
  • A Vercel account (personal or team)
  • A Vercel token
  • Your Vercel Org ID and Project ID
  • Environment variables passed from GitHub Secrets

Step-by-Step Guide

  1. Generate a Vercel Token
    Go to: https://vercel.com/account/tokens
    Click "Create Token" and copy it.

  2. Get Your Org & Project IDs
    Run this in your local terminal:

npm install -g vercel
vercel link
Enter fullscreen mode Exit fullscreen mode

Check the .vercel/project.json file:

{
  "orgId": "your-vercel-org-id",
  "projectId": "your-vercel-project-id"
}
Enter fullscreen mode Exit fullscreen mode

Alternative: Use Vercel Dashboard → Network Tab → Inspect project requests.

  1. Add Secrets to GitHub Go to your GitHub repo → Settings → Secrets → Actions → New Repository Secret.

Add:

  • VERCEL_TOKEN
  • VERCEL_ORG_ID
  • VERCEL_PROJECT_ID
  • And your required environment variables
  1. Create the GitHub Actions Workflow Create .github/workflows/deploy.yml in your repo:
name: Deploy to Vercel

on:
  push:
    branches:
      - main // your deployment branch

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Install Bun (if using bun.lock)
        run: |
          curl -fsSL https://bun.sh/install | bash
          echo "$HOME/.bun/bin" >> $GITHUB_PATH

      - name: Install Vercel CLI
        run: npm install -g vercel

      - name: Deploy to Vercel
        env:
          VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
          VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
          VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
        run: |
          vercel pull --yes --environment=production --token=$VERCEL_TOKEN
          vercel build --token=$VERCEL_TOKEN
          vercel deploy --prod --token=$VERCEL_TOKEN

Enter fullscreen mode Exit fullscreen mode

Common Errors & Fixes

❌ spawn bun ENOENT
You're using bun.lock but bun isn't installed.
Fix: Add a step to install Bun in the workflow, or delete the lock file and switch to npm or yarn. A command to install bun is added to the yml file above.

❌ Invalid environment variables
Your app expects env vars at build time, but they’re missing.
Fix: Add them as GitHub secrets and pass them explicitly in env: section.

âś… Result

  • GitHub Actions handling CI/CD
  • Vercel builds and deploys on push
  • No team member restrictions
  • No need to upgrade to Vercel Pro

Conclusion

With this setup, you're no longer limited by Vercel's team billing system. You get full control over deployment, secure CI, and cost-effective collaboration, all powered by GitHub Actions + Vercel CLI.

Top comments (1)

Collapse
 
coolpythoncodes profile image
Godson Rapture Chijioke

this article helped me so much. thanks for this