canvas-lms/build/new-jenkins/run-migrations.sh

49 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -o errexit -o errtrace -o nounset -o pipefail -o xtrace
# Append thread count used to build images.
TAG_THREADS_SUFFIX=${RSPEC_PROCESSES:-"1"}
export CACHE_VERSION="2022-05-31.1"
export CACHE_SUFFIX="-$TAG_THREADS_SUFFIX"
source ./build/new-jenkins/docker-build-helpers.sh
MIGRATIONS_CACHE_MD5=$(find . \( -path "./db/migrate/*.rb" -o -path "./gems/plugins/*/db/migrate/*.rb" \) -type f -exec md5sum {} \; | sort -k 2 | md5sum | cut -d ' ' -f 1)
declare -A CASSANDRA_TAGS; compute_tags_from_hash "CASSANDRA_TAGS" $CASSANDRA_PREFIX $MIGRATIONS_CACHE_MD5
declare -A DYNAMODB_TAGS; compute_tags_from_hash "DYNAMODB_TAGS" $DYNAMODB_PREFIX $MIGRATIONS_CACHE_MD5
declare -A POSTGRES_TAGS; compute_tags_from_hash "POSTGRES_TAGS" $POSTGRES_PREFIX $MIGRATIONS_CACHE_MD5
if [ ! -z "$CACHE_LOAD_SCOPE" ] && has_remote_tags ${CASSANDRA_TAGS[LOAD_TAG]} ${DYNAMODB_TAGS[LOAD_TAG]} ${POSTGRES_TAGS[LOAD_TAG]}; then
tag_remote_async "CASSANDRA_TAG_REMOTE_PID" ${CASSANDRA_TAGS[LOAD_TAG]} ${CASSANDRA_TAGS[UNIQUE_TAG]}
tag_remote_async "DYNAMODB_TAG_REMOTE_PID" ${DYNAMODB_TAGS[LOAD_TAG]} ${DYNAMODB_TAGS[UNIQUE_TAG]}
tag_remote_async "POSTGRES_TAG_REMOTE_PID" ${POSTGRES_TAGS[LOAD_TAG]} ${POSTGRES_TAGS[UNIQUE_TAG]}
wait_for_children
exit 0
fi
./build/new-jenkins/docker-compose-pull.sh
./build/new-jenkins/docker-compose-build-up.sh
./build/new-jenkins/docker-compose-setup-databases.sh
# Ensure that the DB shuts down cleanly and saves everything to disk.
docker stop $(docker ps -q --filter 'name=cassandra_' --filter 'name=dynamodb_' --filter 'name=postgres_')
CASSANDRA_MESSAGE="Cassandra migrated image for MD5SUM $MIGRATIONS_CACHE_MD5 with $TAG_THREADS_SUFFIX threads."
docker commit -m "$CASSANDRA_MESSAGE" $(docker ps -aq --filter 'name=cassandra_') ${CASSANDRA_TAGS[UNIQUE_TAG]}
DYNAMODB_MESSAGE="Dynamodb migrated image for MD5SUM $MIGRATIONS_CACHE_MD5 with $TAG_THREADS_SUFFIX threads."
docker commit -m "$DYNAMODB_MESSAGE" $(docker ps -aq --filter 'name=dynamodb_') ${DYNAMODB_TAGS[UNIQUE_TAG]}
POSTGRES_MESSAGE="Postgres migrated image for MD5SUM $MIGRATIONS_CACHE_MD5 with $TAG_THREADS_SUFFIX threads."
docker commit -m "$POSTGRES_MESSAGE" $(docker ps -aq --filter 'name=postgres_') ${POSTGRES_TAGS[UNIQUE_TAG]}
[ ! -z "$CACHE_SAVE_SCOPE" ] && docker tag ${CASSANDRA_TAGS[UNIQUE_TAG]} ${CASSANDRA_TAGS[SAVE_TAG]}
[ ! -z "$CACHE_SAVE_SCOPE" ] && docker tag ${DYNAMODB_TAGS[UNIQUE_TAG]} ${DYNAMODB_TAGS[SAVE_TAG]}
[ ! -z "$CACHE_SAVE_SCOPE" ] && docker tag ${POSTGRES_TAGS[UNIQUE_TAG]} ${POSTGRES_TAGS[SAVE_TAG]}
exit 0