Skip to content

tj/gobinaries

Repository files navigation

Go Binaries

Go Binariesis an on-demand binary server, allowing non-Go users to quickly install tools written in Go without installinggoitself, and removing the burden of cross-compiling and uploading dozens of binaries for every command-line you write.

On-demand Go binary example

Usage

InstallPKGwith optional semverVERSION.

curl -sf https://gobinaries /<PKG>[@VERSION] | sh

InstallPKGwith optional semverVERSIONto the given directoryPREFIX.By default/usr/local/binis used.

curl -sf https://gobinaries /<PKG>[@VERSION] | PREFIX=/tmp sh

Thegithubpath prefix is optional.

Examples

Install theheyHTTP benchmarking tool:

curl -sf https://gobinaries /rakyll/hey|sh

Install thewuzzHTTP client:

curl -sf https://gobinaries /asciimoo/wuzz|sh

Install the latest version ofstaticgen:

curl -sf https://gobinaries /tj/staticgen/cmd/staticgen | sh

Install the latest1.xmajor version ofstaticgen:

curl -sf https://gobinaries /tj/staticgen/cmd/[email protected] | sh

Install thev1.0.0version oftriage:

curl -sf https://gobinaries /tj/triage/cmd/[email protected] | sh

Semver support

The following semver patterns are supported:

  • Exact version:v1.2.3,1.2.3
  • Wildcards:v1.x,v1.2.x,1.x,1.2.x
  • Wildcards (implicit):v1,v1.2,1.2
  • Leadingvis optional, regardless of the Git tag

How does it work?

Take for example you want to install @rakyll's fantastic HTTP benchmarking toolhey,to install the latest release you would run:

curl -sf https://gobinaries /rakyll/hey|sh

This request fetches the latest tag from GitHub and responds with a shell script which performs a second request, populated with the resolved version and architecture as shown here:

https://gobinaries /binary/github /rakyll/hey?os=darwin&arch=amd64&version=v0.1.3

The response of this request is a Golang binary compiled for the requested os, architecture, and package version. The result is cached in a CDN for subsequent requests.

Limitations

  • The Go package must compile in under 100 seconds (CDN limitation)
  • The Go package must have at least one Git tag

FAQ

What's wrong with go-get? Using go-get for installation is fine if you're a Go user, however, if you're creating programs which are designed to be used by a wider audience it's unlikely they will have Go installed.
Which version of Go is used? Currently Go 1.13.x via the official golang:1.13 Docker image.

GoDoc

Sponsors

Sponsors

This project is sponsored byCTO.ai,making it easy for development teams to create and share workflow automations without leaving the command line.

And myGitHub sponsors: