GitHub Actions
GitHub Actions is a CI/CD platform built into GitHub. It automates workflows triggered by repository events like pushes, pull requests, and releases.
Workflow Structure
.github/workflows/ci.yml
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ name: CI Pipeline โ
โ on: [push, pull_request] โ
โ โ
โ jobs: โ
โ build-and-test: โ
โ runs-on: ubuntu-latest โ
โ steps: โ
โ - uses: actions/checkout@v4 โ
โ - uses: actions/setup-node@v4 โ
โ - run: npm install โ
โ - run: npm test โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Complete Workflow Example
name: Deploy Application
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build
run: npm run build
- name: Deploy to AWS
if: success()
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 sync ./dist s3://my-bucket
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.CF_DIST_ID }} --paths "/*"
Key Features
- Marketplace โ Thousands of reusable actions (setup-node, deploy-to-aws, etc.)
- Secrets management โ Securely store API keys and tokens
- Matrix builds โ Test across multiple OS/versions simultaneously
- Reusable workflows โ Share pipeline logic across repositories
- Self-hosted runners โ Run on your own infrastructure