summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2017-05-01 16:02:15 +0000
committerRobert Speicher <robert@gitlab.com>2017-05-01 16:02:15 +0000
commitf963f761b184398ecb281a769648d9f8dcecbcde (patch)
tree640821e0214c4b586e91c20293f855bde3385279
parent623eb34f1a54607d5da5e79a41ffa03de2ae3285 (diff)
parent9b3f728cca163e1e6c0a67b932bbd04f74896d87 (diff)
downloadgitlab-ce-f963f761b184398ecb281a769648d9f8dcecbcde.tar.gz
Merge branch '31463-group-all-linters' into 'master'
Resolve "Consider grouping all static analysis jobs into a single one" Closes #31463 See merge request !10946
-rw-r--r--.gitlab-ci.yml66
-rwxr-xr-xscripts/lint-doc.sh1
-rwxr-xr-xscripts/static-analysis40
3 files changed, 61 insertions, 46 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ddc2c5f2542..dab1b220bfb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -253,38 +253,32 @@ spinach mysql 9 10: *spinach-knapsack-mysql
SETUP_DB: "false"
USE_BUNDLE_INSTALL: "true"
-.exec: &exec
+.rake-exec: &rake-exec
<<: *ruby-static-analysis
<<: *dedicated-runner
<<: *except-docs
stage: test
script:
- - bundle exec $CI_JOB_NAME
+ - bundle exec rake $CI_JOB_NAME
-rubocop:
+static-analysis:
<<: *ruby-static-analysis
<<: *dedicated-runner
<<: *except-docs
stage: test
script:
- - bundle exec "rubocop --require rubocop-rspec"
-
-rake haml_lint: *exec
-rake scss_lint: *exec
-rake config_lint: *exec
-rake brakeman: *exec
-rake flay: *exec
-license_finder: *exec
-rake downtime_check:
- <<: *exec
+ - scripts/static-analysis
+
+downtime_check:
+ <<: *rake-exec
except:
- master
- tags
- /^[\d-]+-stable(-ee)?$/
- /^docs\/*/
-rake ee_compat_check:
- <<: *exec
+ee_compat_check:
+ <<: *rake-exec
only:
- branches@gitlab-org/gitlab-ce
except:
@@ -309,12 +303,12 @@ rake ee_compat_check:
script:
- bundle exec rake db:migrate:reset
-rake pg db:migrate:reset:
+db:migrate:reset pg:
<<: *db-migrate-reset
<<: *use-pg
<<: *except-docs
-rake mysql db:migrate:reset:
+db:migrate:reset mysql:
<<: *db-migrate-reset
<<: *use-mysql
<<: *except-docs
@@ -326,12 +320,12 @@ rake mysql db:migrate:reset:
- bundle exec rake db:rollback STEP=120
- bundle exec rake db:migrate
-rake pg db:rollback:
+db:rollback pg:
<<: *db-rollback
<<: *use-pg
<<: *except-docs
-rake mysql db:rollback:
+db:rollback mysql:
<<: *db-rollback
<<: *use-mysql
<<: *except-docs
@@ -353,17 +347,17 @@ rake mysql db:rollback:
paths:
- log/development.log
-rake pg db:seed_fu:
+db:seed_fu pg:
<<: *db-seed_fu
<<: *use-pg
<<: *except-docs
-rake mysql db:seed_fu:
+db:seed_fu mysql:
<<: *db-seed_fu
<<: *use-mysql
<<: *except-docs
-rake gitlab:assets:compile:
+gitlab:assets:compile:
stage: test
<<: *dedicated-runner
<<: *except-docs
@@ -383,7 +377,7 @@ rake gitlab:assets:compile:
paths:
- webpack-report/
-rake karma:
+karma:
cache:
paths:
- vendor/ruby
@@ -402,16 +396,6 @@ rake karma:
paths:
- coverage-javascript/
-docs:check:apilint:
- image: "phusion/baseimage"
- stage: test
- <<: *dedicated-runner
- cache: {}
- dependencies: []
- before_script: []
- script:
- - scripts/lint-doc.sh
-
docs:check:links:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:nanoc-bootstrap-ruby-2.4-alpine"
stage: test
@@ -459,11 +443,11 @@ bundler:audit:
- . scripts/prepare_build.sh
- bundle exec rake db:migrate
-migration pg paths:
+migration path pg:
<<: *migration-paths
<<: *use-pg
-migration mysql paths:
+migration path mysql:
<<: *migration-paths
<<: *use-mysql
@@ -485,14 +469,6 @@ coverage:
- coverage/index.html
- coverage/assets/
-lint:javascript:
- <<: *dedicated-runner
- <<: *except-docs
- stage: test
- before_script: []
- script:
- - yarn run eslint
-
lint:javascript:report:
<<: *dedicated-runner
<<: *except-docs
@@ -548,8 +524,8 @@ pages:
<<: *dedicated-runner
dependencies:
- coverage
- - rake karma
- - rake gitlab:assets:compile
+ - karma
+ - gitlab:assets:compile
- lint:javascript:report
script:
- mv public/ .public/
diff --git a/scripts/lint-doc.sh b/scripts/lint-doc.sh
index 62236ed539a..54c1ef3dfdd 100755
--- a/scripts/lint-doc.sh
+++ b/scripts/lint-doc.sh
@@ -21,4 +21,3 @@ fi
echo "✔ Linting passed"
exit 0
-
diff --git a/scripts/static-analysis b/scripts/static-analysis
new file mode 100755
index 00000000000..192d9d4c3ba
--- /dev/null
+++ b/scripts/static-analysis
@@ -0,0 +1,40 @@
+#!/usr/bin/env ruby
+
+require ::File.expand_path('../lib/gitlab/popen', __dir__)
+
+tasks = [
+ %w[bundle exec rake config_lint],
+ %w[bundle exec rake flay],
+ %w[bundle exec rake haml_lint],
+ %w[bundle exec rake scss_lint],
+ %w[bundle exec rake brakeman],
+ %w[bundle exec license_finder],
+ %w[scripts/lint-doc.sh],
+ %w[yarn run eslint],
+ %w[bundle exec rubocop --require rubocop-rspec]
+]
+
+failed_tasks = tasks.reduce({}) do |failures, task|
+ output, status = Gitlab::Popen.popen(task)
+
+ puts "Running: #{task.join(' ')}"
+ puts output
+
+ failures[task.join(' ')] = output unless status.zero?
+
+ failures
+end
+
+if failed_tasks.empty?
+ puts 'All static analyses passed successfully.'
+else
+ puts "\n===================================================\n\n"
+ puts "Some static analyses failed:"
+
+ failed_tasks.each do |failed_task, output|
+ puts "\n**** #{failed_task} failed with the following error:\n\n"
+ puts output
+ end
+
+ exit 1
+end