- CLAUDE.md for AI agents to understand the codebase - GITEA-GUIDE.md centralizes all Gitea operations (API, Registry, Auth) - DEVELOPMENT-WORKFLOW.md explains complete dev process - ROADMAP.md, NEXT-SESSION.md for planning - QUICK-REFERENCE.md, TROUBLESHOOTING.md for daily use - 40+ detailed docs in /docs folder - Backend as submodule from Gitea Everything documented for autonomous operation. Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
6.7 KiB
6.7 KiB
Gitea Container Registry - Guía de Uso
El Container Registry de Gitea está habilitado y listo para usar.
🔐 Credenciales
Registry URL: git.fuq.tv
Usuario: admin
Token: 7401126cfb56ab2aebba17755bdc968c20768c27
🐳 Uso con Docker
Login
docker login git.fuq.tv -u admin -p 7401126cfb56ab2aebba17755bdc968c20768c27
# O de forma segura
echo "7401126cfb56ab2aebba17755bdc968c20768c27" | docker login git.fuq.tv -u admin --password-stdin
Formato de Imágenes
git.fuq.tv/<owner>/<package-name>:<tag>
Ejemplos:
git.fuq.tv/admin/aiworker-backend:v1.0.0git.fuq.tv/admin/aiworker-frontend:latestgit.fuq.tv/aiworker/my-app:v2.1.0
Build y Push
# 1. Build imagen
docker build -t git.fuq.tv/admin/aiworker-backend:v1.0.0 .
# 2. Push al registry
docker push git.fuq.tv/admin/aiworker-backend:v1.0.0
# 3. También tag como latest
docker tag git.fuq.tv/admin/aiworker-backend:v1.0.0 git.fuq.tv/admin/aiworker-backend:latest
docker push git.fuq.tv/admin/aiworker-backend:latest
Pull
docker pull git.fuq.tv/admin/aiworker-backend:v1.0.0
☸️ Uso en Kubernetes
Opción 1: Usar ImagePullSecrets (Recomendado)
El secret ya está creado en los namespaces control-plane y agents:
apiVersion: apps/v1
kind: Deployment
metadata:
name: aiworker-backend
namespace: control-plane
spec:
template:
spec:
imagePullSecrets:
- name: gitea-registry
containers:
- name: backend
image: git.fuq.tv/admin/aiworker-backend:v1.0.0
Opción 2: Service Account con ImagePullSecrets
# Patch del service account default
kubectl patch serviceaccount default -n control-plane \
-p '{"imagePullSecrets": [{"name": "gitea-registry"}]}'
# Ahora todos los pods usarán automáticamente el secret
apiVersion: apps/v1
kind: Deployment
metadata:
name: aiworker-backend
namespace: control-plane
spec:
template:
spec:
# No need to specify imagePullSecrets, uses SA default
containers:
- name: backend
image: git.fuq.tv/admin/aiworker-backend:v1.0.0
Crear Secret en Otros Namespaces
kubectl create secret docker-registry gitea-registry \
--docker-server=git.fuq.tv \
--docker-username=admin \
--docker-password=7401126cfb56ab2aebba17755bdc968c20768c27 \
-n <namespace>
📦 Ver Packages en Gitea UI
- Ve a https://git.fuq.tv
- Login (admin / admin123)
- Click en tu perfil → Packages
- Verás todas las imágenes subidas
🚀 CI/CD con Gitea Actions
Ejemplo .gitea/workflows/build.yml
name: Build and Push Docker Image
on:
push:
branches: [main]
tags:
- 'v*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Gitea Registry
uses: docker/login-action@v3
with:
registry: git.fuq.tv
username: admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: git.fuq.tv/admin/aiworker-backend
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,prefix={{branch}}-
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=git.fuq.tv/admin/aiworker-backend:buildcache
cache-to: type=registry,ref=git.fuq.tv/admin/aiworker-backend:buildcache,mode=max
🔨 Build Manual (sin Docker daemon)
Si no tienes Docker corriendo localmente, puedes usar buildah o podman:
# Con buildah
buildah bud -t git.fuq.tv/admin/myapp:v1.0.0 .
buildah push git.fuq.tv/admin/myapp:v1.0.0
# Con podman
podman build -t git.fuq.tv/admin/myapp:v1.0.0 .
podman push git.fuq.tv/admin/myapp:v1.0.0
🧪 Ejemplo Completo: Backend de AiWorker
Dockerfile
FROM oven/bun:1.3.6-alpine
WORKDIR /app
# Dependencies
COPY package.json bun.lockb ./
RUN bun install --production
# Source
COPY src ./src
COPY drizzle ./drizzle
# Run
EXPOSE 3000
CMD ["bun", "src/index.ts"]
Build y Push
# Build
docker build -t git.fuq.tv/admin/aiworker-backend:v1.0.0 .
# Push
docker push git.fuq.tv/admin/aiworker-backend:v1.0.0
# Tag latest
docker tag git.fuq.tv/admin/aiworker-backend:v1.0.0 git.fuq.tv/admin/aiworker-backend:latest
docker push git.fuq.tv/admin/aiworker-backend:latest
Deploy en K8s
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
namespace: control-plane
spec:
replicas: 2
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
imagePullSecrets:
- name: gitea-registry
containers:
- name: backend
image: git.fuq.tv/admin/aiworker-backend:v1.0.0
ports:
- containerPort: 3000
env:
- name: DB_HOST
value: mariadb.control-plane.svc.cluster.local
- name: REDIS_HOST
value: redis.control-plane.svc.cluster.local
🔄 Actualizar Deployment con Nueva Imagen
# Opción 1: Set image
kubectl set image deployment/backend backend=git.fuq.tv/admin/aiworker-backend:v1.1.0 -n control-plane
# Opción 2: Rollout restart (usa :latest)
kubectl rollout restart deployment/backend -n control-plane
# Ver progreso
kubectl rollout status deployment/backend -n control-plane
🗑️ Cleanup de Imágenes Viejas
Desde la UI de Gitea:
- Packages → Select package
- Versions → Delete old versions
O vía API:
curl -X DELETE "https://git.fuq.tv/api/v1/packages/admin/container/aiworker-backend/v1.0.0" \
-H "Authorization: token 7401126cfb56ab2aebba17755bdc968c20768c27"
📊 Ventajas del Registry en Gitea
✅ Integrado - Mismo sistema que Git ✅ Autenticación única - Mismos usuarios ✅ Sin costos extra - Ya está incluido ✅ Storage HA - Longhorn con 3 réplicas ✅ TLS automático - Cert-Manager ✅ Privado - No público como Docker Hub
🎯 Resumen
Registry: git.fuq.tv
Login: admin / 7401126cfb56ab2aebba17755bdc968c20768c27
Formato: git.fuq.tv/<owner>/<image>:<tag>
K8s Secret: gitea-registry (en control-plane y agents)
Próximos pasos:
- Crear Dockerfile para backend
- Build imagen
- Push a
git.fuq.tv/admin/aiworker-backend:v1.0.0 - Deploy en K8s