diff options
Diffstat (limited to 'lib/tasks')
-rw-r--r-- | lib/tasks/gettext.rake | 2 | ||||
-rw-r--r-- | lib/tasks/gitlab/assets.rake | 2 | ||||
-rw-r--r-- | lib/tasks/gitlab/backup.rake | 4 | ||||
-rw-r--r-- | lib/tasks/gitlab/db.rake | 34 | ||||
-rw-r--r-- | lib/tasks/gitlab/web_hook.rake | 5 |
5 files changed, 40 insertions, 7 deletions
diff --git a/lib/tasks/gettext.rake b/lib/tasks/gettext.rake index 1e28d15f75e..e2c92054d62 100644 --- a/lib/tasks/gettext.rake +++ b/lib/tasks/gettext.rake @@ -38,7 +38,7 @@ namespace :gettext do Rake::Task['gettext:find'].invoke # leave only the required changes. - unless system(*%w(git checkout -- locale/*/gitlab.po)) + unless system(*%w(git -c core.hooksPath=/dev/null checkout -- locale/*/gitlab.po)) raise 'failed to cleanup generated locale/*/gitlab.po files' end diff --git a/lib/tasks/gitlab/assets.rake b/lib/tasks/gitlab/assets.rake index caa583fb3a9..ab2d77eeaf0 100644 --- a/lib/tasks/gitlab/assets.rake +++ b/lib/tasks/gitlab/assets.rake @@ -81,7 +81,7 @@ namespace :gitlab do if head_assets_md5 != master_assets_md5 || !public_assets_webpack_dir_exists FileUtils.rm_r(Tasks::Gitlab::Assets::PUBLIC_ASSETS_WEBPACK_DIR) if public_assets_webpack_dir_exists - Rake::Task['webpack:compile'].invoke + system('yarn webpack') end end diff --git a/lib/tasks/gitlab/backup.rake b/lib/tasks/gitlab/backup.rake index 2a3713ed85c..de2dfca8c1b 100644 --- a/lib/tasks/gitlab/backup.rake +++ b/lib/tasks/gitlab/backup.rake @@ -107,7 +107,7 @@ namespace :gitlab do puts "GITLAB_BACKUP_MAX_CONCURRENCY and GITLAB_BACKUP_MAX_STORAGE_CONCURRENCY must have a value of at least 1".color(:red) exit 1 else - Backup::Repository.new(progress).dump( + Backup::Repositories.new(progress).dump( max_concurrency: max_concurrency, max_storage_concurrency: max_storage_concurrency ) @@ -117,7 +117,7 @@ namespace :gitlab do task restore: :gitlab_environment do puts_time "Restoring repositories ...".color(:blue) - Backup::Repository.new(progress).restore + Backup::Repositories.new(progress).restore puts_time "done".color(:green) end end diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake index 425f66918b0..a3f20f31f64 100644 --- a/lib/tasks/gitlab/db.rake +++ b/lib/tasks/gitlab/db.rake @@ -35,6 +35,11 @@ namespace :gitlab do # Truncate schema_migrations to ensure migrations re-run connection.execute('TRUNCATE schema_migrations') if connection.table_exists? 'schema_migrations' + # Drop any views + connection.views.each do |view| + connection.execute("DROP VIEW IF EXISTS #{connection.quote_table_name(view)} CASCADE") + end + # Drop tables with cascade to avoid dependent table errors # PG: http://www.postgresql.org/docs/current/static/ddl-depend.html # Add `IF EXISTS` because cascade could have already deleted a table. @@ -60,6 +65,19 @@ namespace :gitlab do end end + desc 'GitLab | DB | Run database migrations and print `unattended_migrations_completed` if action taken' + task unattended: :environment do + no_database = !ActiveRecord::Base.connection.schema_migration.table_exists? + needs_migrations = ActiveRecord::Base.connection.migration_context.needs_migration? + + if no_database || needs_migrations + Rake::Task['gitlab:db:configure'].invoke + puts "unattended_migrations_completed" + else + puts "unattended_migrations_static" + end + end + desc 'GitLab | DB | Checks if migrations require downtime or not' task :downtime_check, [:ref] => :environment do |_, args| abort 'You must specify a Git reference to compare with' unless args[:ref] @@ -169,9 +187,21 @@ namespace :gitlab do desc 'reindex a regular (non-unique) index without downtime to eliminate bloat' task :reindex, [:index_name] => :environment do |_, args| - raise ArgumentError, 'must give the index name to reindex' unless args[:index_name] + unless Feature.enabled?(:database_reindexing, type: :ops) + puts "This feature (database_reindexing) is currently disabled.".color(:yellow) + exit + end + + indexes = if args[:index_name] + [Gitlab::Database::PostgresIndex.by_identifier(args[:index_name])] + else + Gitlab::Database::Reindexing.candidate_indexes.random_few(2) + end - Gitlab::Database::ConcurrentReindex.new(args[:index_name], logger: Logger.new(STDOUT)).execute + Gitlab::Database::Reindexing.perform(indexes) + rescue => e + Gitlab::AppLogger.error(e) + raise end end end diff --git a/lib/tasks/gitlab/web_hook.rake b/lib/tasks/gitlab/web_hook.rake index 0b98755a77c..b242329d720 100644 --- a/lib/tasks/gitlab/web_hook.rake +++ b/lib/tasks/gitlab/web_hook.rake @@ -37,7 +37,10 @@ namespace :gitlab do web_hooks.find_each do |hook| next unless hook.url == web_hook_url - hook.destroy! + result = WebHooks::DestroyService.new(nil).sync_destroy(hook) + + raise "Unable to destroy Web hook" unless result[:status] == :success + count += 1 end |