Master #2

Closed
Yosko597 wants to merge 7 commits from master into prototipo-yb01
3 changed files with 24 additions and 19 deletions
Showing only changes of commit adb2b4dfe4 - Show all commits
+22 -17
View File
@@ -11,20 +11,20 @@ push a rama X
runner self-hosted (host executor, en el propio VPS)
│ npm ci → vite build → scripts/deploy.sh <rama>
/opt/localesp-<slug>/ código + dist/ + node_modules (prod)
/opt/localesp/<slug>/ código + dist/ + node_modules (prod)
systemd localesp-<slug>.service node server/index.js (PORT=80xx)
nginx <slug>.localesp.es proxy_pass → localhost:80xx
certbot *.localesp.es Let's Encrypt (si el DNS ya apunta)
```
El **slug** se deriva del nombre de rama (`Feature/Foo``feature-foo`),
válido como hostname DNS. Un entorno = un directorio, un servicio, un vhost y
un puerto. La base de datos `localesp.db` de cada entorno **se conserva** entre
despliegues (no se sobreescribe).
válido como hostname DNS. Un entorno = un subdirectorio bajo `/opt/localesp/`,
un servicio, un vhost y un puerto. La base de datos `localesp.db` de cada
entorno **se conserva** entre despliegues (no se sobreescribe).
Puertos: `8080`/`8081` son entornos legacy (`localesp.service`, `localesp-master.service`);
los nuevos empiezan en `8082`. Si la rama ya tiene su `localesp-<slug>.service`, se
reutiliza su puerto (adopta el entorno existente).
Puertos: los históricos son `8080` (prototipo-yb01) y `8081` (master); los
nuevos se asignan desde `8082` hacia arriba. Si la rama ya tiene su
`localesp-<slug>.service`, se reutiliza su puerto (adopta el entorno existente).
## Precondición manual: el registro DNS
@@ -60,18 +60,19 @@ vhost, cert y `/opt/localesp-<slug>`). También manual:
ssh localesp.jumpingcrab.com 'bash /opt/localesp-master/scripts/teardown.sh mi-feature'
```
## Notas sobre los entornos existentes (migración)
## Entornos existentes (ya migrados al layout unificado)
Al primer despliegue vía CI de cada rama legacy:
Los entornos legacy ya están reubicados bajo `/opt/localesp/<rama>` con sus
systemd units renombradas al esquema `localesp-<slug>.service`, de modo que el
CI los **adopta** sin cambios (reutiliza puerto y vhost):
- **`master`** → `/opt/localesp-master`, reutiliza el puerto **8081** y el vhost
existente (`master.localesp.es` y el apex `localesp.es`, que proxyan a 8081).
Transparente, no hay corte.
- **`prototipo-yb01`** → pasa a un entorno dedicado `/opt/localesp-prototipo-yb01`
en un puerto nuevo (8082) y el vhost `prototipo.conf` se repunta a ese puerto.
El antiguo `/opt/localesp` + `localesp.service` (8080) queda huérfano; puedes
retirarlo con `systemctl disable --now localesp.service` cuando confirmes que
el nuevo funciona.
| Rama | Dir | Unit | Puerto | Hosts |
|---|---|---|---|---|
| `master` | `/opt/localesp/master` | `localesp-master.service` | 8081 | `localesp.es`, `master.localesp.es` |
| `prototipo-yb01` | `/opt/localesp/prototipo-yb01` | `localesp-prototipo-yb01.service` | 8080 | `prototipo-yb01.localesp.es` |
El antiguo `localesp.service` (sin slug) se retiró; ahora todas las units
siguen el patrón `localesp-<slug>.service`. La db de cada entorno se preservó.
## Seguridad
@@ -100,6 +101,10 @@ Nada de lo hecho aquí se pierde.
Instalado en el VPS (`localesp.jumpingcrab.com`):
- Binario: `/usr/local/bin/gitea-runner` (v2.2.0), host executor.
**Cadena de suministro verificada**: el binario coincide (sha256 `d6b3f5bb…`)
con el descomprimido del release oficial `gitea-runner-2.2.0-linux-amd64.xz`, cuya suma
`13357e0d…` está publicada en el release. Gitea no publica firma GPG del runner; la suma
es la garantía máxima disponible. No hay paquete `dnf` oficial (solo binario o Docker image).
- Config: `/etc/gitea-runner/config.yaml` — etiquetas `self-hosted:host`, `linux:host`.
- Registro: `/var/lib/gitea-runner/.runner` (instance-level, `https://git.localesp.es`).
- Servicio: `gitea-runner.service` (systemd, `User=root`, `WorkingDirectory=/var/lib/gitea-runner`).
+1 -1
View File
@@ -28,7 +28,7 @@ slugify() {
SLUG="$(slugify "$BRANCH")"
[ -n "$SLUG" ] || { err "slug vacío para la rama '$BRANCH'"; exit 2; }
DEST="/opt/localesp-$SLUG"
DEST="/opt/localesp/$SLUG"
UNIT="localesp-$SLUG"
HOST="$SLUG.$DOMAIN"
+1 -1
View File
@@ -12,7 +12,7 @@ slugify() { printf '%s' "$1" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+
SLUG="$(slugify "$BRANCH")"
UNIT="localesp-$SLUG"
HOST="$SLUG.$DOMAIN"
DEST="/opt/localesp-$SLUG"
DEST="/opt/localesp/$SLUG"
log "$HOST ($DEST, $UNIT)"