diff --git a/.gitlab/ci/database.gitlab-ci.yml b/.gitlab/ci/database.gitlab-ci.yml index 39065d1c9db1eaa7c55896511744a37a18e70154..7806cc15b183796dd5804067cc350cea78c935c4 100644 --- a/.gitlab/ci/database.gitlab-ci.yml +++ b/.gitlab/ci/database.gitlab-ci.yml @@ -1,6 +1,21 @@ include: - local: .gitlab/ci/rails/shared.gitlab-ci.yml +db:setup pg14: + stage: prepare + needs: [] + extends: + - .use-pg14 + - .default-before_script + - .ruby-cache + - .rails:rules:setup-test-env + script: + - source scripts/utils.sh + - run_timed_command "pg_dumpall -h postgres -U postgres > pg_dumpall.sql" + artifacts: + paths: + - pg_dumpall.sql + db:rollback single-db-ci-connection: extends: - db:rollback diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml index b7cb464675fb562cae9e40cf90fd0a9e374f3506..ddbbbac9b00e3a8bbbf6f2632c48448c33646f68 100644 --- a/.gitlab/ci/rails/shared.gitlab-ci.yml +++ b/.gitlab/ci/rails/shared.gitlab-ci.yml @@ -210,6 +210,10 @@ include: - !reference [.rspec-base, after_script] .rspec-base-pg14: + needs: + - !reference [.rspec-base, needs] + - job: "db:setup pg14" + optional: true extends: - .rspec-base - .use-pg14 diff --git a/scripts/utils.sh b/scripts/utils.sh index e93fdb96b4db0a23cd4436a62dcaaeb60daf625e..d8b2ff466dd0f93957b319b4797c9e0332b537f0 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -198,6 +198,16 @@ function setup_db_praefect() { function setup_db() { section_start "setup-db" "Setting up DBs" + if [ -f pg_dumpall.sql ]; then + echo "Found pg_dumpall.sql, applying!" + + psql -h postgres -U postgres -q < pg_dumpall.sql > /dev/null + rm pg_dumpall.sql + + section_end "setup-db" + return 0 + fi + setup_db_user_only run_timed_command_with_metric "bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes" "setup_db" setup_db_praefect