| #!/bin/bash |
| |
| # This script should be run after using `./build-artifact` to create rpms |
| # and debs. It will checksum and sign the artifacts and produce tarballs |
| # suitable for upload and explosion in a bintray repository. |
| |
| set -o errexit |
| set -o nounset |
| set -o pipefail |
| |
| |
| RELEASE=$(git rev-parse --abbrev-ref HEAD) |
| if [[ "$RELEASE" = "master" ]]; then |
| echo "This script must be run from a branch named for the release, e.g. 0.16.x" |
| exit 1 |
| fi |
| |
| ROOT_DIR=$(git rev-parse --show-toplevel) |
| cd "${ROOT_DIR}" |
| |
| declare -A DIST_DIRS=( |
| ["ubuntu-xenial"]="${ROOT_DIR}/artifacts/aurora-ubuntu-xenial/dist" |
| ["debian-jessie"]="${ROOT_DIR}/artifacts/aurora-debian-jessie/dist" |
| ["centos-7"]="${ROOT_DIR}/artifacts/aurora-centos-7/dist/rpmbuild/RPMS/x86_64" |
| ) |
| |
| function oses() { |
| echo "${!DIST_DIRS[@]}" |
| } |
| |
| function dist_dir() { |
| local os="$1" |
| echo "${DIST_DIRS["${os}"]}" |
| } |
| |
| function sign_artifacts() { |
| local os="$1" |
| local dist_dir="$2" |
| local stage_dir="$3" |
| |
| pushd ${dist_dir} |
| find . -maxdepth 1 -type f | while read file; do |
| local name=$(basename "${file}") |
| # Sign the tarball. |
| gpg --armor --output "${stage_dir}/${name}.asc" --detach-sig "${name}" |
| |
| # Create the checksums |
| shasum -a 512 "${name}" > "${stage_dir}/${name}.sha512" |
| done |
| popd |
| } |
| |
| function zip_artifacts() { |
| local os="$1" |
| local dist_dir="$2" |
| local stage_dir="$3" |
| |
| rm -rf "${stage_dir}/${os}" && mkdir -p "${stage_dir}/${os}" |
| find "${dist_dir}" "${stage_dir}" -maxdepth 1 -type f | while read file; do |
| ln -s ${file} "${stage_dir}/${os}/$(basename ${file})" |
| done |
| |
| local tarball="$(dirname ${dist_dir})/upload.tar" |
| tar -chf "${tarball}" -C "${stage_dir}" "${os}" |
| echo "${tarball}" |
| } |
| |
| for os in $(oses); do |
| dist_dir="$(dist_dir ${os})" |
| if [[ -d "${dist_dir}" ]]; then |
| stage_dir="${dist_dir}/.stage" |
| rm -rf "${stage_dir}" && mkdir -p "${stage_dir}" |
| echo "Signing artifacts for ${os}..." |
| sign_artifacts "${os}" "${dist_dir}" "${stage_dir}" |
| archive="$(zip_artifacts "${os}" "${dist_dir}" "${stage_dir}")" |
| echo "Created archive for ${os} artifacts at ${archive}." |
| else |
| echo "Skipping artifacts for ${os} (not found built under ${dist_dir})." |
| fi |
| done |
| echo "All artifacts prepared for upload to bintray. The following draft email has been created" |
| echo "to send to the dev@aurora.apache.org mailing list" |
| echo |
| |
| # Create the email template for the release candidate to be sent to the mailing lists. |
| if [[ $(uname) == Darwin ]]; then |
| vote_end=$(date -v+3d) |
| else |
| vote_end=$(date -d+3days) |
| fi |
| |
| MESSAGE=$(cat <<__EOF__ |
| To: dev@aurora.apache.org |
| Subject: [VOTE] Release Apache Aurora $RELEASE packages |
| |
| All, |
| |
| I propose that we accept the following artifacts as the official deb and rpm packaging for |
| Apache Aurora ${RELEASE}: |
| |
| https://dl.bintray.com/${USER}/aurora/ |
| |
| The Aurora deb and rpm packaging includes the following: |
| |
| --- |
| |
| The branch used to create the packaging is: |
| https://git1-us-west.apache.org/repos/asf?p=aurora-packaging.git;a=tree;hb=refs/heads/${RELEASE} |
| |
| The packages are available at: |
| https://dl.bintray.com/${USER}/aurora/ |
| |
| The GPG keys used to sign the packages are available at: |
| https://dist.apache.org/repos/dist/release/aurora/KEYS |
| |
| Please download, verify, and test. Detailed test instructions are available here: |
| https://git1-us-west.apache.org/repos/asf?p=aurora-packaging.git;a=tree;f=test;hb=refs/heads/${RELEASE} |
| |
| |
| The vote will close on ${vote_end} |
| |
| [ ] +1 Release these as the deb and rpm packages for Apache Aurora ${RELEASE} |
| [ ] +0 |
| [ ] -1 Do not release these artifacts because... |
| |
| __EOF__ |
| ) |
| |
| echo "--------------------------------------------------------------------------------" |
| echo |
| echo "${MESSAGE}" |
| echo |
| echo "--------------------------------------------------------------------------------" |
| echo |