Skip to content

chore(release): Configurar GoReleaser para distribuicao em Homebrew, Scoop, WinGet, AUR e npm #22

Description

@joaooncode

Contexto & Requisitos

Automatizar o empacotamento e distribuição de binários multiplataforma (Linux, macOS, Windows) do envguard utilizando GoReleaser, incluindo publicação em gerenciadores de pacotes populares (Homebrew, Scoop, WinGet, AUR) e distribuição via pacote npm / npx para facilitar o uso em projetos JavaScript/TypeScript sem necessidade de instalação prévia do runtime Go.


Tarefas

GoReleaser & Compilação Multiplataforma

  • Criar arquivo de configuração .goreleaser.yaml definindo matriz de compilação:
    • darwin/amd64, darwin/arm64 (macOS Intel & Apple Silicon)
    • linux/amd64, linux/arm64 (Linux x86_64 & ARM64)
    • windows/amd64, windows/arm64 (Windows x86_64 & ARM64)
  • Configurar geração de checksums SHA256 e arquivos de release archives (.tar.gz, .zip).
  • Configurar injeção de metadados de build via -ldflags (Version, Commit, Date) no internal/cli/version.go.

Gerenciadores de Pacotes Nativos

  • Configurar geração de fórmulas para Homebrew Tap (joaooncode/homebrew-tap).
  • Configurar geração de manifestos para Scoop Bucket (joaooncode/scoop-bucket).
  • Configurar manifestos para WinGet (joaooncode/winget-pkgs).
  • Configurar pacote para AUR (envguard-bin).

Pacote npm (npm / npx)

  • Estruturar pacote wrapper npm (package.json, bin/envguard.js) para permitir execução direta via npx envguard e instalação local via npm install -D envguard.
  • Implementar resolução automática de plataforma/arquitetura do sistema operacional e download/execução do binário correspondente a partir das GitHub Releases.
  • Configurar automação de publicação no npm registry (npm publish) com NPM_TOKEN no workflow de release.

CI/CD & Documentação

  • Configurar workflow no GitHub Actions (.github/workflows/release.yml) acionado na publicação de tags semânticas (v*).
  • Documentar comandos de instalação via Homebrew, Scoop, WinGet, AUR e npm no README.md.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreTooling, CI/CD, and project setup

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions