build-release 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/sh -e
  2. VER=$1
  3. PROJ="etcd"
  4. if [ -z "$1" ]; then
  5. echo "Usage: ${0} VERSION" >> /dev/stderr
  6. exit 255
  7. fi
  8. set -u
  9. function setup_env {
  10. local proj=${1}
  11. local ver=${2}
  12. if [ ! -d ${proj} ]; then
  13. git clone https://github.com/coreos/${proj}
  14. fi
  15. pushd ${proj} >/dev/null
  16. git checkout master
  17. git fetch --all
  18. git reset --hard origin/master
  19. git checkout $ver
  20. popd >/dev/null
  21. }
  22. function package {
  23. local target=${1}
  24. local srcdir="${2}/bin"
  25. local ccdir="${srcdir}/${GOOS}_${GOARCH}"
  26. if [ -d ${ccdir} ]; then
  27. srcdir=${ccdir}
  28. fi
  29. for bin in etcd etcdctl etcd-migrate; do
  30. cp ${srcdir}/${bin} ${target}
  31. done
  32. cp etcd/README.md ${target}/README.md
  33. cp etcd/etcdctl/README.md ${target}/README-etcdctl.md
  34. cp -R etcd/Documentation ${target}/Documentation
  35. }
  36. function main {
  37. mkdir release
  38. cd release
  39. setup_env ${PROJ} ${VER}
  40. for os in darwin windows linux; do
  41. export GOOS=${os}
  42. export GOARCH="amd64"
  43. pushd etcd >/dev/null
  44. ./build
  45. popd >/dev/null
  46. TARGET="etcd-${VER}-${GOOS}-${GOARCH}"
  47. mkdir ${TARGET}
  48. package ${TARGET} ${PROJ}
  49. if [ ${GOOS} == "linux" ]; then
  50. tar cfz ${TARGET}.tar.gz ${TARGET}
  51. echo "Wrote release/${TARGET}.tar.gz"
  52. else
  53. zip -qr ${TARGET}.zip ${TARGET}
  54. echo "Wrote release/${TARGET}.zip"
  55. fi
  56. done
  57. }
  58. main