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:
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user