Skip to content
Closed
62 changes: 46 additions & 16 deletions dev/create-release/release-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ usage: release-build.sh <package|docs|publish-snapshot|publish-release>
Creates build deliverables from a Spark commit.

Top level targets are
package: Create binary packages and copy them to people.apache
docs: Build docs and copy them to people.apache
package: Create binary packages and copy them to home.apache
docs: Build docs and copy them to home.apache
publish-snapshot: Publish snapshot release to Apache snapshots
publish-release: Publish a release to Apache release repo

Expand Down Expand Up @@ -64,13 +64,16 @@ for env in ASF_USERNAME ASF_RSA_KEY GPG_PASSPHRASE GPG_KEY; do
fi
done

# Explicitly set locale in order to make `sort` output consistent across machines.
# See https://stackoverflow.com/questions/28881 for more details.
export LC_ALL=C

# Commit ref to checkout when building
GIT_REF=${GIT_REF:-master}

# Destination directory parent on remote server
REMOTE_PARENT_DIR=${REMOTE_PARENT_DIR:-/home/$ASF_USERNAME/public_html}

SSH="ssh -o ConnectTimeout=300 -o StrictHostKeyChecking=no -i $ASF_RSA_KEY"
GPG="gpg --no-tty --batch"
NEXUS_ROOT=https://repository.apache.org/service/local/staging
NEXUS_PROFILE=d63f592e7eac0 # Profile for Spark staging uploads
Expand All @@ -97,18 +100,35 @@ if [ -z "$SPARK_PACKAGE_VERSION" ]; then
fi

DEST_DIR_NAME="spark-$SPARK_PACKAGE_VERSION"
USER_HOST="[email protected]"

function LFTP {
SSH="ssh -o ConnectTimeout=300 -o StrictHostKeyChecking=no -i $ASF_RSA_KEY"
COMMANDS=$(cat <<EOF
set net:max-retries 1 &&
set sftp:connect-program $SSH &&
connect -u $ASF_USERNAME,p sftp://home.apache.org &&
$@
EOF
)
lftp --norc -c "$COMMANDS"
}
export -f LFTP


git clean -d -f -x
rm .gitignore
rm -rf .git
cd ..

if [ -n "$REMOTE_PARENT_MAX_LENGTH" ]; then
old_dirs=$($SSH $USER_HOST ls -t $REMOTE_PARENT_DIR | tail -n +$REMOTE_PARENT_MAX_LENGTH)
old_dirs=$(
LFTP nlist $REMOTE_PARENT_DIR \
| grep -v "^\." \
| sort -r \
| tail -n +$REMOTE_PARENT_MAX_LENGTH)
for old_dir in $old_dirs; do
echo "Removing directory: $old_dir"
$SSH $USER_HOST rm -r $REMOTE_PARENT_DIR/$old_dir
LFTP rm -rf $REMOTE_PARENT_DIR/$old_dir
done
fi

Expand Down Expand Up @@ -178,11 +198,17 @@ if [[ "$1" == "package" ]]; then
# Copy data
dest_dir="$REMOTE_PARENT_DIR/${DEST_DIR_NAME}-bin"
echo "Copying release tarballs to $dest_dir"
$SSH $USER_HOST mkdir $dest_dir
rsync -e "$SSH" spark-* $USER_HOST:$dest_dir
echo "Linking /latest to $dest_dir"
$SSH $USER_HOST rm -f "$REMOTE_PARENT_DIR/latest"
$SSH $USER_HOST ln -s $dest_dir "$REMOTE_PARENT_DIR/latest"
set -x
# Put to new directory:
LFTP mkdir -p $dest_dir
LFTP mput -O $dest_dir spark-*
# Delete /latest directory and rename new upload to /latest
LFTP rm -rf "$REMOTE_PARENT_DIR/latest"
LFTP mv $dest_dir "$REMOTE_PARENT_DIR/latest"
# Re-upload a second time and leave the files in the timestamped upload directory:
LFTP mkdir -p $dest_dir
LFTP mput -O $dest_dir spark-*
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might need to quote the spark-* so that the parameter expansion is done by lftp rather than the shell.

set +x
exit 0
fi

Expand All @@ -196,11 +222,15 @@ if [[ "$1" == "docs" ]]; then
# TODO: Make configurable to add this: PRODUCTION=1
PRODUCTION=1 RELEASE_VERSION="$SPARK_VERSION" jekyll build
echo "Copying release documentation to $dest_dir"
$SSH $USER_HOST mkdir $dest_dir
echo "Linking /latest to $dest_dir"
$SSH $USER_HOST rm -f "$REMOTE_PARENT_DIR/latest"
$SSH $USER_HOST ln -s $dest_dir "$REMOTE_PARENT_DIR/latest"
rsync -e "$SSH" -r _site/* $USER_HOST:$dest_dir
# Put to new directory:
LFTP mkdir -p $dest_dir
LFTP mput -O $dest_dir _site/*
# Delete /latest directory and rename new upload to /latest
LFTP rm -rf "$REMOTE_PARENT_DIR/latest"
LFTP mv $dest_dir "$REMOTE_PARENT_DIR/latest"
# Re-upload a second time and leave the files in the timestamped upload directory:
LFTP mkdir -p $dest_dir
LFTP mput -O $dest_dir _site/*
cd ..
exit 0
fi
Expand Down