gitlab-triage 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ce7441fc645df64325c4061299790c590bfbdcdb979dd53369f55231479f346
4
- data.tar.gz: 3ca3d8cb0d811e5d3e32e2870c0aaf0d671ba5b51fd819341eae831894b131e4
3
+ metadata.gz: 2f5db61219a126e4c43c284780d0d656c0ab1e28cd5bdda69e8f094f50364b81
4
+ data.tar.gz: abb1f46dd7ef999685e083b131a80fceceb923b033d8bbe396a1a3b2aa0ab2de
5
5
  SHA512:
6
- metadata.gz: 92e7edefb97e7849ff2228ab4d842a04583b11a4d24a1f64f553e58b8a850bfc17f1f5fd00e18b436bb2ad6e0b0558cff6e1ff5f98c7fea6cee398b6ced715bc
7
- data.tar.gz: 13bc2c8ac796534550dcef8164cd3ace9e5e99757f2f007e5c87c63b67943545ca4800a214798bd4387374b7fa3c3e49cd85682bc5db80665ce52ca1e22d61a8
6
+ metadata.gz: 0e5d9d0606b3d094b5284e2e67edd75eeec5604521ad54c5a7fea7de2a3c6a1a299b9ce28d11322e78eb72893ddd946b53a3fc134c4a0dd3095f747a642a19a7
7
+ data.tar.gz: 7f33b9a36ce2f8353782c0194c35dc17d414f27083c5c10e0b98c90742959cf4d71b105433f14d27f7db16bafb0af6b62015e2d684c0e76ed6619b441679cc76
data/.gitlab-ci.yml CHANGED
@@ -1,82 +1,109 @@
1
- image: ruby:2.4
1
+ image: ruby:2.6
2
2
 
3
3
  stages:
4
4
  - prepare
5
5
  - test
6
6
  - triage
7
7
 
8
- .default-cache-config: &default-cache-config
9
- key: "ruby-2.4"
10
- paths:
11
- - vendor/cache/
12
- - Gemfile.lock
8
+ .default-only:
9
+ only:
10
+ refs:
11
+ - master
12
+ - merge_requests
13
+ - tags
13
14
 
14
- .pull-cache: &pull-cache
15
- cache:
16
- <<: *default-cache-config
17
- policy: pull
18
-
19
- before_script:
20
- - gem install bundler
21
- - bundle --version
22
- - bundle update --jobs $(nproc) --retry 3 --quiet
15
+ .default-before_script:
16
+ before_script:
17
+ - gem install bundler --no-document
18
+ - bundle install --jobs $(nproc) --retry 3 --quiet
23
19
 
24
20
  ###################
25
21
  ## Prepare stage ##
26
22
  ###################
27
23
  setup-test-env:
24
+ extends: .default-only
28
25
  stage: prepare
29
26
  script:
30
- - echo "All set!"
27
+ - ruby --version
28
+ - gem install bundler --no-document
29
+ - bundle --version
30
+ - bundle install --clean --jobs $(nproc) --path=vendor --retry=3 --quiet
31
+ - bundle check
31
32
  cache:
32
- <<: *default-cache-config
33
+ key: "$CI_JOB_NAME-ruby-2.6"
34
+ paths:
35
+ - vendor/ruby
36
+ - Gemfile.lock
33
37
  artifacts:
34
38
  paths:
35
- - vendor/cache/
39
+ - vendor/ruby
36
40
  - Gemfile.lock
37
41
 
38
42
  ################
39
43
  ## Test stage ##
40
44
  ################
41
- styles:
42
- <<: *pull-cache
43
- stage: test
44
- script:
45
- - bundle exec rubocop
46
-
47
- specs:
48
- <<: *pull-cache
45
+ rubocop:
46
+ extends: [".default-only", ".default-before_script"]
49
47
  stage: test
48
+ needs: ["setup-test-env"]
49
+ dependencies: ["setup-test-env"]
50
50
  script:
51
- - bundle exec rake spec
51
+ - bundle exec rubocop --parallel
52
+ cache:
53
+ key: "$CI_JOB_NAME"
54
+ paths:
55
+ - .cache/rubocop_cache/
52
56
 
