Why GitHub Is the Foundation of Modern Development
GitHub hosts over 100 million repositories and is the backbone of collaborative software development worldwide. Whether you're a solo developer deploying a portfolio site or an enterprise team managing microservices, understanding GitHub's account tiers and built-in CI/CD tooling is essential for shipping quality software faster.
In this guide, we break down every GitHub account type, walk through setting up GitHub Actions for automated testing and deployment, and share the workflows our team at Hatty AI uses daily to ship production code for clients across San Antonio and beyond.
๐ What You'll Learn
- GitHub Free vs. Pro vs. Team vs. Enterprise โ feature comparison
- How to set up your first CI/CD pipeline with GitHub Actions
- Branch protection, environments, and deployment best practices
- How to connect GitHub to a VPS for automated deployments
GitHub Account Types Explained
GitHub offers four main account tiers. Choosing the right one depends on your team size, security requirements, and deployment needs.
| Feature | Free | Pro ($4/mo) | Team ($4/user/mo) | Enterprise ($21/user/mo) |
|---|---|---|---|---|
| Public Repos | Unlimited | Unlimited | Unlimited | Unlimited |
| Private Repos | Unlimited | Unlimited | Unlimited | Unlimited |
| Actions Minutes/mo | 2,000 | 3,000 | 3,000 | 50,000 |
| Packages Storage | 500 MB | 2 GB | 2 GB | 50 GB |
| Branch Protection Rules | Limited | โ Full | โ Full | โ Full + CODEOWNERS |
| Required Reviewers | โ | โ | โ | โ |
| SAML SSO | โ | โ | โ | โ |
| Audit Log API | โ | โ | โ | โ |
| GitHub Advanced Security | Public repos only | Public repos only | Add-on | โ Included |
| Best For | Solo devs, open source | Freelancers, advanced solo | Small-medium teams | Regulated industries, large orgs |
๐ก Hatty AI Recommendation
Most small businesses and agencies should start with GitHub Team. You get branch protection, required reviews, and enough Actions minutes for CI/CD โ all for $4/user/month. If you're subject to compliance requirements (CMMC, HIPAA, SOC 2), jump straight to Enterprise for SAML SSO and the audit log API.
Understanding GitHub Organizations vs. Personal Accounts
A common mistake is running business repositories under a personal GitHub account. Here's why organizations matter:
- Centralized billing โ one invoice for the entire team instead of individual Pro subscriptions.
- Team permissions โ assign read, write, or admin access per repository or team. No more sharing personal access tokens.
- Transferability โ if a developer leaves, their repos stay with the org. With personal accounts, you'd need to fork or transfer each repo manually.
- Security policies โ enforce 2FA, IP allow-lists, and SSO at the org level.
๐ How to create an org: GitHub โ Settings โ Organizations โ New Organization โ Choose a plan โ Invite members.
Setting Up CI/CD with GitHub Actions โ Step by Step
GitHub Actions is GitHub's built-in CI/CD platform. It lets you automate testing, building, and deploying your code every time you push a commit or merge a pull request.
Step 1: Create Your Workflow File
In your repository root, create the directory structure .github/workflows/ and add a YAML file:
# .github/workflows/deploy.yml
name: Build & Deploy
on:
push:
branches: [main]
pull_request:
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'
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Run Tests
run: npm test
- name: Build
run: npm run build
deploy:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Deploy to Server
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /home/yourdomain/public_html
git pull origin main
npm ci --production
npm run build
pm2 restart app
Step 2: Add Repository Secrets
Your workflow references secrets like SERVER_HOST and SSH_PRIVATE_KEY. Add them securely:
- Go to your repo โ Settings โ Secrets and variables โ Actions.
- Click "New repository secret".
- Add
SERVER_HOST(your server IP or hostname). - Add
SERVER_USER(SSH username, usuallyrootor a deploy user). - Add
SSH_PRIVATE_KEY(the full private key content).
๐ Security Warning
Never commit private keys, passwords, or API tokens to your repository. Always use GitHub Secrets. If you accidentally commit a secret, rotate it immediately โ Git history preserves deleted content.
Step 3: Configure Branch Protection
Prevent broken code from reaching production:
- Go to repo โ Settings โ Branches โ Add branch protection rule.
- Branch name pattern:
main. - Enable "Require a pull request before merging".
- Enable "Require status checks to pass before merging" and select your
buildjob. - Enable "Require conversation resolution before merging".
GitHub Actions Workflow Triggers Cheat Sheet
| Trigger | When It Fires | Use Case |
|---|---|---|
push | Code pushed to branch | Deploy on merge to main |
pull_request | PR opened/updated | Run tests before merge |
schedule | Cron schedule | Nightly builds, security scans |
workflow_dispatch | Manual button click | On-demand deploys, hotfixes |
release | New release published | Publish packages, tag Docker images |
Environment Secrets & Deployment Environments
For production-grade workflows, use GitHub Environments to separate staging from production:
- Go to repo โ Settings โ Environments โ New environment.
- Create
stagingandproductionenvironments. - Add environment-specific secrets (different server IPs, database URLs).
- For production, enable "Required reviewers" so deploys need manual approval.
Reference environments in your workflow with environment: production in the job definition. The workflow will pause and wait for approval before proceeding.
Best Practices We Follow at Hatty AI
- Trunk-based development โ short-lived feature branches merged into
mainvia PRs. No long-running branches. - Semantic versioning โ tag releases with
v1.2.3format. Usereleasetrigger to automate changelog generation. - Dependabot enabled โ automatic PRs for dependency updates keep vulnerabilities patched.
- CODEOWNERS file โ automatically assign reviewers based on file paths. Example:
*.tsx @frontend-team. - Reusable workflows โ extract common CI steps into shared workflows in a
.githuborg-level repo.
Deploying to a VPS? Read This Next
If you're deploying to a VPS with WHM and cPanel (common for WordPress, PHP, and Node.js apps), we've written a companion guide that walks through the entire server-side setup:
๐ Next Reads
What Is a CI/CD Pipeline? A Beginner-Friendly Guide โ New to CI/CD? Start here for a plain-English explanation of how pipelines work and why they matter.
How to Set Up GitHub with VPS Hosting via WHM & cPanel โ SSH keys, Git deployment hooks, cPanel Git Version Control, and automated deploys from GitHub Actions to your VPS.
Need Help Setting Up Your Dev Workflow?
Hatty AI builds custom CI/CD pipelines, manages GitHub organizations, and deploys production apps for businesses across San Antonio and Texas.
Get a Free ConsultationRelated: What Is a CI/CD Pipeline? ยท Web Development Services ยท App Development ยท Managed IT Services
