Merge branch 'fix/database-seeds' into 'master'
Fix database seeds for development environment ## What does this MR do? This MR fixes database seeds for development environment and adds CI test for it. ## Why was this MR needed? Database seeds for development environment are often broken, and we are not able to catch that when someone modified `db/fixtures` and forgets to reseed database. Closes #22422 See merge request !6475
This commit is contained in:
commit
c2b8063fda
4 changed files with 28 additions and 18 deletions
|
@ -12,7 +12,7 @@ variables:
|
|||
RSPEC_RETRY_RETRY_COUNT: "3"
|
||||
RAILS_ENV: "test"
|
||||
SIMPLECOV: "true"
|
||||
USE_DB: "true"
|
||||
SETUP_DB: "true"
|
||||
USE_BUNDLE_INSTALL: "true"
|
||||
GIT_DEPTH: "20"
|
||||
PHANTOMJS_VERSION: "2.1.1"
|
||||
|
@ -23,7 +23,7 @@ before_script:
|
|||
- bundle --version
|
||||
- '[ "$USE_BUNDLE_INSTALL" != "true" ] || retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}"'
|
||||
- retry gem install knapsack
|
||||
- '[ "$USE_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate'
|
||||
- '[ "$SETUP_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate'
|
||||
|
||||
stages:
|
||||
- prepare
|
||||
|
@ -35,7 +35,7 @@ stages:
|
|||
.knapsack-state: &knapsack-state
|
||||
services: []
|
||||
variables:
|
||||
USE_DB: "false"
|
||||
SETUP_DB: "false"
|
||||
USE_BUNDLE_INSTALL: "false"
|
||||
cache:
|
||||
key: "knapsack"
|
||||
|
@ -196,7 +196,7 @@ spinach 9 10 ruby21: *spinach-knapsack-ruby21
|
|||
.ruby-static-analysis: &ruby-static-analysis
|
||||
variables:
|
||||
SIMPLECOV: "false"
|
||||
USE_DB: "false"
|
||||
SETUP_DB: "false"
|
||||
USE_BUNDLE_INSTALL: "true"
|
||||
|
||||
.exec: &exec
|
||||
|
@ -224,6 +224,23 @@ rake db:migrate:reset:
|
|||
script:
|
||||
- rake db:migrate:reset
|
||||
|
||||
rake db:seed_fu:
|
||||
stage: test
|
||||
<<: *use-db
|
||||
variables:
|
||||
SIZE: "1"
|
||||
SETUP_DB: "false"
|
||||
RAILS_ENV: "development"
|
||||
script:
|
||||
- git clone https://gitlab.com/gitlab-org/gitlab-test.git
|
||||
/home/git/repositories/gitlab-org/gitlab-test.git
|
||||
- bundle exec rake db:setup db:seed_fu
|
||||
artifacts:
|
||||
when: on_failure
|
||||
expire_in: 1d
|
||||
paths:
|
||||
- log/development.log
|
||||
|
||||
teaspoon:
|
||||
stage: test
|
||||
<<: *use-db
|
||||
|
@ -272,7 +289,7 @@ coverage:
|
|||
stage: post-test
|
||||
services: []
|
||||
variables:
|
||||
USE_DB: "false"
|
||||
SETUP_DB: "false"
|
||||
USE_BUNDLE_INSTALL: "true"
|
||||
script:
|
||||
- bundle exec scripts/merge-simplecov
|
||||
|
@ -288,7 +305,7 @@ coverage:
|
|||
notify:slack:
|
||||
stage: post-test
|
||||
variables:
|
||||
USE_DB: "false"
|
||||
SETUP_DB: "false"
|
||||
USE_BUNDLE_INSTALL: "false"
|
||||
script:
|
||||
- ./scripts/notify_slack.sh "#builds" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See <https://gitlab.com/gitlab-org/$(basename "$PWD")/commit/"$CI_BUILD_REF"/builds>"
|
||||
|
|
|
@ -91,7 +91,7 @@ module Ci
|
|||
sha: build.sha,
|
||||
ref: build.ref,
|
||||
tag: build.tag,
|
||||
options: build.options[:environment],
|
||||
options: build.options.to_h[:environment],
|
||||
variables: build.variables)
|
||||
service.execute(build)
|
||||
end
|
||||
|
|
|
@ -3,11 +3,11 @@ require 'sidekiq/testing'
|
|||
Sidekiq::Testing.inline! do
|
||||
Gitlab::Seeder.quiet do
|
||||
project_urls = [
|
||||
'https://github.com/documentcloud/underscore.git',
|
||||
'https://gitlab.com/gitlab-org/gitlab-test.git',
|
||||
'https://gitlab.com/gitlab-org/gitlab-ce.git',
|
||||
'https://gitlab.com/gitlab-org/gitlab-ci.git',
|
||||
'https://gitlab.com/gitlab-org/gitlab-shell.git',
|
||||
'https://gitlab.com/gitlab-org/gitlab-test.git',
|
||||
'https://github.com/documentcloud/underscore.git',
|
||||
'https://github.com/twitter/flight.git',
|
||||
'https://github.com/twitter/typeahead.js.git',
|
||||
'https://github.com/h5bp/html5-boilerplate.git',
|
||||
|
@ -38,12 +38,7 @@ Sidekiq::Testing.inline! do
|
|||
]
|
||||
|
||||
# You can specify how many projects you need during seed execution
|
||||
size = if ENV['SIZE'].present?
|
||||
ENV['SIZE'].to_i
|
||||
else
|
||||
8
|
||||
end
|
||||
|
||||
size = ENV['SIZE'].present? ? ENV['SIZE'].to_i : 8
|
||||
|
||||
project_urls.first(size).each_with_index do |url, i|
|
||||
group_path, project_path = url.split('/')[-2..-1]
|
||||
|
|
|
@ -59,10 +59,8 @@ module Gitlab
|
|||
# When the DBMS is not available, an exception (e.g. PG::ConnectionBad) is raised
|
||||
active_db_connection = ActiveRecord::Base.connection.active? rescue false
|
||||
|
||||
ENV['USE_DB'] != 'false' &&
|
||||
active_db_connection &&
|
||||
ActiveRecord::Base.connection.table_exists?('application_settings')
|
||||
|
||||
ActiveRecord::Base.connection.table_exists?('application_settings')
|
||||
rescue ActiveRecord::NoDatabaseError
|
||||
false
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue