# Can you deploy based on tags/releases on Vercel?

**Author:** Lee Robinson

---

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.

## Versioned deployment

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.

1. Create a vercel.json file at the root of your project folder to add [Git configuration](https://vercel.com/docs/concepts/projects/project-configuration/git-configuration#). Set `git.deploymentEnabled` to false which will prevent auto-deployments from commits..
   
2. Then, let’s add the required values from Vercel as [secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets) in GitHub
   
   1. On your local computer or development environment, install the [Vercel CLI](https://vercel.com/cli) and run `vercel login`
      
   2. Inside your project folder, run `vercel link` to create a new Vercel project or link to an existing one
      
   3. Navigate to the generated `.vercel` folder, and open project.json to find the `projectID` and `orgId`
      
   4. In GitHub, set `VERCEL_PROJECT_ID` to your `projectID` and `VERCEL_ORG_ID` to your `orgID`
      
   5. Retrieve your [Vercel Access Token](https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token) and set it as the value of `VERCEL_TOKEN`
      
3. Define a GitHub Action to kick off a production deployment each time a new tag is pushed.
   

`name: Production Tag Deployment env: 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 }}`

## Deploying Hotfixes

GitHub Actions and Vercel CLI can also be used to create production deployments for patches or hotfixes.

1. Create a `hotfix` branch.
   
2. Create a separate GitHub Action that only runs on pushes to the `hotfix` branch. This is similar to the GitHub Action defined above, but it will trigger a deployment from the `hotfix` branch for each new push to the branch.
   

`name: Hotfix Deployment env: VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} on: push: branches: - hotfix 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 }}`

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.

## Preview Deployments

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](https://vercel.com/support/articles/how-can-i-use-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.

---

[View full KB sitemap](/kb/sitemap.md)
