mirror of
https://github.com/ryankazokas/turbovault-app.git
synced 2026-04-16 22:12:53 +00:00
4.5 KiB
4.5 KiB
What to Commit to GitHub (Open Source)
Quick reference for what should and shouldn't be committed to the public GitHub repository.
✅ Safe to Commit
Source Code
- ✅ All Ruby files (
app/,lib/,config/) - ✅
GemfileandGemfile.lock - ✅ Controllers, models, views
- ✅ Migrations (don't contain secrets)
- ✅ Seeds (use fake/example data only)
Configuration
- ✅
config/database.yml(uses ENV vars) - ✅
config/routes.rb - ✅
config/environments/*.rb - ✅
.env.example(template only) - ✅
Dockerfile - ✅
docker-compose.yml(development version)
Kubernetes
- ✅
k8s/deployment.yaml(with placeholder image) - ✅
k8s/service.yaml - ✅
k8s/ingress.yaml - ✅
k8s/configmap.yaml(example values) - ✅
k8s/namespace.yaml - ✅
k8s/migrate-job.yaml - ✅
k8s/*.yaml.example(all templates) - ✅
k8s/README.md - ✅
k8s/GITEA_SETUP.md
GitHub Actions
- ✅
.github/workflows/*.yml - ✅
.github/SECRETS_SETUP.md - ✅
.github/WHAT_TO_COMMIT.md(this file!)
Documentation
- ✅
README.md - ✅
LICENSE - ✅
DEPLOYMENT.md - ✅
API_DOCUMENTATION.md - ✅ All other
.mdfiles
Assets
- ✅ JavaScript controllers
- ✅ CSS/Tailwind files
- ✅ Images, icons
Testing
- ✅
test/directory - ✅ Test fixtures
- ✅
.rubocop.yml
❌ Never Commit (Already Gitignored)
Secrets & Credentials
- ❌
.env(actual environment variables) - ❌
k8s/secrets.yaml(actual Kubernetes secrets) - ❌
config/master.key - ❌
config/credentials/*.key - ❌ Any file containing passwords, tokens, or API keys
Generated Files
- ❌
log/*.log - ❌
tmp/** - ❌
public/assets/**(compiled assets) - ❌
node_modules/ - ❌
coverage/ - ❌
.byebug_history
Database
- ❌
*.sqlite3 - ❌ Database dumps
- ❌
dump.rdb
Local Environment
- ❌
.DS_Store - ❌
.idea/(IDE files) - ❌
.vscode/ - ❌
*.swp,*.swo
Docker
- ❌
docker-compose.override.yml(local overrides)
🔍 Current .gitignore
Your .gitignore file already covers all sensitive files:
/.env
/.env.local
/config/master.key
k8s/secrets.yaml
k8s/sealed-secrets.yaml
These patterns prevent accidental commits of secrets.
🛡️ Double Check Before Pushing
Before pushing to GitHub, always verify:
# Check what will be committed
git status
# Review changes
git diff
# Ensure no secrets
grep -r "password\|token\|secret\|key" --include="*.rb" --include="*.yml" | grep -v ".example"
⚠️ If You Accidentally Commit a Secret
- Immediately revoke the secret (regenerate token, change password)
- Remove from git history:
git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch path/to/file' \ --prune-empty --tag-name-filter cat -- --all - Force push:
git push origin main --force - Rotate all credentials
- Consider the secret compromised
Better: Use BFG Repo-Cleaner or GitHub's secret scanning.
📦 What Gets Built vs What Gets Committed
Committed to GitHub (Source)
Source Code (.rb, .js, .css)
↓
Configuration Templates (.example files)
↓
Kubernetes Manifests (with placeholders)
↓
Documentation (.md files)
Built by GitHub Actions (Artifacts)
Source Code
↓
Docker Build
↓
Docker Image
↓
Pushed to Gitea Registry (PRIVATE)
↓
Deployed to Kubernetes
🔄 Workflow
- Code → Push to GitHub (public)
- GitHub Actions → Build Docker image
- GitHub Actions → Push to Gitea (private)
- Kubernetes → Pull from Gitea
- Deploy → Run your app
✨ Summary
| Item | GitHub | Gitea | k8s |
|---|---|---|---|
| Source Code | ✅ Public | 🔄 Mirror | ❌ |
| Docker Images | ❌ | ✅ Private | 🔽 Pull |
| Secrets | ❌ | ❌ | ✅ Encrypted |
| Documentation | ✅ Public | 🔄 Mirror | ❌ |
| k8s Manifests | ✅ Templates | ❌ | ✅ Applied |
Questions?
- "Can I commit database.yml?" → ✅ Yes (if it uses ENV vars, not hardcoded passwords)
- "Can I commit Dockerfile?" → ✅ Yes (it's build instructions, not secrets)
- "Can I commit my .env?" → ❌ NO! Use .env.example
- "Can I commit k8s/secrets.yaml?" → ❌ NO! Use secrets.yaml.example
- "Should I commit migrations?" → ✅ Yes
- "Should I commit seeds.rb?" → ✅ Yes (but use fake data, not real user data)
Remember: When in doubt, don't commit. You can always add files later, but removing secrets from history is painful.