canvas-lms/script/docker_dev_update.sh

115 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
set -e
source script/common/utils/common.sh
source script/common/canvas/build_helpers.sh
trap trap_result EXIT
trap "printf '\nTerminated\n' && exit 130" SIGINT
LOG="$(pwd)/log/docker_dev_update.log"
DOCKER='true'
OS="$(uname)"
SCRIPT_NAME=$0
DOCKER_COMMAND="docker-compose"
CANVAS_SKIP_DOCKER_USERMOD='true'
usage () {
echo "usage:"
printf " --update-code [skip-canvas] [skip-plugins [<plugin1>,...]\tRebase canvas-lms and plugins. Optional skip-canvas and\n"
printf " \t\t\t\t\t\t\t\tskip-plugins. Comma separated list of plugins to skip.\n"
printf " -h|--help\t\t\t\t\t\t\tDisplay usage\n\n"
}
die () {
echo "$*" 1>&2
usage
exit 1
}
_canvas_lms_opt_in_telemetry "$SCRIPT_NAME" "$LOG"
while :; do
case $1 in
-h|-\?|--help)
usage
exit
;;
--update-code)
UPDATE_CODE=true
before_rebase_sha="$(git rev-parse HEAD)"
params=()
while :; do
case $2 in
skip-canvas)
unset before_rebase_sha
params+=(--skip-canvas)
;;
skip-plugins)
if [ "$3" ] && [[ "$3" != "skip-canvas" ]]; then
repos=$3
params+=(--skip-plugins $repos)
shift
else
params+=(--skip-plugins)
fi
;;
*)
break
esac
shift
done
;;
--rebuild)
REBUILD_DOCKER=true
;;
?*)
die 'ERROR: Unknown option: ' "$1" >&2
;;
*)
break
esac
shift
done
# check for docker daemon running before anything else
docker_running || exit 1
if [[ $OS == 'Darwin' ]]; then
source script/common/utils/dinghy_proxy_setup.sh
dinghy_machine_exists && exit 1
fi
if [ -f "docker-compose.override.yml" ]; then
echo "docker-compose.override.yml exists, skipping copy of default configuration"
else
setup_docker_compose_override
fi
if [[ -n "$UPDATE_CODE" ]] || [[ -n "$REBUILD_DOCKER" ]] && [[ "$(docker-compose top | wc -l)" -gt 0 ]]; then
echo "You should probably stop docker containers before rebasing code"
prompt "Would you like to attempt to stop containers with docker-compose stop? [y/n]" stop
if [[ ${stop:-n} == 'y' ]]; then
docker-compose stop
else
echo "Continuing with docker containers running, this may cause errors."
fi
fi
echo ""
create_log_file
message "Bringing Canvas up to date ..."
init_log_file "Docker Dev Update"
[[ -n "$UPDATE_CODE" ]] && ./script/rebase_canvas_and_plugins.sh "${params[@]}"
if [[ -n "$REBUILD_DOCKER" ]]; then rebuild_docker_images; else check_dockerfile; fi
docker_compose_up
bundle_install
install_node_packages
compile_assets
rake_db_migrate_dev_and_test
if [[ ${stop:-n} == 'y' ]]; then
message "Restarting stopped docker containers..."
$DOCKER_COMMAND start
fi