diff options
author | Mike Greiling <mike@pixelcog.com> | 2018-10-02 21:55:26 +0300 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2018-10-02 21:55:26 +0300 |
commit | 9ab5910065c22b6e26fd7906d32bf457f3abb07d (patch) | |
tree | d826132980736f0fb2fe21fddfe89d91bb99d241 | |
parent | eda6b43cbe50a1217a35d9d173379fd41a36534f (diff) | |
parent | 685d579472018c968e785d7d49ec7f84f7438e97 (diff) |
Merge branch 'leipert-frontend-danger' into 'master'
Danger checks for the frontend
See merge request gitlab-org/gitlab-ce!21859
-rw-r--r-- | .gitlab-ci.yml | 4 | ||||
-rw-r--r-- | Dangerfile | 2 | ||||
-rw-r--r-- | danger/eslint/Dangerfile | 29 | ||||
-rw-r--r-- | danger/prettier/Dangerfile | 39 |
4 files changed, 73 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c5b40dce21..02a9f399193 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -444,10 +444,10 @@ setup-test-env: - vendor/gitaly-ruby danger-review: + <<: *pull-cache image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger stage: test allow_failure: true - cache: {} dependencies: [] before_script: [] only: @@ -461,6 +461,8 @@ danger-review: - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ script: - git version + - node --version + - yarn install --frozen-lockfile --cache-folder .yarn-cache - danger --fail-on-errors=true rspec-pg 0 30: *rspec-metadata-pg diff --git a/Dangerfile b/Dangerfile index 46e53edcac4..10caacff4c4 100644 --- a/Dangerfile +++ b/Dangerfile @@ -7,3 +7,5 @@ danger.import_dangerfile(path: 'danger/database') danger.import_dangerfile(path: 'danger/documentation') danger.import_dangerfile(path: 'danger/frozen_string') danger.import_dangerfile(path: 'danger/commit_messages') +danger.import_dangerfile(path: 'danger/prettier') +danger.import_dangerfile(path: 'danger/eslint') diff --git a/danger/eslint/Dangerfile b/danger/eslint/Dangerfile new file mode 100644 index 00000000000..f78488cfd0a --- /dev/null +++ b/danger/eslint/Dangerfile @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +def get_eslint_files(files) + files.select do |file| + file.end_with?('.js', '.vue') && + File.read(file).include?('/* eslint-disable') + end +end + +eslint_candidates = get_eslint_files(git.added_files + git.modified_files) + +return if eslint_candidates.empty? + +warn 'This merge request changed files with disabled eslint rules. Please consider fixing them.' + +markdown(<<~MARKDOWN) + ## Disabled eslint rules + + The following files have disabled `eslint` rules. Please consider fixing them: + + * #{eslint_candidates.map { |path| "`#{path}`" }.join("\n* ")} + + Run the following command for more details + + ``` + node_modules/.bin/eslint --report-unused-disable-directives --no-inline-config \\ + #{eslint_candidates.map { |path| " '#{path}'" }.join(" \\\n")} + ``` +MARKDOWN diff --git a/danger/prettier/Dangerfile b/danger/prettier/Dangerfile new file mode 100644 index 00000000000..86f9f6af475 --- /dev/null +++ b/danger/prettier/Dangerfile @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +def get_prettier_files(files) + files.select do |file| + file.end_with?('.js', '.scss', '.vue') + end +end + +prettier_candidates = get_prettier_files(git.added_files + git.modified_files) + +return if prettier_candidates.empty? + +unpretty = `node_modules/prettier/bin-prettier.js --list-different #{prettier_candidates.join(" ")}` + .split(/$/) + .map(&:strip) + .reject(&:empty?) + +return if unpretty.empty? + +warn 'This merge request changed frontend files without pretty printing them.' + +markdown(<<~MARKDOWN) + ## Pretty print Frontend files + + The following files should have been pretty printed with `prettier`: + + * #{unpretty.map { |path| "`#{path}`" }.join("\n* ")} + + Please run + + ``` + node_modules/.bin/prettier --write \\ + #{unpretty.map { |path| " '#{path}'" }.join(" \\\n")} + ``` + + Also consider auto-formatting [on-save]. + + [on-save]: https://docs.gitlab.com/ee/development/new_fe_guide/style/prettier.html +MARKDOWN |