vitess.io/vitess@v0.16.2/tools/make-release-packages.sh (about) 1 #!/bin/bash 2 3 # This script builds and packages a Vitess release suitable for creating a new 4 # release on https://github.com/vitessio/vitess/releases. 5 6 # http://redsymbol.net/articles/unofficial-bash-strict-mode/ 7 set -euo pipefail 8 9 # sudo gem install --no-ri --no-rdoc fpm 10 # shellcheck disable=SC1091 11 source build.env 12 13 SHORT_REV="$(git rev-parse --short HEAD)" 14 if [ -n "$*" ]; then 15 VERSION="$1" 16 else 17 VERSION="$(git describe --tags --dirty --always | sed s/^v// | sed s/-dirty//)" 18 fi 19 20 RELEASE_ID="vitess-${VERSION}-${SHORT_REV}" 21 RELEASE_DIR="${VTROOT}/releases/${RELEASE_ID}" 22 DESCRIPTION="A database clustering system for horizontal scaling of MySQL 23 24 Vitess is a database solution for deploying, scaling and managing large 25 clusters of MySQL instances. It's architected to run as effectively in a public 26 or private cloud architecture as it does on dedicated hardware. It combines and 27 extends many important MySQL features with the scalability of a NoSQL database." 28 29 TAR_FILE="${RELEASE_ID}.tar.gz" 30 31 make tools 32 make build 33 34 mkdir -p releases 35 36 # Copy a subset of binaries from issue #5421 37 mkdir -p "${RELEASE_DIR}/bin" 38 for binary in vttestserver mysqlctl mysqlctld query_analyzer topo2topo vtaclcheck vtadmin vtbackup vtbench vtclient vtcombo vtctl vtctldclient vtctlclient vtctld vtexplain vtgate vttablet vtorc zk zkctl zkctld; do 39 cp "bin/$binary" "${RELEASE_DIR}/bin/" 40 done; 41 42 # Copy remaining files, preserving date/permissions 43 # But resolving symlinks 44 cp -rpfL {web,examples} "${RELEASE_DIR}" 45 46 echo "Follow the installation instructions at: https://vitess.io/docs/get-started/local/" > "${RELEASE_DIR}"/examples/README.md 47 48 cd "${RELEASE_DIR}/.." 49 tar -czf "${TAR_FILE}" "${RELEASE_ID}" 50 51 cd "${RELEASE_DIR}" 52 PREFIX=${PREFIX:-/usr} 53 54 # For RPMs and DEBs, binaries will be in /usr/bin 55 # Examples will be in /usr/share/vitess/examples 56 57 mkdir -p share/vitess/ 58 mv examples share/vitess/ 59 60 fpm \ 61 --force \ 62 --input-type dir \ 63 --name vitess \ 64 --version "${VERSION}" \ 65 --url "https://vitess.io/" \ 66 --description "${DESCRIPTION}" \ 67 --license "Apache License - Version 2.0, January 2004" \ 68 --prefix "$PREFIX" \ 69 -C "${RELEASE_DIR}" \ 70 --before-install "$VTROOT/tools/preinstall.sh" \ 71 --package "$(dirname "${RELEASE_DIR}")" \ 72 --iteration "${SHORT_REV}" \ 73 -t deb --deb-no-default-config-files 74 75 fpm \ 76 --force \ 77 --input-type dir \ 78 --name vitess \ 79 --version "${VERSION}" \ 80 --url "https://vitess.io/" \ 81 --description "${DESCRIPTION}" \ 82 --license "Apache License - Version 2.0, January 2004" \ 83 --prefix "$PREFIX" \ 84 -C "${RELEASE_DIR}" \ 85 --before-install "$VTROOT/tools/preinstall.sh" \ 86 --package "$(dirname "${RELEASE_DIR}")" \ 87 --iteration "${SHORT_REV}" \ 88 -t rpm 89 90 cd "${VTROOT}"/releases 91 echo "" 92 echo "Packages created as of $(date +"%m-%d-%y") at $(date +"%r %Z")" 93 echo "" 94 echo "Package | SHA256" 95 echo "------------ | -------------" 96 for file in $(find . -type f -printf '%T@ %p\n' | sort -n | tail -3 | awk '{print $2}' | sed s?^./??); do 97 echo "$file | $(sha256sum "$file" | awk '{print $1}')"; 98 done