Current section
Files
Jump to
Current section
Files
priv/templates/release.eex
#!/usr/bin/env bash
# Deploy release from local build
set -e
# Environment vars
# DESTDIR, prefix for target files, optional
MIX_ENV="${MIX_ENV:-prod}"
RELEASE_VSN="${RELEASE_VSN:-"<%= version %>"}"
RELEASE_NAME="${RELEASE_NAME:-"<%= release_name %>"}"
# Config vars
DEPLOY_USER="${DEPLOY_USER:-"<%= deploy_user %>"}"
APP_GROUP="${APP_USER:-"<%= app_group %>"}"
CURRENT_DIR="${CURRENT_DIR:-"<%= current_dir %>"}"
RELEASES_DIR="${RELEASES_DIR:-"<%= releases_dir %>"}"
CURRENT_LINK="${DESTDIR}${CURRENT_DIR}"
<%= case release_system do %>
<% :mix -> %>
TAR_FILE="_build/${MIX_ENV}/${RELEASE_NAME}-${RELEASE_VSN}.tar.gz"
<% :distillery -> %>
TAR_FILE="_build/${MIX_ENV}/rel/${RELEASE_NAME}/releases/${RELEASE_VSN}/${RELEASE_NAME}.tar.gz"
<% end %>
TIMESTAMP=$(date +%Y%m%d%H%M%S)
RELEASE_DIR="${DESTDIR}${RELEASES_DIR}/${TIMESTAMP}"
echo "==> Deploying release $RELEASE_VSN to $RELEASE_DIR"
mkdir -p "$RELEASE_DIR"
echo "===> Extracting release from tar file $TAR_FILE"
tar -C "$RELEASE_DIR" -xf "$TAR_FILE"
chown -R ${DEPLOY_USER}:${APP_GROUP} "${RELEASE_DIR}"
echo "===> Setting current symlink $CURRENT_LINK"
if [[ -L "$CURRENT_LINK" ]]; then
rm "$CURRENT_LINK"
fi
ln -s "$RELEASE_DIR" "$CURRENT_LINK"
echo "===> Setting file permissions for release executables"
# Ensure that app OS user can use group permissions to execute files in release
chown -R $DEPLOY_USER:$APP_GROUP "$CURRENT_DIR"
find -H $CURRENT_LINK -executable -type f -exec chmod g+x {} \;