Deploy automation
CI/CD runs tests and deploys automatically when you push.
CI vs CD
| Phase | What it does |
|---|---|
| CI (Continuous Integration) | Automatic tests |
| CD (Continuous Deployment) | Automatic deploy |
GitHub Actions
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to VPS
run: |
ssh user@server "cd /app && git pull && docker compose up -d --build"
Secrets
env:
API_KEY: ${{ secrets.API_KEY }}
Configure at: Settings โ Secrets โ Actions
Best practices
| Practice | Why |
|---|---|
| Tests before deploy | Don't break production |
| Branch protection | Required review |
| Easy rollback | Quick recovery if fails |