---
title: "Gitea Templates and Guides Index"
description: "Quick-reference index for all Gitea CI/CD documentation, workflow templates, deployment strategies, and Harbor registry setup. Includes directory structure, common tasks, and learning path."
type: context
domain: server-configs
tags: [gitea, ci-cd, workflow-templates, index, gitea-actions]
---

# Gitea Configuration & Templates Index

Quick reference for all Gitea-related documentation and templates.

## 📁 Directory Structure

```
/server-configs/gitea/
├── README.md                        # Gitea LXC setup and configuration
├── INDEX.md                         # This file - quick reference
├── deployment-strategies.md         # When/how to deploy (manual vs auto)
├── harbor-registry-setup.md         # Self-hosted Docker registry guide
├── apply_branch_protection.py       # Script for branch protection rules
└── workflow-templates/              # Reusable CI/CD templates
    ├── README.md                    # Template usage guide
    ├── docker-build-template.yml    # Complete Docker CI/CD workflow
    ├── deploy-script-template.sh    # Safe manual deployment script
    └── snippets/                    # Workflow code snippets
        └── auto-deploy-with-rollback.yml
```

## 🚀 Quick Links

### Getting Started
- **New to Gitea Actions?** → Start with `workflow-templates/README.md`
- **Need a workflow?** → Copy `docker-build-template.yml`
- **Want to deploy?** → Read `deployment-strategies.md`

### Templates

#### Docker Build Workflow
**File:** `workflow-templates/docker-build-template.yml`

**Features:**
- ✅ CalVer versioning (YYYY.MM.BUILD) via shared `cal/gitea-actions/calver` action
- ✅ Docker build + push to Docker Hub
- ✅ Discord notifications via shared `cal/gitea-actions/discord-notify` action
- ✅ Git tagging via shared `cal/gitea-actions/gitea-tag` action
- ✅ Build caching (registry-based)
- ✅ Multi-tag strategy (latest, version, version+sha, dev)

**Use for:**
- Discord bots
- Web applications
- API services
- Any Dockerized project

#### Manual Deploy Script
**File:** `workflow-templates/deploy-script-template.sh`

**Features:**
- ✅ Pre-deployment checks
- ✅ Confirmation prompts
- ✅ Status verification
- ✅ Log viewing
- ✅ Rollback instructions

**Use when:**
- You want manual control
- Deploying to production
- Testing new deployments

#### Auto-Deploy with Rollback
**File:** `workflow-templates/snippets/auto-deploy-with-rollback.yml`

**Features:**
- ✅ SSH deployment
- ✅ Health checks
- ✅ Automatic rollback
- ✅ Deployment notifications

**Use when:**
- You have good test coverage
- Health checks are implemented
- Downtime is acceptable

### Guides

#### Deployment Strategies
**File:** `deployment-strategies.md`

**Covers:**
- Decision framework (when to auto-deploy)
- 5 levels of deployment automation
- Recommendations by project type
- Safety best practices
- Rollback procedures

**Read this before:** Adding auto-deploy to any project

#### Harbor Registry Setup
**File:** `harbor-registry-setup.md`

**Covers:**
- Self-hosted Docker registry
- Complete Harbor installation
- Integration with Gitea Actions
- Vulnerability scanning
- Backup strategies

**Use when:**
- You want private registries
- You hit Docker Hub rate limits
- You want full control
- Learning opportunity

## 📝 Reference Implementations

### Projects Using Shared Actions
All use `cal/gitea-actions` composite actions (CalVer, git tagging, Discord notify):

| Project | Workflow | Type |
|---------|----------|------|
| major-domo-database | `docker-build.yml` | Docker build + push |
| paper-dynasty-discord | `docker-build.yml` | Docker build + push |
| paper-dynasty-database | `build.yml` | Docker build + push |
| major-domo-v2 | `docker-build.yml` | Docker build + push |
| vagabond-rpg-foundryvtt | `deploy.yml` | Build + rsync deploy |

### Lessons Learned
- Runner `GITEA_INSTANCE_URL` must use internal IP, not public domain (host mismatch breaks auth)
- `DEFAULT_ACTIONS_URL=self` + short-form refs for local actions, full URLs for GitHub actions
- `REQUIRE_SIGNIN_VIEW=false` is safe — only public repos are exposed, private repos stay locked
- Registry-based Docker build cache (`type=registry`) requires Docker Hub login on every build
- Manual deploy preferred for production Discord bots (health checks needed before auto-deploy)

## 🔧 Common Tasks

### Create New Project Workflow
```bash
cd /path/to/your/repo
mkdir -p .gitea/workflows

# Copy from an existing project (e.g., major-domo-database)
cp /mnt/NV2/Development/major-domo/database/.gitea/workflows/docker-build.yml \
   .gitea/workflows/docker-build.yml

# Customize:
# - Replace Docker Hub image name (manticorum67/your-project)
# - Replace project title in Discord notifications
# - Add repo secrets: DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, DISCORD_WEBHOOK
#
# Action reference rules (DEFAULT_ACTIONS_URL=self):
# - Local actions: short form (cal/gitea-actions/calver@main)
# - GitHub actions: full URL (https://github.com/actions/checkout@v4)
```

### Add Auto-Deploy (When Ready)
```bash
# Copy auto-deploy snippet
cat workflow-templates/snippets/auto-deploy-with-rollback.yml

# Add to your workflow after build step
# Configure secrets: DEPLOY_SSH_KEY, PRODUCTION_HOST, DEPLOY_USER
```

### Manual Deploy
```bash
# Copy deploy script to your repo
cp workflow-templates/deploy-script-template.sh /path/to/repo/deploy.sh
chmod +x /path/to/repo/deploy.sh

# Customize server details in script
# Then use: ./deploy.sh v1.2.3
```

## 🎓 Learning Path

1. **Start:** Read `workflow-templates/README.md`
2. **Setup:** Deploy Gitea Actions runner (see `README.md`)
3. **First workflow:** Copy `docker-build-template.yml`
4. **Deploy:** Use `deploy-script-template.sh`
5. **Advanced:** Read `deployment-strategies.md`
6. **Optional:** Set up Harbor with `harbor-registry-setup.md`

## 🆘 Troubleshooting

### CalVer version looks wrong
- CalVer is auto-generated from git tags (YYYY.MM.BUILD)
- BUILD number counts tags in the current month
- Ensure `fetch-depth: 0` in checkout step (needs full tag history)

### Docker Hub push failing
- Verify secrets set in Gitea
- Check Docker Hub token permissions
- Ensure repo name matches exactly

### Discord notifications not appearing
- Verify webhook URL still valid
- Check timestamp format (ISO 8601)
- Test webhook manually with curl

### More help
- Check specific template comments
- Read troubleshooting sections in guides
- Review Paper Dynasty as reference implementation

## 📚 External Resources

- [Gitea Actions Docs](https://docs.gitea.io/en-us/usage/actions/overview/)
- [Docker Build Push Action](https://github.com/docker/build-push-action)
- [Semantic Versioning](https://semver.org/)
- [Discord Webhooks](https://discord.com/developers/docs/resources/webhook)
- [Harbor Docs](https://goharbor.io/docs/)

## 🔄 Maintenance

**Update this index when:**
- Adding new templates
- Creating new guides
- Changing directory structure
- Adding reference implementations

**Last updated:** 2026-02-18

---

**Quick search tips:**
- Need deployment guide? → `deployment-strategies.md`
- Need workflow template? → `workflow-templates/`
- Need self-hosted registry? → `harbor-registry-setup.md`
- Need deploy script? → `deploy-script-template.sh`