53
- codequality:
54
- <<: *pull-cache
55
- image: docker:latest
57
+ # We need to copy this job's definition from the Code-Quality.gitlab-ci.yml
58
+ # template because `only` is set without `refs`, so it takes precedence over `.default-only`.
59
+ # See https://gitlab.com/gitlab-org/gitlab-ce/issues/66767.
60
+ code_quality:
61
+ extends: .default-only
62
+ needs: ["setup-test-env"]
63
+ dependencies: ["setup-test-env"]
56
64
  stage: test
57
- variables:
58
- DOCKER_DRIVER: overlay
65
+ image: docker:stable
66
+ allow_failure: true
59
67
  services:
60
- - docker:dind
61
- before_script: []
68
+ - docker:stable-dind
69
+ variables:
70
+ DOCKER_DRIVER: overlay2
71
+ DOCKER_TLS_CERTDIR: ""
62
72
  script:
73
+ - |
74
+ if ! docker info &>/dev/null; then
75
+ if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then
76
+ export DOCKER_HOST='tcp://localhost:2375'
77
+ fi
78
+ fi
63
79
  - docker run
64
- --env CODECLIMATE_CODE="$PWD"
80
+ --env SOURCE_CODE="$PWD"
65
81
  --volume "$PWD":/code
66
82
  --volume /var/run/docker.sock:/var/run/docker.sock
67
- --volume /tmp/cc:/tmp/cc
68
- dev.gitlab.org:5005/gitlab/gitlab-build-images:gitlab-codeclimate
69
- analyze -f json > raw_codeclimate.json
70
- - cat raw_codeclimate.json | docker run -i stedolan/jq -c 'map({check_name,fingerprint,location})' > codeclimate.json
83
+ "registry.gitlab.com/gitlab-org/security-products/codequality:12-0-stable" /code
71
84
  artifacts:
72
- paths:
73
- - codeclimate.json
85
+ reports:
86
+ codequality: gl-code-quality-report.json
87
+ expire_in: 1 week
88
+ except:
89
+ variables:
90
+ - $CODE_QUALITY_DISABLED
91
+
92
+ specs:
93
+ extends: [".default-only", ".default-before_script"]
94
+ needs: ["setup-test-env"]
95
+ dependencies: ["setup-test-env"]
96
+ stage: test
97
+ script:
98
+ - bundle exec rake spec
74
99
 
75
100
  ##################
76
101
  ## Triage stage ##
77
102
  ##################
78
103
  dry-run:gitlab-triage:
79
- <<: *pull-cache
104
+ extends: [".default-only", ".default-before_script"]
105
+ needs: ["setup-test-env"]
106
+ dependencies: ["setup-test-env"]
80
107
  stage: triage
81
108
  script:
82
109
  - bundle exec rake install:local
@@ -84,11 +111,7 @@ dry-run:gitlab-triage:
84
111
  - gitlab-triage --init
85
112
  - gitlab-triage --dry-run --debug --token $API_TOKEN --source-id $CI_PROJECT_PATH
86
113
 
87
- dry-run:gitlab-ce:
88
- <<: *pull-cache
89
- stage: triage
90
- script:
91
- - bundle exec rake install:local
92
- - gitlab-triage --help
93
- - gitlab-triage --dry-run --debug --token $API_TOKEN --source-id gitlab-org/gitlab-ce
114
+ # This job requires allows to override the `CI_PROJECT_PATH` variable when triggered.
115
+ dry-run:custom:
116
+ extends: dry-run:gitlab-triage
94
117
  when: manual
data/Gemfile CHANGED
@@ -5,6 +5,6 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  # Pin these dependencies, otherwise a new rule could break the CI pipelines
8
- gem 'rubocop', '0.51.0'
9
- gem 'rubocop-rspec', '1.19.0'
8
+ gem 'rubocop', '0.69.0'
9
+ gem 'rubocop-rspec', '1.35.0'
10
10
  end
