If your team uses a trunk-based development workflow and you want to deploy using tags and releases, this guide will walk you through the steps to automate deployments via tags instead of branches.
Rather than using Vercel's auto-deployment feature to create a production deployment for each commit to the main branch, this strategy uses GitHub Actions and Vercel CLI to deploy using tags and releases.
- Create a vercel.json file at the root of your project folder to add Git configuration. Set git.deploymentEnabledto false which will prevent auto-deployments from commits..
- Then, let’s add the required values from Vercel as secrets in GitHub
- On your local computer or development environment, install the Vercel CLI and run vercel login
- Inside your project folder, run vercel linkto create a new Vercel project or link to an existing one
- Navigate to the generated .vercelfolder, and open project.json to find theprojectIDandorgId
- In GitHub, set VERCEL_PROJECT_IDto yourprojectIDandVERCEL_ORG_IDto yourorgID
- Retrieve your Vercel Access Token and set it as the value of VERCEL_TOKEN
- Define a GitHub Action to kick off a production deployment each time a new tag is pushed.
name: Production Tag Deploymentenv:  VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}  VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}on:  push:    # Pattern matched against refs/tags    tags:              - '*' # Push events to every tag not containing /jobs:  Deploy-Production:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v3      - name: Install Vercel CLI        run: npm install --global vercel@latest      - name: Pull Vercel Environment Information        run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}      - name: Build Project Artifacts        run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}      - name: Deploy Project Artifacts to Vercel        run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}GitHub Actions and Vercel CLI can also be used to create production deployments for patches or hotfixes.
- Create a hotfixbranch.
- Create a separate GitHub Action that only runs on pushes to the hotfixbranch. This is similar to the GitHub Action defined above, but it will trigger a deployment from thehotfixbranch for each new push to the branch.
name: Hotfix Deploymentenv:  VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}  VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}on:  push:    branches:      - hotfixjobs:  Deploy-Production:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v3      - name: Install Vercel CLI        run: npm install --global vercel@latest      - name: Pull Vercel Environment Information        run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}      - name: Build Project Artifacts        run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}      - name: Deploy Project Artifacts to Vercel        run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}Any time you need to push a hotfix, create a PR to your hotfix branch and Vercel will deploy directly to production using this branch.
When deploying based on tags and releases, it’s still possible to take advantage of Preview Deployments with Vercel. By integrating GitHub Actions with Vercel, you can have Vercel generate Preview Deployments.
For example, if your team is deploying on each release, you can create an additional GitHub Action that will create a new branch and generate a preview for each new tag.