diff --git a/gitlab-rails/scripts/wait-for-deps b/gitlab-rails/scripts/wait-for-deps index ea862f47ba2bd37369f0cd3d422804cbf7a5d072..2e8ae8edbec28b609b9b5f42bdd40fb499724b3f 100755 --- a/gitlab-rails/scripts/wait-for-deps +++ b/gitlab-rails/scripts/wait-for-deps @@ -3,17 +3,30 @@ WAIT_FOR_TIMEOUT="${WAIT_FOR_TIMEOUT:-5}" # Configure for which schema to be verifying -SCHEMA_FILE=db/schema.rb +SCHEMA_FILE=db/structure.sql SCHEMA_RAKE_TASK=db:version +SCHEMA_FORMAT=sql + +cd /srv/gitlab + +# Retain support for older schema if needed +if [ ! -f "db/structure.sql" ]; then + SCHEMA_FILE=db/schema.rb + SCHEMA_FORMAT=ruby +fi + if [ "${DB_SCHEMA_TARGET,,}" == "geo" ]; then SCHEMA_FILE=ee/db/geo/schema.rb SCHEMA_RAKE_TASK=geo:db:version + SCHEMA_FORMAT=ruby fi -cd /srv/gitlab - # fetch the schema desired version directly from the source code -SCHEMA_VERSION=$(grep '(version: ' ${SCHEMA_FILE} | sed -e 's/_//g' -e 's/.* \([[:digit:]]\+\)) do/\1/') +if [ "${SCHEMA_FORMAT,,}" == "ruby" ]; then + SCHEMA_VERSION=$(grep '(version: ' ${SCHEMA_FILE} | sed -e 's/_//g' -e 's/.* \([[:digit:]]\+\)) do/\1/') +else + SCHEMA_VERSION=$(sed -n '/INSERT INTO "schema_migrations" (version) VALUES/,/;/p' ${SCHEMA_FILE} | grep -o "[[:digit:]]*" | awk -v max=0 '{if($1>max){max=$1}}END{print max}') +fi # Stash DB_SCHEMA_VERSION, so we can check it at exit. DB_SCHEMA_VERSION="0"