| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/usr/bin/env bash
- set -e
- VER=$1
- PROJ="etcd"
- if [ -z "$1" ]; then
- echo "Usage: ${0} VERSION" >> /dev/stderr
- exit 255
- fi
- set -u
- function setup_env {
- local proj=${1}
- local ver=${2}
- if [ ! -d "${proj}" ]; then
- git clone https://github.com/etcd-io/"${proj}"
- fi
- pushd "${proj}" >/dev/null
- git checkout master
- git fetch --all
- git reset --hard origin/master
- git checkout "${ver}"
- popd >/dev/null
- }
- function package {
- local target=${1}
- local srcdir="${2}/bin"
- local ccdir="${srcdir}/${GOOS}_${GOARCH}"
- if [ -d "${ccdir}" ]; then
- srcdir="${ccdir}"
- fi
- local ext=""
- if [ "${GOOS}" == "windows" ]; then
- ext=".exe"
- fi
- for bin in etcd etcdctl; do
- cp "${srcdir}/${bin}" "${target}/${bin}${ext}"
- done
- cp etcd/README.md "${target}"/README.md
- cp etcd/etcdctl/README.md "${target}"/README-etcdctl.md
- cp etcd/etcdctl/READMEv2.md "${target}"/READMEv2-etcdctl.md
- cp -R etcd/Documentation "${target}"/Documentation
- }
- function main {
- mkdir release
- cd release
- setup_env "${PROJ}" "${VER}"
- tarcmd=tar
- if [[ $(go env GOOS) == "darwin" ]]; then
- tarcmd=gtar
- fi
- for os in darwin windows linux; do
- export GOOS=${os}
- TARGET_ARCHS=("amd64")
- if [ ${GOOS} == "linux" ]; then
- TARGET_ARCHS+=("arm64")
- TARGET_ARCHS+=("ppc64le")
- fi
- for TARGET_ARCH in "${TARGET_ARCHS[@]}"; do
- export GOARCH=${TARGET_ARCH}
- pushd etcd >/dev/null
- GO_LDFLAGS="-s" ./build
- popd >/dev/null
- TARGET="etcd-${VER}-${GOOS}-${GOARCH}"
- mkdir "${TARGET}"
- package "${TARGET}" "${PROJ}"
- if [ ${GOOS} == "linux" ]; then
- ${tarcmd} cfz "${TARGET}.tar.gz" "${TARGET}"
- echo "Wrote release/${TARGET}.tar.gz"
- else
- zip -qr "${TARGET}.zip" "${TARGET}"
- echo "Wrote release/${TARGET}.zip"
- fi
- done
- done
- }
- main
|