data/README.md CHANGED
@@ -119,6 +119,8 @@ Available condition types:
119
119
  - [`no_additional_labels` condition](#no-additional-labels-condition)
120
120
  - [`author_member` condition](#author-member-condition)
121
121
  - [`assignee_member` condition](#assignee-member-condition)
122
+ - [`source_branch` condition](#source-branch-condition)
123
+ - [`target_branch` condition](#target-branch-condition)
122
124
  - [`ruby` condition](#ruby-condition)
123
125
 
124
126
  ##### Date condition
@@ -382,7 +384,7 @@ conditions:
382
384
  source_id: 9970
383
385
  ```
384
386
 
385
- ##### Assignee Member condition
387
+ ##### Assignee member condition
386
388
 
387
389
  This condition determines whether the assignee of a resource is a member of the specified group or project.
388
390
 
@@ -404,6 +406,28 @@ conditions:
404
406
  source_id: 9970
405
407
  ```
406
408
 
409
+ ##### Source branch condition
410
+
411
+ Accepts the name of a source branch to filter upon.
412
+
413
+ Example:
414
+
415
+ ```yml
416
+ conditions:
417
+ source_branch: 'feature-branch'
418
+ ```
419
+
420
+ ##### Target branch condition
421
+
422
+ Accepts the name of a target branch to filter upon.
423
+
424
+ Example:
425
+
426
+ ```yml
427
+ conditions:
428
+ target_branch: 'master'
429
+ ```
430
+
407
431
  ##### Ruby condition
408
432
 
409
433
  This condition allows users to write a Ruby expression to be evaluated for
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'gitlab/triage/version'
4
4
 
@@ -20,11 +20,11 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'activesupport', '~> 5.1'
23
- spec.add_dependency 'httparty', '~> 0.15'
23
+ spec.add_dependency 'httparty', '~> 0.17'
24
24
 
25
25
  spec.add_development_dependency 'bundler'
26
- spec.add_development_dependency 'gitlab-styles', '~> 2.1'
27
- spec.add_development_dependency 'rake', '~> 10.0'
28
- spec.add_development_dependency 'rspec', '~> 3.0'
26
+ spec.add_development_dependency 'gitlab-styles', '~> 2.8'
27
+ spec.add_development_dependency 'rake', '~> 10.2'
28
+ spec.add_development_dependency 'rspec', '~> 3.8'
29
29
  spec.add_development_dependency 'webmock', '~> 3.4'
30
30
  end
@@ -18,6 +18,8 @@ module Gitlab
18
18
  author: "@{{author.username}}",
19
19
  assignee: "@{{assignee.username}}",
20
20
  assignees: "@{{assignees.username}}",
21
+ source_branch: "{{source_branch}}",
22
+ target_branch: "{{target_branch}}",
21
23
  closed_by: "@{{closed_by.username}}",
22
24
  merged_by: "@{{merged_by.username}}",
23
25
  milestone: %(%"{{milestone.title}}"),
@@ -29,7 +31,7 @@ module Gitlab
29
31
  type: "{{type}}",
30
32
  items: "{{items}}"
31
33
  }.freeze
32
- PLACEHOLDER_REGEX = /{{([\w\.]+)}}/
34
+ PLACEHOLDER_REGEX = /{{([\w\.]+)}}/.freeze
33
35
 
34
36
  attr_reader :resource, :network
35
37
 
@@ -216,6 +216,8 @@ module Gitlab
216
216
  condition_builders << APIQueryBuilders::MultiQueryParamBuilder.new('labels', conditions[:labels], ',') if conditions[:labels]
217
217
  condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('state', conditions[:state]) if conditions[:state]
218
218
  condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('milestone', Array(conditions[:milestone])[0]) if conditions[:milestone]
219
+ condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('source_branch', conditions[:source_branch]) if conditions[:source_branch]
220
+ condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('target_branch', conditions[:target_branch]) if conditions[:target_branch]
219
221
 
220
222
  condition_builders.each do |condition_builder|
221
223
  params[condition_builder.param_name] = condition_builder.param_content
@@ -4,7 +4,7 @@ module Gitlab
4
4
  module Triage
5
5
  module ExpandCondition
6
6
  module List
7
- PATTERN = /\{.+?,.+?\}/m
7
+ PATTERN = /\{.+?,.+?\}/m.freeze
8
8
 
9
9
  def self.expand(conditions)
10
10
  labels = conditions[:labels]
@@ -4,7 +4,7 @@ module Gitlab
4
4
  module Triage
5
5
  module ExpandCondition
6
6
  module Sequence
7
- PATTERN = /\{\s*(\d+)\s*\.\.\s*(\d+)\s*\}/
7
+ PATTERN = /\{\s*(\d+)\s*\.\.\s*(\d+)\s*\}/.freeze
8
8
 
9
9
  def self.expand(conditions)
10
10
  labels = conditions[:labels]
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal
2
- # rubocop:disable Rails/Exit
3
2
 
4
3
  require 'optparse'
5
4
  require 'fileutils'
@@ -57,7 +56,7 @@ module Gitlab
57
56
 
58
57
  opts.on('-h', '--help', 'Print help message') do
59
58
  $stdout.puts opts
60
- exit
59
+ exit # rubocop:disable Rails/Exit
61
60
  end
62
61
 
63
62
  opts.on('--init', 'Initialize the project with a policy file') do
@@ -65,7 +64,7 @@ module Gitlab
65
64
  File.expand_path('../../../support/.triage-policies.example.yml', __dir__)
66
65
 
67
66
  FileUtils.cp(example_path, '.triage-policies.yml')
68
- exit
67
+ exit # rubocop:disable Rails/Exit
69
68
  end
70
69
 
71
70
  opts.on('--init-ci', 'Initialize the project with a .gitlab-ci.yml file') do
@@ -73,7 +72,7 @@ module Gitlab
73
72
  File.expand_path('../../../support/.gitlab-ci.example.yml', __dir__)
74
73
 
75
74
  FileUtils.cp(example_path, '.gitlab-ci.yml')
76
- exit
75
+ exit # rubocop:disable Rails/Exit
77
76
  end
78
77
  end
79
78
 
@@ -19,7 +19,7 @@ module Gitlab
19
19
  end
20
20
 
21
21
  def eval(ruby)
22
- instance_eval <<~RUBY
22
+ instance_eval <<~RUBY, __FILE__, __LINE__ + 1
23
23
  begin
24
24
  #{ruby}
25
25
  rescue StandardError, ScriptError => e
@@ -13,7 +13,7 @@ module Gitlab
13
13
  @tries += 1
14
14
  result = yield
15
15
  break
16
- rescue exception_type
16
+ rescue exception_type # rubocop:disable Naming/RescuedExceptionsVariableName
17
17
  raise if maximum_retries_reached?
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Triage
3
- VERSION = '1.3.0'.freeze
3
+ VERSION = '1.4.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-triage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-29 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.15'
33
+ version: '0.17'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.15'
40
+ version: '0.17'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,42 +58,42 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.1'
61
+ version: '2.8'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.1'
68
+ version: '2.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '10.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '10.2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.0'
89
+ version: '3.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.0'
96
+ version: '3.8'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,6 @@ files:
120
120
  - ".gitignore"
121
121
  - ".gitlab-ci.yml"
122
122
  - ".gitlab/CODEOWNERS"
123
- - ".gitlab/issue_templates/Policy.md"
124
123
  - ".rubocop.yml"
125
124
  - CONTRIBUTING.md
126
125
  - Gemfile
@@ -1,32 +0,0 @@
1
- ### Policy title
2
-
3
- ( add a title to accurately describe the policy that you are referring to )
4
-
5
- ### New Policy/Policy Change/Policy Removal
6
-
7
- ( declare the type of policy change this is )
8
-
9
- ### Issues or Merge Requests Policy?
10
-
11
- Issues/Merge Requests/both
12
-
13
- ### Policy Conditions
14
-
15
- ( declare the conditions for the related policy )
16
-
17
- #### Example
18
-
19
- - Label: bug
20
- - not updated for over 6 months
21
- - no associated milestone (unscheduled)
22
- - state: open
23
-
24
- ### Policy Actions
25
-
26
- ( declare the actions for the related policy )
27
-
28
- #### Example
29
-
30
- - Add a comment
31
- - Mention @markglenfletcher
32
- - Label: "awaiting feedback" "auto updated"