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