Skip to content

Adicionar instalador em uma linha TG-317 - #22

Merged
cedric-lamalle merged 3 commits into
mainfrom
TG-317
Oct 11, 2026
Merged

cedric-lamalle merged 3 commits into
mainfrom
TG-317

Conversation

@cedric-lamalle

Copy link
Copy Markdown
Member

Summary

  • install.sh: POSIX sh one-line installer (curl -fsSL .../install.sh | sh), no gh. Latest release from the /releases/latest redirect, TAIGA_VERSION/--version, TAIGA_INSTALL_DIR/--dir, SHA-256 check against SHA256SUMS, atomic install, never sudo.
  • scripts/test-install + new install CI job: shellcheck (-s sh) and a local-fixture test (no external network) under dash, sh and bash.
  • README and skills/taiga-cli/references/instalacao.md: one-liner first, manual block and go install kept.

Story: https://agile.basis.com.br/project/infra-2025/us/317

@cedric-lamalle

Copy link
Copy Markdown
Member Author

Revisão independente TG-317 r1 — SHA 420695ec175e55dfe133e56c7343210d18a1dfdb: correções / com achados. CI unit/install/integration conferido verde no mesmo SHA.

Sério — install.sh:178: latest falha no Alpine mínimo sem curl. Reproduzido no Alpine 3.23 / BusyBox 1.37.0: wget rejeita --max-redirect=0; o instalador termina com could not work out the latest release, exit 1. Esse é um consumidor explícito do pacote. Com TAIGA_VERSION=0.4.0 no mesmo Alpine, a instalação real passou. O teste atual usa GNU wget do runner e não cobre essa incompatibilidade.

Menores (estados construídos, sem ocorrência real identificada):

  • install.sh:186: truncar os seis bytes finais deixa main válido, executa e instala sem os argumentos. Reproduzido com fixture; o teste de 400 bytes termina ainda nos comentários.
  • install.sh:126-127: quando DIR/taiga é diretório, mv move o staging para dentro dele, anuncia Installed e depois falha, deixando taiga/.taiga.<pid>.

O que tentei e não quebrou: 40 checks locais em dash/sh; releases reais latest 0.4.0 e pin 0.3.0 com curl; release real 0.4.0 com BusyBox wget quando fixada; checksum errado/ausente; falhas injetadas em download/cp/chmod e TERM com limpeza e preservação do binário anterior; substituição de ELF em execução. MacOS nativo/bash 3.2 não foram executados.

Worktree intacto; sem aprovação, merge ou alteração de story. Relatório completo entregue ao coordenador no caminho do pacote r1.

@cedric-lamalle

Copy link
Copy Markdown
Member Author

Revisão independente TG-317 r2 — SHA 4c37c8a8073cff80e2d9b91be92ee93f1e0e5718: aprovado, sem achados Bloqueantes ou Sérios no delta. CI unit/install/integration conferido verde nesse SHA.

Os três achados r1 foram confirmados como corrigidos nas reproduções originais:

  • BusyBox wget: latest real instalou 0.4.0 no Alpine 3.23 mínimo sem curl, com checksum OK e version, exit 0.
  • Truncamento após main: agora exit 2, sem instalação. Também testei 6458 prefixos por shell em dash/bash, com controle positivo do script completo; nenhum prefixo anterior ao fechamento do bloco executou main.
  • Diretório DIR/taiga: rejeitado antes do download, sem staging ou outras sobras.

Menor / limite de redirects (install.sh:186): cadeia construída /latest → /canonical → /tag/v0.4.0 falha em GNU/BusyBox porque só se lê o primeiro Location. Nenhum consumidor nosso com essa cadeia identificado; o GitHub real passou. A premissa já existia na r1. Não requer nova rodada.

O que tentei e não quebrou: 66 checks no host, 22 no novo passo Alpine do CI reproduzido localmente, redirects diretos relativos/absolutos, redirect adicional após a tag, script completo por pipe e help, destinos FIFO/link para diretório rejeitados sem sobras. MacOS nativo e proxy HTTPS real não foram executados.

Worktree intacto; sem aprovação formal, merge ou alteração de story. Relatório completo entregue no caminho do pacote r2.

@cedric-lamalle
cedric-lamalle merged commit a152096 into main Oct 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant