diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README.md | 3 | ||||
-rwxr-xr-x | build-release.sh | 57 |
3 files changed, 60 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index 9f11b755a17d..53a04aab3a89 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .idea/ +release/ diff --git a/README.md b/README.md index 0227de8fbba2..0fc78e817ae0 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,8 @@ to only update the `api` resource sets and the `frontend/user-page` resource set Assuming you have Go configured correctly, you can simply `go get github.com/tazjin/kontemplate/...`. -There are signed binary releases available on the [releases page][] for Linux, OS X and Windows. +There are signed binary releases available on the [releases page][] for Linux, OS X, +FreeBSD and Windows. ## Usage diff --git a/build-release.sh b/build-release.sh new file mode 100755 index 000000000000..d70bd3eea25a --- /dev/null +++ b/build-release.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -ueo pipefail + +readonly GIT_HASH="$(git rev-parse --short HEAD)" +readonly LDFLAGS="-X main.gitHash=${GIT_HASH} -w -s" +readonly VERSION="1.0-${GIT_HASH}" + +function build-for() { + local os="${1}" + local arch="${2}" + local target="release/${os}/${arch}" + + echo "Building kontemplate for ${os}-${arch} in ${target}" + + mkdir -p "${target}" + + env GOOS="${os}" GOARCH="${arch}" go build \ + -ldflags "${LDFLAGS}" \ + -o "${target}/kontemplate" \ + -tags netgo + + +} + +function sign-for() { + local os="${1}" + local arch="${2}" + local target="release/${os}/${arch}" + local bin="${target}/kontemplate" + local hash="$(sha256sum ${bin})" + local tar="release/kontemplate-${VERSION}-${os}-${arch}.tar.gz" + + echo "Signing kontemplate binary for ${os}-${arch} with SHA256 ${hash}" + gpg --sign "${bin}" + + echo "Packing release into ${tar}" + tar czvf "${tar}" -C "${target}" kontemplate kontemplate.gpg +} + +case "${1}" in + "build") + # Build releases for various operating systems: + build-for "linux" "amd64" + build-for "darwin" "amd64" + build-for "windows" "amd64" + build-for "freebsd" "amd64" + exit 0 + ;; + "sign") + # Sign releases: + sign-for "linux" "amd64" + sign-for "darwin" "amd64" + sign-for "windows" "amd64" + sign-for "freebsd" "amd64" + exit 0 + ;; +esac |