12 KiB
🎉 GitHub + Kubernetes Deployment Ready!
All files have been created for deploying TurboVault as an open-source project on GitHub with Kubernetes deployment using your Gitea registry.
✅ What's Been Created
GitHub Actions (CI/CD)
- ✅
.github/workflows/build-and-push.yml- Builds Docker images, pushes to Gitea - ✅
.github/workflows/ci.yml- Runs tests, linting, security scans - ✅
.github/SECRETS_SETUP.md- Guide for configuring GitHub Secrets - ✅
.github/WHAT_TO_COMMIT.md- What's safe for open source
Kubernetes Manifests (with placeholders)
- ✅
k8s/deployment.yaml- App deployment (2 replicas, health checks) - ✅
k8s/service.yaml- ClusterIP service - ✅
k8s/ingress.yaml- External access - ✅
k8s/configmap.yaml- Non-sensitive config - ✅
k8s/secrets.yaml.example- Template for secrets (never commit actual secrets.yaml) - ✅
k8s/namespace.yaml- Namespace isolation - ✅
k8s/migrate-job.yaml- Database migrations - ✅
k8s/gitea-registry-secret.yaml.example- Gitea authentication template - ✅
k8s/README.md- Kubernetes deployment guide - ✅
k8s/GITEA_SETUP.md- Gitea-specific setup instructions
Scripts
- ✅
scripts/setup-github.sh- Automated GitHub repository setup - ✅
scripts/deploy-k8s.sh- Automated Kubernetes deployment
Documentation (in docs/ folder)
- ✅
README.md- Main project README with deployment links - ✅
docs/DEPLOYMENT.md- Complete deployment guide - ✅
docs/DEPLOYMENT_CHECKLIST.md- Step-by-step deployment checklist - ✅
docs/GITHUB_ACTIONS_SETUP.md- GitHub Actions setup guide - ✅
docs/.github-gitea-setup.md- Explains GitHub + Gitea architecture - ✅
docs/API_DOCUMENTATION.md- RESTful API reference - ✅
docs/DEVELOPMENT_GUIDE.md- Local development guide - ✅
LICENSE- MIT License - ✅
.gitignore- Excludes secrets and sensitive files
🎯 Your Next Steps
1. Add GitHub Secrets (REQUIRED)
You need to add these 4 secrets in your GitHub repository:
How:
- Push your code to GitHub first (step 2 below)
- Go to GitHub repo → Settings → Secrets and variables → Actions
- Click New repository secret for each:
| Secret Name | Value | Where to Get It |
|---|---|---|
GITEA_REGISTRY |
gitea.example.com |
Your Gitea instance URL (no https://) |
GITEA_USERNAME |
your-username |
Your Gitea login username |
GITEA_TOKEN |
gtea_abc123... |
Gitea → Settings → Applications → Generate Token |
GITEA_REPO |
username/turbovault |
Your Gitea repository path |
Detailed instructions: .github/SECRETS_SETUP.md
2. Push to GitHub
cd /home/rkazokas/turbovault-web
# Option A: Use the automated script
./scripts/setup-github.sh
# Option B: Manual
git init
git add .
git commit -m "Initial commit: TurboVault - Video Game Collection Tracker"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/turbovault.git
git push -u origin main
3. Get Gitea Access Token
- Login to your Gitea instance
- Settings → Applications → Manage Access Tokens
- Click Generate New Token
- Name:
github-actions - Select permissions:
- ✅
package:read - ✅
package:write
- ✅
- Click Generate Token
- Copy the token (starts with
gtea_) - Save it for the GitHub Secrets step
4. Test GitHub Actions
After adding secrets:
# Create and push a tag
git tag v1.0.0
git push origin v1.0.0
# Or manually trigger in GitHub:
# Actions → Build and Push to Gitea → Run workflow
This will:
- ✅ Build Docker image
- ✅ Push to your Gitea registry
- ✅ Tag as
v1.0.0andlatest
5. Verify Image in Gitea
- Login to your Gitea instance
- Go to your repository
- Click Packages tab
- You should see
turbovaultpackage
6. Deploy to Kubernetes
# Use the automated script
./scripts/deploy-k8s.sh
# Follow the prompts:
# - Enter your Gitea registry URL
# - Script will check/create registry secret
# - Deploys all manifests
# - Runs database migration
# - Starts the application
📖 Documentation Guide
Read these in order if deploying from scratch:
- START: DEPLOYMENT_CHECKLIST.md
- .github/SECRETS_SETUP.md - Configure GitHub
- k8s/GITEA_SETUP.md - Gitea registry setup
- GITHUB_ACTIONS_SETUP.md - CI/CD workflow details
- k8s/README.md - Full Kubernetes guide
- DEPLOYMENT.md - Complete deployment reference
🏗️ Architecture
┌─────────────────────────────────────────────────────────┐
│ GitHub (Public) │
│ - Source code │
│ - Issues / PRs │
│ - Documentation │
│ - GitHub Actions CI/CD │
└────────────────┬────────────────────────────────────────┘
│
│ (On tag push: v1.0.0)
↓
┌─────────────────────────────────────────────────────────┐
│ GitHub Actions Workflow │
│ 1. Checkout code │
│ 2. Build Docker image │
│ 3. Login to Gitea (using GitHub Secrets) │
│ 4. Push image to Gitea registry │
└────────────────┬────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────┐
│ Gitea Registry (Private) │
│ - Docker images │
│ - gitea.example.com/username/turbovault:v1.0.0 │
│ - gitea.example.com/username/turbovault:latest │
└────────────────┬────────────────────────────────────────┘
│
│ (kubectl pull image)
↓
┌─────────────────────────────────────────────────────────┐
│ Kubernetes (k3s) │
│ - Pulls images from Gitea │
│ - Runs TurboVault application │
│ - PostgreSQL database │
│ - Ingress / Load Balancer │
└─────────────────────────────────────────────────────────┘
🔐 Security Notes
✅ Safe to Commit to GitHub
- All source code
- Kubernetes manifests (with placeholders)
.env.example,k8s/secrets.yaml.example- Documentation
- Dockerfile
- GitHub Actions workflows
❌ Never Commit to GitHub
.env(actual secrets) - ✅ gitignoredk8s/secrets.yaml(actual secrets) - ✅ gitignoredconfig/master.key- ✅ gitignored- Any files with passwords/tokens
Your .gitignore already protects you! ✅
🎯 Workflow Example
Typical Development Cycle
# 1. Make changes
vim app/controllers/games_controller.rb
# 2. Commit and push to GitHub
git add .
git commit -m "Add new feature"
git push origin main
# 3. CI runs automatically (tests, linting)
# Check: GitHub → Actions tab
# 4. Create release tag
git tag v1.1.0
git push origin v1.1.0
# 5. GitHub Actions builds and pushes to Gitea automatically
# Check: GitHub → Actions → Build and Push to Gitea
# 6. Deploy to Kubernetes
kubectl set image deployment/turbovault \
turbovault=gitea.example.com/username/turbovault:v1.1.0 \
-n turbovault
# 7. Verify deployment
kubectl get pods -n turbovault
kubectl logs -f deployment/turbovault -n turbovault
💡 Benefits of This Setup
✅ Open Source - Code on GitHub for collaboration
✅ Private Images - Docker images stay on your Gitea
✅ Automated Builds - Push tag → image builds automatically
✅ CI/CD Pipeline - Tests run on every PR
✅ Version Control - Each tag creates immutable image
✅ Easy Rollback - All versions kept in Gitea
✅ Collaboration - Contributors don't need Gitea access
✅ Security - Secrets managed properly (GitHub Secrets + k8s Secrets)
❓ FAQ
Q: Do I push Docker images to GitHub?
A: No! GitHub Actions builds them and pushes to Gitea automatically.
Q: Can others see my Gitea credentials?
A: No! They're stored as GitHub Secrets (encrypted).
Q: What if someone forks my repo?
A: They can fork the code, but they'll need their own Gitea/registry for images.
Q: Do contributors need Gitea access?
A: No! Only you need it (for the GitHub Secrets). Contributors just push code.
Q: How do I update the deployed app?
A: Push a new tag → GitHub Actions builds → deploy with kubectl or script.
Q: Can I still build locally?
A: Yes! docker build -t ... still works. GitHub Actions is just automation.
Q: Is the k8s manifest safe to share publicly?
A: Yes! It uses placeholders and references secrets (which are gitignored).
🚨 Before You Deploy
Checklist:
.envfile exists locally (don't commit!)- GitHub Secrets added (all 4)
- Gitea access token created
k8s/secrets.yamlcreated (don't commit!)- Database ready (PostgreSQL)
- Kubernetes cluster accessible
- Read DEPLOYMENT_CHECKLIST.md
📚 All Your Documentation
| File | Purpose |
|---|---|
| DEPLOYMENT_CHECKLIST.md | START HERE - Complete deployment steps |
| GITHUB_ACTIONS_SETUP.md | GitHub CI/CD setup |
| .github/SECRETS_SETUP.md | Configure GitHub Secrets |
| .github/WHAT_TO_COMMIT.md | What's safe for open source |
| k8s/GITEA_SETUP.md | Gitea registry setup |
| k8s/README.md | Kubernetes deployment |
| DEPLOYMENT.md | Complete deployment guide |
| .github-gitea-setup.md | Architecture explanation |
| README.md | Project overview |
| API_DOCUMENTATION.md | API reference |
| IGDB_INTEGRATION.md | IGDB features |
🎉 You're Ready!
Everything is configured and ready to go. Follow these steps:
- ✅ Push code to GitHub
- ✅ Add GitHub Secrets
- ✅ Push a tag to trigger build
- ✅ Deploy to Kubernetes
- ✅ Celebrate! 🚀
Need Help? Read DEPLOYMENT_CHECKLIST.md for step-by-step instructions!
Pro Tip: Start with the DEPLOYMENT_CHECKLIST.md - it walks you through everything in order.