Skip to content

Adiciona script de instalação da MGC CLI e workflow de publicação - #77

Open
alanfranciscos wants to merge 4 commits into
mainfrom
feat-add-install-script
Open

Adiciona script de instalação da MGC CLI e workflow de publicação#77
alanfranciscos wants to merge 4 commits into
mainfrom
feat-add-install-script

Conversation

@alanfranciscos

Copy link
Copy Markdown

O que essa PR faz?

Adiciona um instalador shell oficial da MGC CLI (scripts/install.sh) e o workflow que o publica no Object Storage, viabilizando a instalação via one-liner (curl ... | sh).

scripts/install.sh

Script POSIX (/bin/sh, sem dependência de bash) que:

  • Detecta SO (Linux, macOS, FreeBSD) e arquitetura (amd64, arm64), e valida as dependências necessárias antes de qualquer download;
  • Resolve a última versão pelo redirect de /releases/latest, ou instala uma versão específica com --version X.Y.Z;
  • Baixa o .tar.gz do GitHub Releases com retry e valida o checksum SHA256 contra o arquivo de checksums do release antes de instalar;
  • Instala por padrão em $HOME/.local/bin (sem root); --system instala em /usr/local/bin;
  • Escreve o binário ao lado e renomeia (mv), evitando ETXTBSY e binário corrompido ao atualizar uma CLI em execução;
  • Configura PATH e autocomplete no .bashrc/.zshrc do usuário real (respeita SUDO_USER e devolve a posse dos arquivos criados via chown);
  • Bloqueia downgrades e remove instalações antigas encontradas em outros caminhos do PATH;
  • Suporta --quiet, --help e respeita NO_COLOR.

.github/workflows/install-script.yaml

Workflow manual (workflow_dispatch) que:

  • Instala a CLI usando o próprio script que será publicado, funcionando como smoke test: se o script estiver quebrado, o workflow falha antes de publicar;
  • Envia o install.sh para o bucket mgc-cli no Object Storage (região br-se1) e aplica ACL public-read;
  • Baixa a URL pública e faz diff contra o arquivo do repositório, garantindo que o conteúdo publicado é idêntico ao versionado.

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