build: deploy several Quarkus services from one project list

Add deploy-services.sh so a single command runs build-and-push.sh for every path in a project file, keeps going after a failure, and reports which services failed.
This commit is contained in:
2026-09-24 22:54:45 -03:00
parent f7bcad0b38
commit 782a130bb9
3 changed files with 289 additions and 0 deletions
+25
View File
@@ -196,3 +196,28 @@ Comprueba que la primera línea del log sea `Image: test-quarkus:1.0.0-SNAPSHOT`
```
Opcional: instala `xmllint` para que el script lea el POM con XPath (`libxml2-utils` en Debian/Ubuntu).
## `deploy-services.sh`
Script independiente, en el mismo directorio que `build-and-push.sh`. No lo modifica: lo ejecuta una vez por cada servicio de un archivo de lista. Si un servicio falla, sigue con el resto y al terminar indica cuáles fallaron. El código de salida es `1` si alguno falló.
No hay lista por defecto. `--services` es obligatorio, así cada proyecto puede tener su propio archivo.
```shell
./scripts/deploy-services.sh --remote prod --services /srv/proyecto-a/services.txt
./scripts/deploy-services.sh --remote prod --services /srv/proyecto-b/services.txt --skip-build
```
Formato del archivo: una ruta por línea. Se ignoran las líneas vacías y las que empiezan por `#`. Una ruta relativa se resuelve desde el directorio del archivo de lista, no desde el directorio donde lanzas el script.
```text
# /srv/proyecto-a/services.txt
./api
./worker
```
Cada ruta es la raíz de un servicio Quarkus (`pom.xml` y `src/main/docker/Dockerfile`). El nombre y el tag de la imagen salen del `pom.xml` de ese servicio.
Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`. No se aceptan `--name`, `--tag` ni `--project-dir`.
Ctrl+C interrumpe el lote. Ayuda: `./scripts/deploy-services.sh --help`.