Add Danger-Cobertura
This commit is contained in:
parent
2a2ce224b8
commit
3c5e08bced
|
@ -21,7 +21,6 @@ stages:
|
|||
- bot
|
||||
- analyze
|
||||
- build
|
||||
- startReview
|
||||
- test
|
||||
- report
|
||||
- publish
|
||||
|
@ -34,11 +33,11 @@ variables:
|
|||
# Output upload and download progress every 5 seconds
|
||||
TRANSFER_METER_FREQUENCY: "5s"
|
||||
# Use no compression for artifacts
|
||||
ARTIFACT_COMPRESSION_LEVEL: "fast"
|
||||
# Use no compression for caches
|
||||
CACHE_COMPRESSION_LEVEL: "fastest"
|
||||
ARTIFACT_COMPRESSION_LEVEL: "fastest"
|
||||
# Use low compression for caches
|
||||
CACHE_COMPRESSION_LEVEL: "fast"
|
||||
|
||||
cache:
|
||||
cache: &global_cache
|
||||
key: ${CI_COMMIT_REF_SLUG}
|
||||
paths:
|
||||
- .gradle/caches/modules-*
|
||||
|
@ -48,7 +47,7 @@ cache:
|
|||
#####################
|
||||
danger-review:
|
||||
image: ruby:2.7
|
||||
stage: analyze
|
||||
stage: .post
|
||||
when: always
|
||||
tags:
|
||||
- small
|
||||
|
@ -63,15 +62,17 @@ danger-review:
|
|||
- Gemfile.lock
|
||||
paths:
|
||||
- vendor/ruby
|
||||
allow_failure: true
|
||||
variables:
|
||||
DANGER_GITLAB_API_TOKEN: $DANGER_GITLAB_API_TOKEN
|
||||
interruptible: true
|
||||
|
||||
detekt analysis:
|
||||
detekt analyze:
|
||||
stage: analyze
|
||||
when: always
|
||||
tags:
|
||||
- medium
|
||||
interruptible: true
|
||||
script:
|
||||
- ./gradlew multiModuleDetekt
|
||||
artifacts:
|
||||
|
@ -83,10 +84,11 @@ assemble:
|
|||
stage: build
|
||||
tags:
|
||||
- large
|
||||
interruptible: true
|
||||
script:
|
||||
- echo PROXY_TOKEN="$(curl -o - https://proxy.proton.black/token/get)" >> local.properties
|
||||
- echo HOST="proton.black" >> local.properties
|
||||
- ./gradlew assemble
|
||||
- ./gradlew assembleDebug
|
||||
artifacts:
|
||||
paths:
|
||||
- coreexample/build/outputs/
|
||||
|
@ -95,6 +97,7 @@ debugTests:
|
|||
stage: test
|
||||
tags:
|
||||
- large
|
||||
interruptible: true
|
||||
script:
|
||||
- ./gradlew -Pci --console=plain allTest
|
||||
|
||||
|
@ -192,6 +195,7 @@ startReview:
|
|||
before_script:
|
||||
- export REVIEW_APP_ARTIFACT_PATH="coreexample/build/outputs/apk/debug/coreexample-debug.apk"
|
||||
extends: .startReview
|
||||
stage: test
|
||||
|
||||
stopReview:
|
||||
extends: .stopReview
|
||||
|
@ -204,11 +208,15 @@ coverage report:
|
|||
- ./gradlew coberturaCoverageReport
|
||||
coverage: /Total.*?(\d{1,3}\.\d{0,2})%/
|
||||
allow_failure: true
|
||||
interruptible: true
|
||||
cache:
|
||||
<<: *global_cache
|
||||
policy: pull
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- ./build/reports/*
|
||||
reports:
|
||||
cobertura:
|
||||
- ./**/build/reports/cobertura-coverage.xml
|
||||
- ./build/reports/cobertura-coverage.xml
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
require_relative 'ci/danger/assign_reviewers.rb'
|
||||
warn("Big PR") if git.insertions > 1000
|
||||
|
||||
warn("Big PR") if git.lines_of_code > 500
|
||||
random_reviewers.assign(["jmartin", "marmatys", "dkadrikj", "nmarietta", "vbrison"])
|
||||
|
||||
assign_reviewers(["jmartin", "marmatys", "dkadrikj", "nmarietta", "vbrison"])
|
||||
cobertura.report = "build/reports/cobertura-coverage.xml"
|
||||
cobertura.additional_headers = [:line, :branch]
|
||||
cobertura.warn_if_file_less_than(percentage: 50)
|
||||
cobertura.show_coverage
|
||||
|
|
2
Gemfile
2
Gemfile
|
@ -7,4 +7,6 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|||
# gem "rails"
|
||||
|
||||
gem "danger-gitlab", "~> 8.0"
|
||||
gem "danger-cobertura", :git => "https://github.com/ProtonMail/danger-cobertura_multimodule.git"
|
||||
gem "danger-random_reviewers", :git => "https://github.com/ProtonMail/danger-random_reviewers.git", branch: 'main'
|
||||
|
||||
|
|
20
Gemfile.lock
20
Gemfile.lock
|
@ -1,8 +1,18 @@
|
|||
GIT
|
||||
remote: git@gitlab.protontech.ch:jmartin/danger-cobertura.git
|
||||
revision: a03477098a850d8fc9fac3c0705e29749f4fce77
|
||||
specs:
|
||||
danger-cobertura (1.3.0)
|
||||
danger-plugin-api (~> 1.0)
|
||||
oga (~> 2.15)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
ansi (1.5.0)
|
||||
ast (2.4.2)
|
||||
claide (1.0.3)
|
||||
claide-plugins (0.9.2)
|
||||
cork
|
||||
|
@ -27,6 +37,8 @@ GEM
|
|||
danger-gitlab (8.0.0)
|
||||
danger
|
||||
gitlab (~> 4.2, >= 4.2.0)
|
||||
danger-plugin-api (1.0.0)
|
||||
danger (> 2.0)
|
||||
faraday (1.8.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
|
@ -70,10 +82,16 @@ GEM
|
|||
octokit (4.21.0)
|
||||
faraday (>= 0.9)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
oga (2.15)
|
||||
ast
|
||||
ruby-ll (~> 2.1)
|
||||
open4 (1.3.4)
|
||||
public_suffix (4.0.6)
|
||||
rchardet (1.8.0)
|
||||
rexml (3.2.5)
|
||||
ruby-ll (2.1.2)
|
||||
ansi
|
||||
ast
|
||||
ruby2_keywords (0.0.5)
|
||||
sawyer (0.8.2)
|
||||
addressable (>= 2.3.5)
|
||||
|
@ -83,9 +101,11 @@ GEM
|
|||
unicode-display_width (1.8.0)
|
||||
|
||||
PLATFORMS
|
||||
universal-darwin-20
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
danger-cobertura!
|
||||
danger-gitlab (~> 8.0)
|
||||
|
||||
BUNDLED WITH
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
# Auto assign reviewer(s) to the current merge request based on:
|
||||
# - Match assigned reviewers number to and required approvals number
|
||||
# - Filter out non active eligible reviewers (based on their GitLab status)
|
||||
# - Filter out from eligible reviewers reviewers provided in parameter reviewer_username_filter
|
||||
#
|
||||
# @param reviewer_username_filter Additional reviewer(s) to filter out from eligible reviewer.
|
||||
def assign_reviewers(reviewer_username_filter = [])
|
||||
current_reviewers = gitlab.mr_json["reviewers"]
|
||||
project_id = gitlab.mr_json["project_id"]
|
||||
mr_id = gitlab.mr_json["iid"]
|
||||
merge_request_approvals = gitlab.api.merge_request_approvals(project_id, mr_id)
|
||||
approvals_required = merge_request_approvals["approvals_required"]
|
||||
reviewers_to_add_count = approvals_required - current_reviewers.length
|
||||
|
||||
if reviewers_to_add_count <= 0
|
||||
p "No need to assign additional reviewer"
|
||||
return
|
||||
end
|
||||
|
||||
# Get all eligible reviewers
|
||||
eligible_reviewers = merge_request_approvals["approvers"].map { |approver| approver["user"] }
|
||||
|
||||
# Filter out MR author
|
||||
eligible_reviewers = eligible_reviewers.reject { |eligible_reviewer| eligible_reviewer["id"] == gitlab.mr_json["author"]["id"] }
|
||||
|
||||
# Filter out non active user
|
||||
eligible_reviewers = eligible_reviewers.reject { |eligible_reviewer| eligible_reviewer["state"] != "active" }
|
||||
|
||||
# Filter out current reviewers
|
||||
eligible_reviewers = eligible_reviewers.reject { |eligible_reviewer|
|
||||
current_reviewers.any? { |current_reviewer|
|
||||
current_reviewer["id"] == eligible_reviewer["id"]
|
||||
}
|
||||
}
|
||||
|
||||
# Filter reviewer by username if filter non empty
|
||||
if !reviewer_username_filter.empty?
|
||||
p "reviewer filter not empty, filtering eligible reviewers"
|
||||
eligible_reviewers = eligible_reviewers.reject { |eligible_reviewer|
|
||||
reviewer_username_filter.none? { |reviewer_username_to_keep|
|
||||
eligible_reviewer["username"] == reviewer_username_to_keep
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# Random pick reviewers to add
|
||||
if reviewers_to_add_count > eligible_reviewers.count
|
||||
warn("Not enough eligible reviewers (#{eligible_reviewers.count}) to add (#{reviewers_to_add_count}) to match required approvals (#{approvals_required})")
|
||||
end
|
||||
reviewers_to_add = eligible_reviewers.sample(reviewers_to_add_count)
|
||||
target_reviewer_ids = current_reviewers.map { |reviewer| reviewer["id"] } + reviewers_to_add.map { |reviewer| reviewer["id"] }
|
||||
|
||||
# Updating MR reviewers
|
||||
gitlab.api.update_merge_request(project_id, mr_id, { reviewer_ids: target_reviewer_ids })
|
||||
|
||||
# Posting on MR
|
||||
if !reviewers_to_add.empty?
|
||||
reviewers_to_add_link = reviewers_to_add.map { |reviewer| "@#{reviewer.to_hash["username"]}" }
|
||||
message("Assigned randomly for review #{reviewers_to_add_link.join(", ")}")
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue