fix(kit): update.sh troca o WAHA amd64 de quem ja roda em ARM64

O install.sh antigo gravava devlikeapro/waha (e, desde 13/08,
latest-2026.7.2) no .env; os dois indices so tem linux/amd64, e o
enter_project so preenche WAHA_IMAGE quando ela esta vazia. Em ARM64,
gravar_imagens passa a trocar SO esses valores conhecidos (e o vazio) pela
variante oficial NOWEB ARM64, e exporta o valor, porque o compose prefere o
ambiente ao .env. Escolha do operador (WAHA Plus, outra tag) fica intacta.

Mora em gravar_imagens, e nao numa linha do update.sh, porque e a funcao que
o update.sh ANTIGO chama depois de reler o kit: a troca chega ja na
atualizacao que a traz.

Casos 3c/3d em guarda-arm-nao-mata-a-recuperacao (sabotado: 3 vermelhos).

Refs #1938 #1266

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
melgarafael
2026-09-29 22:33:28 -03:00
co-authored by Claude Opus 5.5
parent b2f40856ac
commit 5ce4e6e6ac
3 changed files with 57 additions and 0 deletions
+26
View File
@@ -43,6 +43,19 @@ imagem_waha_padrao_para_host() {
esac
}
# Quem já roda em ARM (#1266) tem no .env o WAHA que o install.sh antigo
# gravava — `devlikeapro/waha` e, desde 13/08/2026, `latest-2026.7.2` —, e os
# dois índices só têm linux/amd64. Troca SÓ esses valores conhecidos (e o vazio,
# em que o default do compose seria o amd64); qualquer outra escolha do
# operador, WAHA Plus inclusive, fica intacta. Pura no argumento, como a de cima.
waha_amd64_conhecido_em_arm() { # waha_amd64_conhecido_em_arm <arquitetura> <WAHA_IMAGE do .env> → 0 = trocar
case "${1:-}" in aarch64|arm64) ;; *) return 1 ;; esac
case "${2:-}" in
""|devlikeapro/waha|devlikeapro/waha:latest|devlikeapro/waha:latest-2026.7.2) return 0 ;;
esac
return 1
}
# ── JÁ EXISTE UMA INSTALAÇÃO REAL AQUI? (#1266, corrigido pelo #1778) ───────
#
# A guarda do #1042 vivia no TOPO dos dois scripts, e por isso matava antes de
@@ -1498,6 +1511,19 @@ gravar_imagens() {
# não no `stable` móvel do default do compose.
set_env_var "$envfile" VOICE_AGENT_IMAGE "${IMG_VOICE_AGENT}:${versao}"
set_env_var "$envfile" VOICE_AGENT_PULL_POLICY "$politica"
# O WAHA de quem já roda em ARM mora AQUI, e não numa linha do update.sh: é
# esta função que o update.sh ANTIGO chama depois de reler o kit, então é
# assim que a troca chega já na atualização que a traz. O export vale porque
# o compose prefere a variável do ambiente (que o enter_project exportou com o
# valor velho) à do .env.
local waha_atual
waha_atual="$(sed -n 's/^WAHA_IMAGE=//p' "$envfile" 2>/dev/null | tail -1 | tr -d "\"'")"
if waha_amd64_conhecido_em_arm "$(uname -m 2>/dev/null || true)" "$waha_atual"; then
WAHA_IMAGE="$(imagem_waha_padrao_para_host)"
export WAHA_IMAGE
set_env_var "$envfile" WAHA_IMAGE "$WAHA_IMAGE"
c_ylw "$(t " (WAHA trocado para a variante oficial ARM64: {1})" "$WAHA_IMAGE")"
fi
}
# ── Os segredos da chamada de voz, no .env de quem já tinha instalado ────────
+1
View File
@@ -36,6 +36,7 @@ declare -A _ES=(
["Este servidor usa arquitetura '{1}', mas o DeskcommCRM não publica imagens para ela (linux/amd64 e linux/arm64 estão disponíveis)."]="Este servidor usa arquitectura '{1}', pero DeskcommCRM no publica imágenes para ella (linux/amd64 y linux/arm64 están disponibles)."
[" Use uma VPS x86_64/amd64 ou ARM64/aarch64. Repetir o download não resolve."]=" Usa una VPS x86_64/amd64 o ARM64/aarch64. Repetir la descarga no soluciona nada."
["Este servidor usa arquitetura '{1}', e as imagens publicadas do DeskcommCRM são linux/amd64 e linux/arm64."]="Este servidor usa arquitectura '{1}', y las imágenes publicadas de DeskcommCRM son linux/amd64 y linux/arm64."
[" (WAHA trocado para a variante oficial ARM64: {1})"]=" (WAHA cambiado a la variante oficial ARM64: {1})"
["Como esta instalação JÁ EXISTE, sigo em frente: as imagens da versão alvo serão construídas nesta própria VPS."]="Como esta instalación YA EXISTE, sigo adelante: las imágenes de la versión destino se construirán en esta misma VPS."
["Leva de 15 a 25 minutos. Uma instalação NOVA exige x86_64/amd64 ou ARM64/aarch64 com imagens publicadas."]="Tarda de 15 a 25 minutos. Una instalación NUEVA requiere x86_64/amd64 o ARM64/aarch64 con imágenes publicadas."
[" (rede '{1}' criada — é por ela que o Traefik alcança o CRM)"]=" (red '{1}' creada: por ella Traefik llega al CRM)"
@@ -80,6 +80,8 @@ mkdir -p "$WORK/bin"
cat > "$WORK/bin/docker" <<'STUB'
#!/usr/bin/env bash
printf '%s\n' "$*" >> "$DOCKER_LOG"
# O WAHA que o compose vai puxar: o ambiente vence o .env no compose.
case " $* " in *" pull"*) printf 'ambiente WAHA_IMAGE=%s\n' "${WAHA_IMAGE:-}" >> "$DOCKER_LOG" ;; esac
case " $* " in
# O overlay de build local: build e up são sucesso por definição aqui, e é a
# diferença entre as DUAS chamadas de `up -d` que o update.sh faz.
@@ -302,6 +304,34 @@ check "a voz recebe a mesma versão do app" \
check "a atualização preserva o WAHA ARM64 escolhido na instalação" \
grep -q '^WAHA_IMAGE=devlikeapro/waha:noweb-arm-2026.7.2$' "$ENV3B"
# ─────────────────────────────────────────────────────────────────────────────
echo
echo '── 3c. ARM64 que já roda com o WAHA amd64 do install.sh antigo passa para o NOWEB ARM64'
# O install.sh antigo gravava `latest-2026.7.2`, cujo índice só tem linux/amd64.
# A troca mora em `gravar_imagens`, que o update.sh chama depois de reler o kit.
R3C="$WORK/caso3c"; mkdir -p "$R3C"
montar_instalacao "$R3C" 0 '"devlikeapro/waha:latest-2026.7.2"'
OUT3C="$WORK/saida3c.txt"
rodar_update "$R3C" aarch64 0 "$OUT3C"; RC3C="$RC"
ENV3C="$R3C/deskcommcrm/.env"
check "em ARM64 com WAHA amd64 o update.sh sai com 0 (rc=$RC3C)" test "$RC3C" -eq 0
check "o .env passa a ter o WAHA NOWEB ARM64" \
grep -q '^WAHA_IMAGE=devlikeapro/waha:noweb-arm-2026.7.2$' "$ENV3C"
check "e só uma linha de WAHA_IMAGE" test "$(grep -c '^WAHA_IMAGE=' "$ENV3C")" -eq 1
check "o pull já sai com o WAHA ARM64 no ambiente (o ambiente vence o .env)" \
grep -q '^ambiente WAHA_IMAGE=devlikeapro/waha:noweb-arm-2026.7.2$' "$DOCKER_LOG"
check "a troca é anunciada numa linha" grep -q 'WAHA trocado para a variante oficial ARM64' "$OUT3C"
R3D="$WORK/caso3d"; mkdir -p "$R3D"
montar_instalacao "$R3D" 0 devlikeapro/waha-plus:2026.7.2
OUT3D="$WORK/saida3d.txt"
rodar_update "$R3D" aarch64 0 "$OUT3D"; RC3D="$RC"
check "em ARM64 um WAHA escolhido pelo operador fica intacto (rc=$RC3D)" \
grep -q '^WAHA_IMAGE=devlikeapro/waha-plus:2026.7.2$' "$R3D/deskcommcrm/.env"
check "em x86_64 o WAHA amd64 não muda" \
grep -q '^WAHA_IMAGE=devlikeapro/waha:latest-2026.7.2$' "$R3/deskcommcrm/.env"
# ─────────────────────────────────────────────────────────────────────────────
echo
echo '── 4. A DECISÃO, isolada: a função pura que decide'