DEV Community

Cover image for Start With CI/CD using GitHub Actions - Beginner's Guide
Aleson França
Aleson França

Posted on

Start With CI/CD using GitHub Actions - Beginner's Guide

Have you heard about CI/CD but don’t know where to begin?
Maybe you saw the word “pipeline” and thought it was only for DevOps experts?

Don’t worry! With GitHub Actions, you can automate tests and deployments directly from your GitHub repository. And the best part? It’s easy to start!


What is CI/CD ?

  • CI (Continuous Integration): Every time you push code, tests run automatically.

  • CD (Continuous Delivery): When the code is approved, it is automatically deployed to production or staging.

This saves time and helps you avoid manual mistakes in your deployments


How to start using GitHub Actions?

  • Create a folder named .github/workflows in your project
  • Add a file called ci.yml with the content below:
name: CI Pipeline

on:
  push:
    branches: [main] # Runs on push to the main branch

jobs:
  test:
    runs-on: ubuntu-latest # Linux environment

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm run test

Enter fullscreen mode Exit fullscreen mode

Explaning each part

  • on.push.branches: When the workflow runs (in this case, on push to main)
  • runs-on: Which OS to use (Ubuntu, Windows, etc.)
  • steps: Each action in you pipeline:
  1. checkout: Clones you repo
  2. setup-node: installs Node.js
  3. npm install: Installs packages
  4. npm run test: Runs your tests

What happens Next?

Every time you git push to the main branch, GitHub will:

  • Run your tests

  • Show the result in the Actions tab

  • Notify you if something fails!


What about deployment?

After your tests work, you can add deployment steps


Example 1: Deploy to Laravel Forge

- name: Deploy to Laravel Forge
  run: curl -X POST ${{ secrets.FORGE_DEPLOY_HOOK }}
Enter fullscreen mode Exit fullscreen mode

In forge, enable the deploy hook and save the URL in GitHub secrets as FORGE_DEPLOY_HOOK.


Example 2: Deploy to Vercel

- name: Deploy to Vercel
  run: npx vercel --prod --token=$VERCEL_TOKEN
  env:
    VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
Enter fullscreen mode Exit fullscreen mode

Generate a personal token at Vercel and save it in GitHub secrets as VERCEL_TOKEN


Full pipeline (tests + deploy to Forge):

name: CI + Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - run: npm install
      - run: npm run test

      - name: Deploy to Forge
        run: curl -X POST ${{ secrets.FORGE_DEPLOY_HOOK }}
Enter fullscreen mode Exit fullscreen mode

Final Tip

Start Small:

  • First, configure your tests
  • Then add your deploy steps
  • Later, include security checks, build, lint, etc.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.