Home/CI/CD & DevOps/GitHub Actions
DevOps & Infra
github-actions

GitHub Actions

YAMLCI/CDSaaSFree tier

The dominant CI/CD platform, natively integrated with GitHub. Define workflows in YAML to build, test, and deploy on every push or PR. Free for public repos, generous free minutes for private ones.

License

Proprietary

Language

YAML

50
Trust
Limited

Why GitHub Actions?

Your code is already on GitHub

You want CI/CD with zero infrastructure to manage

You need a massive marketplace of pre-built actions

Signal Breakdown

What drives the Trust Score

Active repos
100M+ repos
Commits (90d)
1.2k commits
GitHub stars
N/A (SaaS)
Stack Overflow
31k q's
Community
Very High
Weighted Trust Score50 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

Your code is on GitLab or Bitbucket (use native CI instead)

You need complex self-hosted runners at scale

You need fine-grained access control beyond GitHub's model

Pricing

Free tier & paid plans

Free tier

2,000 min/mo (public: unlimited)

Paid

$0.008/min beyond free tier

Storage: 500MB free, $0.25/GB/mo

Often Used Together

Complementary tools that pair well with GitHub Actions

docker

Docker

DevOps & Infra

93Excellent
View
kubernetes

Kubernetes

DevOps & Infra

99Excellent
View
vercel

Vercel

Hosting & Deploy

89Strong
View
aws

AWS

Cloud Platforms

94Excellent
View
terraform

Terraform

DevOps & Infra

84Strong
View

Get Started

Repository and installation options

View on GitHub

github.com/features/actions

yaml# Add .github/workflows/ci.yml to your repo

Quick Start

Copy and adapt to get going fast

# .github/workflows/ci.yml
name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      - run: npm ci
      - run: npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - run: vercel --prod --token ${{ secrets.VERCEL_TOKEN }}

Code Examples

Common usage patterns

Docker build and push

Build a Docker image and push to GitHub Container Registry

name: Build & Push Docker Image

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - uses: docker/build-push-action@v5
        with:
          push: true
          tags: ghcr.io/${{ github.repository }}:latest

Matrix testing

Run tests across multiple Node.js versions in parallel

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci && npm test

Reusable workflow

Call a shared workflow from another repository

# .github/workflows/deploy.yml
jobs:
  deploy:
    uses: your-org/.github/.github/workflows/deploy.yml@main
    with:
      environment: production
    secrets:
      VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

Community Notes

Real experiences from developers who've used this tool