feat: Gitea Actions CI/CD pipeline with container registry builds
Some checks failed
Build and Push Docker Image / Build & push to Gitea registry (push) Has been cancelled

- .gitea/workflows/docker.yml: builds and pushes image to
  devops.cloudhost.es/malin/paste.es on every push to main,
  tags as :latest and :<short-sha>, uses GHA layer cache
- docker-compose.yml: updated to pull pre-built image from Gitea
  container registry instead of building locally
- docker-compose.build.yml: new override file for local dev builds
  (docker compose -f docker-compose.yml -f docker-compose.build.yml up --build)
- docker-compose.runner.yml: act_runner service — mount docker socket,
  auto-registers with RUNNER_REGISTRATION_TOKEN from .env
- .env.example: added RUNNER_REGISTRATION_TOKEN section
- README.md: document CI/CD setup, runner registration, and updated
  quick-start to use registry pull workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 10:36:04 +01:00
parent 4d21c64998
commit 4968cb04c3
6 changed files with 148 additions and 22 deletions

View File

@@ -34,37 +34,43 @@ Servicio de compartición de secretos efímeros y cifrados para el público hisp
## Inicio rápido
### Docker Compose (recomendado)
### Docker Compose — imagen desde el registro (recomendado en producción)
Cada push a `main` construye y publica automáticamente la imagen en el registro de contenedores de Gitea. En el servidor de producción solo necesitas hacer pull:
```bash
git clone https://devops.cloudhost.es/Malin/paste.es.git
cd paste.es
# Autentícate en el registro de Gitea
docker login devops.cloudhost.es
# Copia y edita el fichero de entorno
cp .env.example .env
# Edita .env con tus valores (ver sección Configuración)
# Construye y arranca
docker compose up -d --build
# Descarga la imagen y arranca
docker compose pull
docker compose up -d
```
Para actualizar a la última versión:
```bash
docker compose pull && docker compose up -d
```
### Docker Compose — compilación local (desarrollo)
```bash
git clone https://devops.cloudhost.es/Malin/paste.es.git
cd paste.es
cp .env.example .env
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
```
El servicio quedará disponible en `http://localhost:3000`.
### Docker (imagen directa)
```bash
docker run -d \
--name paste-es \
-p 3000:3000 \
-v paste-data:/app/database \
-v paste-uploads:/app/uploads \
-e DATABASE_URL="file:/app/database/paste.db" \
-e BETTER_AUTH_SECRET="$(openssl rand -base64 32)" \
-e BETTER_AUTH_URL="https://paste.es" \
-e HEMMELIG_INSTANCE_NAME="paste.es" \
ghcr.io/cloudhost-es/paste.es:latest
```
---
## Configuración
@@ -106,6 +112,38 @@ npm run dev # Terminal 2 — cliente Vite con HMR
---
## CI/CD — Gitea Actions + registro de contenedores
El repositorio incluye un pipeline en `.gitea/workflows/docker.yml` que:
1. Se activa en cada push a `main` (o manualmente desde la UI de Gitea)
2. Construye la imagen Docker con caché de capas
3. La publica en el registro de contenedores de Gitea como `devops.cloudhost.es/malin/paste.es:latest` y `devops.cloudhost.es/malin/paste.es:<sha>`
### Requisitos previos
**1. Habilitar Gitea Actions** en el repositorio:
> Settings → Actions → Enable repository actions
**2. Arrancar un act_runner** (ejecutor del pipeline). Obtén el token en:
> Settings → Actions → Runners → Create Runner Token
Añádelo a `.env` y arranca el runner:
```bash
# En .env:
RUNNER_REGISTRATION_TOKEN=<token>
docker compose -f docker-compose.runner.yml up -d
```
El runner se registra automáticamente y queda disponible para ejecutar workflows.
**3. El siguiente push a `main`** disparará la build automáticamente. Puedes seguirla en:
> Gitea → Actions → Workflows
---
## Despliegue en producción
### Detrás de un proxy inverso (Nginx / Caddy)