Skip to content

🚀 CI/CD Pipeline Setup

Continuous Integration and Continuous Deployment (CI/CD) pipelines automate building, testing, and deploying applications. This guide explains how to set up a CI/CD pipeline for a modern frontend project.


Prerequisites

  • A Git repository hosted on GitHub, GitLab, or another platform.
  • Basic understanding of Git workflows.
  • Access to a CI/CD tool like GitHub Actions, GitLab CI/CD, or CircleCI.

GitHub Actions Example

Step 1: Create a .github Directory

Create a .github/workflows directory in your project root to store workflow files.

Step 2: Add a Workflow File

Create a new file named ci-cd.yml in the .github/workflows directory:

name: CI/CD Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

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

      - name: Install Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16

      - name: Install Dependencies
        run: pnpm install

      - name: Run Tests
        run: pnpm test

  deploy:
    needs: build
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'

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

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16

      - name: Build Application
        run: pnpm build

      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v20
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-args: "--prod"
          working-directory: "./"

GitLab CI/CD Example

Step 1: Add .gitlab-ci.yml

Create a .gitlab-ci.yml file in the root of your repository:

stages:
  - install
  - test
  - build
  - deploy

variables:
  NODE_ENV: production

cache:
  paths:
    - node_modules/

install:
  stage: install
  script:
    - pnpm install

test:
  stage: test
  script:
    - pnpm test

build:
  stage: build
  script:
    - pnpm build

deploy:
  stage: deploy
  script:
    - npx vercel deploy --prod --token=$VERCEL_TOKEN
  only:
    - main

CircleCI Example

Step 1: Add .circleci/config.yml

Create a .circleci/config.yml file in the root of your repository:

version: 2.1

jobs:
  install:
    docker:
      - image: circleci/node:16
    steps:
      - checkout
      - run: pnpm install

  test:
    docker:
      - image: circleci/node:16
    steps:
      - checkout
      - run: pnpm test

  build:
    docker:
      - image: circleci/node:16
    steps:
      - checkout
      - run: pnpm build

  deploy:
    docker:
      - image: circleci/node:16
    steps:
      - checkout
      - run: npx vercel deploy --prod --token=$VERCEL_TOKEN

workflows:
  version: 2
  ci_cd:
    jobs:
      - install
      - test:
          requires:
            - install
      - build:
          requires:
            - test
      - deploy:
          requires:
            - build

Key Points

  • Replace pnpm commands with your project’s package manager commands if different.
  • Store sensitive data like tokens in environment variables or secrets (e.g., VERCEL_TOKEN).
  • Use branch protection rules to enforce CI/CD workflows.

Now your CI/CD pipeline is ready! Every time you push or merge to the main branch, your application will be automatically built, tested, and deployed.