diff options
author | Simon Knox <psimyn@gmail.com> | 2018-02-07 20:05:38 +1100 |
---|---|---|
committer | Simon Knox <psimyn@gmail.com> | 2018-02-07 20:05:38 +1100 |
commit | 4e91d397833eb10e9eb64a48387c441be2922dfb (patch) | |
tree | 079cbe95e6b0ac773987dd2ccedb98b1ded9681b /scripts | |
parent | b68e473e7bb2b64e1a36c54f9ced10ffe5a96763 (diff) | |
parent | 4457cf9d178dc9912fd9c16427ad81b389179d00 (diff) | |
download | gitlab-ce-snake-case.tar.gz |
Merge branch 'master' into snake-casesnake-case
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/gitaly-test-build | 16 | ||||
-rwxr-xr-x | scripts/lint-rugged | 34 | ||||
-rw-r--r-- | scripts/prepare_build.sh | 2 | ||||
-rwxr-xr-x | scripts/static-analysis | 60 |
4 files changed, 90 insertions, 22 deletions
diff --git a/scripts/gitaly-test-build b/scripts/gitaly-test-build index 95d9fe0f176..b42ae2a2595 100755 --- a/scripts/gitaly-test-build +++ b/scripts/gitaly-test-build @@ -9,11 +9,21 @@ require 'fileutils' # called 'bundle install' using a different Gemfile, as happens with # gitlab-ce and gitaly. -dir = 'tmp/tests/gitaly' +tmp_tests_gitaly_dir = File.expand_path('../tmp/tests/gitaly', __dir__) -abort 'gitaly build failed' unless system('make', chdir: dir) +# Use the top-level bundle vendor folder so that we don't reinstall gems twice +bundle_vendor_path = File.expand_path('../vendor', __dir__) + +env = { + # This ensure the `clean` config set in `scripts/prepare_build.sh` isn't taken into account + 'BUNDLE_IGNORE_CONFIG' => 'true', + 'BUNDLE_GEMFILE' => File.join(tmp_tests_gitaly_dir, 'ruby', 'Gemfile'), + 'BUNDLE_FLAGS' => "--jobs=4 --path=#{bundle_vendor_path} --retry=3" +} + +abort 'gitaly build failed' unless system(env, 'make', chdir: tmp_tests_gitaly_dir) # Make the 'gitaly' executable look newer than 'GITALY_SERVER_VERSION'. # Without this a gitaly executable created in the setup-test-env job # will look stale compared to GITALY_SERVER_VERSION. -FileUtils.touch(File.join(dir, 'gitaly'), mtime: Time.now + (1 << 24)) +FileUtils.touch(File.join(tmp_tests_gitaly_dir, 'gitaly'), mtime: Time.now + (1 << 24)) diff --git a/scripts/lint-rugged b/scripts/lint-rugged new file mode 100755 index 00000000000..cabd083e9f9 --- /dev/null +++ b/scripts/lint-rugged @@ -0,0 +1,34 @@ +#!/usr/bin/env ruby + +ALLOWED = [ + # Can be fixed once Rugged is no longer used in production. Doesn't make Rugged calls. + 'config/initializers/8_metrics.rb', + + # Can be deleted once wiki's are fully (mandatory) migrated + 'config/initializers/gollum.rb', + + # Needs to be migrated, https://gitlab.com/gitlab-org/gitaly/issues/953 + 'lib/gitlab/bare_repository_import/repository.rb', + + # Needs to be migrated, https://gitlab.com/gitlab-org/gitaly/issues/954 + 'lib/tasks/gitlab/cleanup.rake', + + # The only place where Rugged code is still allowed in production + 'lib/gitlab/git/' +].freeze + +rugged_lines = IO.popen(%w[git grep -i -n rugged -- app config lib], &:read).lines +rugged_lines = rugged_lines.select { |l| /^[^:]*\.rb:/ =~ l } +rugged_lines = rugged_lines.reject { |l| l.start_with?(*ALLOWED) } +rugged_lines = rugged_lines.reject do |line| + code, _comment = line.split('# ', 2) + code !~ /rugged/i +end + +exit if rugged_lines.empty? + +puts "Using Rugged is only allowed in test and #{ALLOWED}\n\n" + +puts rugged_lines + +exit(false) diff --git a/scripts/prepare_build.sh b/scripts/prepare_build.sh index ea406aadf39..206d62dbc78 100644 --- a/scripts/prepare_build.sh +++ b/scripts/prepare_build.sh @@ -3,7 +3,7 @@ export SETUP_DB=${SETUP_DB:-true} export CREATE_DB_USER=${CREATE_DB_USER:-$SETUP_DB} export USE_BUNDLE_INSTALL=${USE_BUNDLE_INSTALL:-true} -export BUNDLE_INSTALL_FLAGS="--without production --jobs $(nproc) --path vendor --retry 3 --quiet" +export BUNDLE_INSTALL_FLAGS="--without=production --jobs=$(nproc) --path=vendor --retry=3 --quiet" if [ "$USE_BUNDLE_INSTALL" != "false" ]; then bundle install --clean $BUNDLE_INSTALL_FLAGS && bundle check diff --git a/scripts/static-analysis b/scripts/static-analysis index 9690b42c788..bdb88f3cb57 100755 --- a/scripts/static-analysis +++ b/scripts/static-analysis @@ -1,6 +1,29 @@ #!/usr/bin/env ruby -require ::File.expand_path('../lib/gitlab/popen', __dir__) +# We don't have auto-loading here +require_relative '../lib/gitlab/popen' +require_relative '../lib/gitlab/popen/runner' + +def emit_warnings(static_analysis) + static_analysis.warned_results.each do |result| + puts + puts "**** #{result.cmd.join(' ')} had the following warnings:" + puts + puts result.stderr + puts + end +end + +def emit_errors(static_analysis) + static_analysis.failed_results.each do |result| + puts + puts "**** #{result.cmd.join(' ')} failed with the following error:" + puts + puts result.stdout + puts result.stderr + puts + end +end tasks = [ %w[bundle exec rake config_lint], @@ -12,22 +35,20 @@ tasks = [ %w[bundle exec rubocop --parallel], %w[bundle exec rake gettext:lint], %w[bundle exec rake lint:static_verification], - %w[scripts/lint-changelog-yaml], - %w[scripts/lint-conflicts.sh] + %w[scripts/lint-conflicts.sh], + %w[scripts/lint-rugged] ] -failed_tasks = tasks.reduce({}) do |failures, task| - start = Time.now - puts - puts "$ #{task.join(' ')}" +static_analysis = Gitlab::Popen::Runner.new - output, status = Gitlab::Popen.popen(task) - puts "==> Finished in #{Time.now - start} seconds" +static_analysis.run(tasks) do |cmd, &run| puts + puts "$ #{cmd.join(' ')}" - failures[task.join(' ')] = output unless status.zero? + result = run.call - failures + puts "==> Finished in #{result.duration} seconds" + puts end puts @@ -35,17 +56,20 @@ puts '===================================================' puts puts -if failed_tasks.empty? +if static_analysis.all_success_and_clean? puts 'All static analyses passed successfully.' +elsif static_analysis.all_success? + puts 'All static analyses passed successfully, but we have warnings:' + puts + + emit_warnings(static_analysis) + + exit 2 else puts 'Some static analyses failed:' - failed_tasks.each do |failed_task, output| - puts - puts "**** #{failed_task} failed with the following error:" - puts - puts output - end + emit_warnings(static_analysis) + emit_errors(static_analysis) exit 1 end |