Pasa el nombre de la imagen a minúsculas para que Docker acepte la carpeta del servicio.
Un directorio como SALE-HITES-BFF deja de fallar el build por el formato del repositorio.
This commit is contained in:
@@ -20,7 +20,7 @@ To push every service in one project, pass that project's list file to
|
|||||||
`./scripts/deploy-services.sh`. It runs `build-and-push.sh` once per path and
|
`./scripts/deploy-services.sh`. It runs `build-and-push.sh` once per path and
|
||||||
reports any failures at the end. See `scripts/README.md` for the list format.
|
reports any failures at the end. See `scripts/README.md` for the list format.
|
||||||
|
|
||||||
The script uses the last directory of the service location as the image name
|
The script uses the last directory of the service location, lowercased, as the image name
|
||||||
and reads `version` from `pom.xml` for the local build tag (`1.0.0-SNAPSHOT`
|
and reads `version` from `pom.xml` for the local build tag (`1.0.0-SNAPSHOT`
|
||||||
if there is no pom). It builds for `linux/amd64` and verifies the deploy on
|
if there is no pom). It builds for `linux/amd64` and verifies the deploy on
|
||||||
the remote.
|
the remote.
|
||||||
|
|||||||
+6
-6
@@ -8,7 +8,7 @@ Construye la imagen nativa de Quarkus y la envía al daemon Docker de un host re
|
|||||||
|
|
||||||
### Qué hace el flujo
|
### Qué hace el flujo
|
||||||
|
|
||||||
1. Toma el nombre de la imagen de la última carpeta de la ubicación del servicio y lee `version` de [`pom.xml`](../pom.xml) para el tag, salvo que uses `--name` o `--tag`. Si no hay `pom.xml`, el tag es `1.0.0-SNAPSHOT`.
|
1. Toma el nombre de la imagen de la última carpeta de la ubicación del servicio, en minúsculas, y lee `version` de [`pom.xml`](../pom.xml) para el tag, salvo que uses `--name` o `--tag`. Si no hay `pom.xml`, el tag es `1.0.0-SNAPSHOT`. `--name` también se pasa a minúsculas.
|
||||||
2. Ejecuta `docker build` para la plataforma fija `linux/amd64` (útil si construyes desde un Mac arm64). Con `--type java` (el valor por defecto) usa [`src/main/docker/Dockerfile`](../src/main/docker/Dockerfile). Con `--type web` usa `Dockerfile` en la raíz del servicio.
|
2. Ejecuta `docker build` para la plataforma fija `linux/amd64` (útil si construyes desde un Mac arm64). Con `--type java` (el valor por defecto) usa [`src/main/docker/Dockerfile`](../src/main/docker/Dockerfile). Con `--type web` usa `Dockerfile` en la raíz del servicio.
|
||||||
3. Ejecuta `docker pussh` hacia el destino SSH indicado.
|
3. Ejecuta `docker pussh` hacia el destino SSH indicado.
|
||||||
4. Comprueba por SSH que la imagen existe en el remoto (salvo `--no-verify`).
|
4. Comprueba por SSH que la imagen existe en el remoto (salvo `--no-verify`).
|
||||||
@@ -60,18 +60,18 @@ Ayuda integrada (en inglés):
|
|||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| `--remote TARGET` | Destino SSH: `usuario@host[:puerto]` o un alias definido en `~/.ssh/config` (sin `@`). |
|
| `--remote TARGET` | Destino SSH: `usuario@host[:puerto]` o un alias definido en `~/.ssh/config` (sin `@`). |
|
||||||
|
|
||||||
**Identidad de la imagen** (el nombre es la última carpeta del servicio; el tag sale de `pom.xml` si existe)
|
**Identidad de la imagen** (el nombre es la última carpeta del servicio, en minúsculas; el tag sale de `pom.xml` si existe)
|
||||||
|
|
||||||
| Opción | Descripción |
|
| Opción | Descripción |
|
||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| `--name NAME` | Nombre del repositorio de la imagen. |
|
| `--name NAME` | Nombre del repositorio de la imagen. Se guarda en minúsculas. |
|
||||||
| `--tag TAG` | Tag de la imagen. |
|
| `--tag TAG` | Tag de la imagen. |
|
||||||
|
|
||||||
**Directorio de trabajo**
|
**Directorio de trabajo**
|
||||||
|
|
||||||
| Opción | Descripción |
|
| Opción | Descripción |
|
||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| `--project-dir PATH` | Raíz del servicio. El nombre de la imagen es su última carpeta. |
|
| `--project-dir PATH` | Raíz del servicio. El nombre de la imagen es su última carpeta, en minúsculas. |
|
||||||
| `PROJECT_DIR` | Misma función vía entorno. |
|
| `PROJECT_DIR` | Misma función vía entorno. |
|
||||||
|
|
||||||
**Build**
|
**Build**
|
||||||
@@ -169,7 +169,7 @@ ssh deploy@prod.example.com \
|
|||||||
"docker run -d --name <carpeta> --restart unless-stopped -p 8080:8080 <carpeta>:<version>"
|
"docker run -d --name <carpeta> --restart unless-stopped -p 8080:8080 <carpeta>:<version>"
|
||||||
```
|
```
|
||||||
|
|
||||||
Sustituye `<carpeta>` por la última carpeta de la ubicación del servicio (o el valor de `--name`) y `<version>` por el tag del build (el de `pom.xml`, `1.0.0-SNAPSHOT` si no hay POM, o el de `--tag`).
|
Sustituye `<carpeta>` por la última carpeta de la ubicación del servicio en minúsculas (o el valor de `--name`, también en minúsculas) y `<version>` por el tag del build (el de `pom.xml`, `1.0.0-SNAPSHOT` si no hay POM, o el de `--tag`).
|
||||||
|
|
||||||
### Solución de problemas
|
### Solución de problemas
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ Formato del archivo: una ruta por línea y, si hace falta, un segundo campo `jav
|
|||||||
./portal web
|
./portal web
|
||||||
```
|
```
|
||||||
|
|
||||||
`java` usa `src/main/docker/Dockerfile`. `web` usa `Dockerfile` en la raíz del servicio. El nombre de la imagen es la última carpeta de esa ruta. El tag sale de `pom.xml` si existe; si no, es `1.0.0-SNAPSHOT`.
|
`java` usa `src/main/docker/Dockerfile`. `web` usa `Dockerfile` en la raíz del servicio. El nombre de la imagen es la última carpeta de esa ruta, en minúsculas. El tag sale de `pom.xml` si existe; si no, es `1.0.0-SNAPSHOT`.
|
||||||
|
|
||||||
Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`, más el `--type` de esa línea. No se aceptan `--name`, `--tag`, `--project-dir` ni `--type`.
|
Se reenvían a cada servicio: `--ssh-key`, `--ssh-config`, `--skip-build`, `--no-verify` y `--cleanup`, más el `--type` de esa línea. No se aceptan `--name`, `--tag`, `--project-dir` ni `--type`.
|
||||||
|
|
||||||
|
|||||||
@@ -67,14 +67,14 @@ Required:
|
|||||||
|
|
||||||
Image identity:
|
Image identity:
|
||||||
--name NAME Image repository name (default: last directory of
|
--name NAME Image repository name (default: last directory of
|
||||||
the service location)
|
the service location, lowercased)
|
||||||
--tag TAG Local build tag (pom.xml version by default, or
|
--tag TAG Local build tag (pom.xml version by default, or
|
||||||
1.0.0-SNAPSHOT if there is no pom.xml). On the
|
1.0.0-SNAPSHOT if there is no pom.xml). On the
|
||||||
remote only :latest and vYYYY.MM.DD-HH.MM (UTC).
|
remote only :latest and vYYYY.MM.DD-HH.MM (UTC).
|
||||||
|
|
||||||
Working directory (defaults to the parent of the script's directory):
|
Working directory (defaults to the parent of the script's directory):
|
||||||
--project-dir PATH Service root. The image name is its last directory
|
--project-dir PATH Service root. The image name is its last directory,
|
||||||
(override with env PROJECT_DIR)
|
lowercased (override with env PROJECT_DIR)
|
||||||
|
|
||||||
Build options:
|
Build options:
|
||||||
--type java|web Dockerfile location. java (default):
|
--type java|web Dockerfile location. java (default):
|
||||||
@@ -142,6 +142,11 @@ resolve_dockerfile() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Docker repository names must be lowercase. ${var,,} needs bash 4+.
|
||||||
|
lowercase() {
|
||||||
|
printf '%s' "$1" | tr '[:upper:]' '[:lower:]'
|
||||||
|
}
|
||||||
|
|
||||||
# Last directory of the service location (cwd must already be that directory).
|
# Last directory of the service location (cwd must already be that directory).
|
||||||
image_name_from_location() {
|
image_name_from_location() {
|
||||||
local dir
|
local dir
|
||||||
@@ -149,7 +154,7 @@ image_name_from_location() {
|
|||||||
dir="${dir%/}"
|
dir="${dir%/}"
|
||||||
[[ -n "$dir" && "$dir" != "/" ]] \
|
[[ -n "$dir" && "$dir" != "/" ]] \
|
||||||
|| die "Cannot derive image name from project directory."
|
|| die "Cannot derive image name from project directory."
|
||||||
printf '%s' "${dir##*/}"
|
lowercase "${dir##*/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
require() {
|
require() {
|
||||||
@@ -408,7 +413,7 @@ push_via_registry_tunnel() {
|
|||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--remote) REMOTE="$2"; shift 2 ;;
|
--remote) REMOTE="$2"; shift 2 ;;
|
||||||
--name) IMAGE_NAME="$2"; shift 2 ;;
|
--name) IMAGE_NAME="$(lowercase "$2")"; shift 2 ;;
|
||||||
--tag) IMAGE_TAG="$2"; shift 2 ;;
|
--tag) IMAGE_TAG="$2"; shift 2 ;;
|
||||||
--ssh-key) SSH_KEY="$2"; shift 2 ;;
|
--ssh-key) SSH_KEY="$2"; shift 2 ;;
|
||||||
--ssh-config) SSH_CONFIG="$2"; shift 2 ;;
|
--ssh-config) SSH_CONFIG="$2"; shift 2 ;;
|
||||||
|
|||||||
Reference in New Issue
Block a user