gitlab-triage 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +100 -9
- data/lib/gitlab/triage/action.rb +5 -8
- data/lib/gitlab/triage/action/base.rb +3 -6
- data/lib/gitlab/triage/action/comment.rb +8 -8
- data/lib/gitlab/triage/action/summarize.rb +3 -4
- data/lib/gitlab/triage/engine.rb +53 -19
- data/lib/gitlab/triage/{action/summarize → entity_builders}/issue_builder.rb +3 -3
- data/lib/gitlab/triage/policies/base_policy.rb +29 -0
- data/lib/gitlab/triage/policies/rule_policy.rb +17 -0
- data/lib/gitlab/triage/policies/summary_policy.rb +23 -0
- data/lib/gitlab/triage/version.rb +1 -1
- data/support/.triage-policies.example.yml +30 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 636a4953fea53e7808b154e352c37d6a33c3cd9a57695f98d05fa90a44efd2cc
|
4
|
+
data.tar.gz: 82d61352bdd126d09650ed9f0efcbf1714783444f172a559571d33530000bef2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '069d55c96a5fac0989ced21614782c06b11ef8a56fb59e7bc457e73fa9bb77c223680ee1399f4854bc22697075880ef3233575a1a332ab75b934664a2a654d44'
|
7
|
+
data.tar.gz: 1521bc67e168f19d231112782f9d12457a422b93e86cfa10a4565eebb026bdbfb8e6401764ecb84a25bbbfe3687f7c189323e106de4ad2b6020618f75dde99fb
|
data/README.md
CHANGED
@@ -6,9 +6,11 @@ This project contains the library and pipeline definition to enable automated tr
|
|
6
6
|
|
7
7
|
## gitlab-triage gem
|
8
8
|
|
9
|
-
###
|
9
|
+
### Abstract
|
10
10
|
|
11
|
-
The `gitlab-triage` gem aims to enable project managers and maintainers to
|
11
|
+
The `gitlab-triage` gem aims to enable project managers and maintainers to
|
12
|
+
automatically triage Issues and Merge Requests in GitLab projects based on
|
13
|
+
defined policies.
|
12
14
|
|
13
15
|
### What is a triage policy?
|
14
16
|
|
@@ -16,14 +18,21 @@ Triage policies are defined on a resource level basis, resources being:
|
|
16
18
|
- Issues
|
17
19
|
- Merge Requests
|
18
20
|
|
19
|
-
Each policy can declare a number of conditions that must all be satisfied before
|
21
|
+
Each policy can declare a number of conditions that must all be satisfied before
|
22
|
+
a number of actions are carried out.
|
23
|
+
|
24
|
+
Summary policies are special policies that join multiple policies together to
|
25
|
+
create a summary issue with all the sub-policies' summaries, see
|
26
|
+
[Summary policies](#summary-policies).
|
20
27
|
|
21
28
|
### Defining a policy
|
22
29
|
|
23
30
|
Policies are defined in a policy file (by default `./.triage-policies.yml`).
|
24
31
|
The format of the file is [YAML](https://en.wikipedia.org/wiki/YAML).
|
25
32
|
|
26
|
-
> Note: You can use the [`--init`](#usage) option to add an example
|
33
|
+
> Note: You can use the [`--init`](#usage) option to add an example
|
34
|
+
[`.triage-policies.yml` file](support/.triage-policies.example.yml) to your
|
35
|
+
project.
|
27
36
|
|
28
37
|
Select which resource to add the policy to:
|
29
38
|
- `issues`
|
@@ -602,11 +611,11 @@ Generates an issue summarizing what was triaged.
|
|
602
611
|
|
603
612
|
Accepts a hash of fields.
|
604
613
|
|
605
|
-
| Field | Type | Description
|
606
|
-
| ---- | ---- | ----
|
607
|
-
| `title` | string | The title of the generated issue
|
614
|
+
| Field | Type | Description | Required | Placeholders | Ruby expression |
|
615
|
+
| ---- | ---- | ---- | ---- | ---- | ---- |
|
616
|
+
| `title` | string | The title of the generated issue | yes | no | no |
|
608
617
|
| `item` | string | Template representing each triaged resource | no | yes | yes |
|
609
|
-
| `summary` | string | The description of the generated issue
|
618
|
+
| `summary` | string | The description of the generated issue | no | Only `{{items}}` and `{{title}}` | yes |
|
610
619
|
|
611
620
|
**Note:**: Both `item` and `summary` fields act like a
|
612
621
|
[comment action](#comment-action), therefore
|
@@ -658,6 +667,86 @@ Which could generate an issue like:
|
|
658
667
|
/label ~"needs attention"
|
659
668
|
```
|
660
669
|
|
670
|
+
### Summary policies
|
671
|
+
|
672
|
+
Summary policies are special policies that join multiple rule policies together
|
673
|
+
to create a summary issue with all the sub-policies' summaries.
|
674
|
+
They have the same structure as Rule policies that define `actions.summarize`.
|
675
|
+
|
676
|
+
One key difference is that the `{{items}}` placeholder represents the array of
|
677
|
+
sub-policies' summary.
|
678
|
+
|
679
|
+
Note that only the `item` and `summary` keys in the sub-policies' `actions` are
|
680
|
+
used. Any other keys (e.g. `mention`, `comment`, `labels` etc.) are ignored.
|
681
|
+
|
682
|
+
You can define such policy as follows:
|
683
|
+
|
684
|
+
```yml
|
685
|
+
resource_rules:
|
686
|
+
issues:
|
687
|
+
summaries:
|
688
|
+
- name: Newest and oldest issues summary
|
689
|
+
actions:
|
690
|
+
summarize:
|
691
|
+
title: "Newest and oldest issues summary"
|
692
|
+
summary: |
|
693
|
+
Please triage the following issues:
|
694
|
+
|
695
|
+
{{items}}
|
696
|
+
|
697
|
+
Please take care of them before the end of #{7.days.from_now.strftime('%Y-%m-%d')}
|
698
|
+
|
699
|
+
/label ~"needs attention"
|
700
|
+
rules:
|
701
|
+
- name: New issues
|
702
|
+
conditions:
|
703
|
+
state: opened
|
704
|
+
limits:
|
705
|
+
most_recent: 2
|
706
|
+
actions:
|
707
|
+
item: "- [ ] [{{title}}]({{web_url}}) {{labels}}"
|
708
|
+
summary: |
|
709
|
+
Please triage the following new issues:
|
710
|
+
|
711
|
+
{{items}}
|
712
|
+
- name: Old issues
|
713
|
+
conditions:
|
714
|
+
state: opened
|
715
|
+
limits:
|
716
|
+
oldest: 2
|
717
|
+
actions:
|
718
|
+
item: "- [ ] [{{title}}]({{web_url}}) {{labels}}"
|
719
|
+
summary: |
|
720
|
+
Please triage the following old issues:
|
721
|
+
|
722
|
+
{{items}}
|
723
|
+
```
|
724
|
+
|
725
|
+
Which could generate an issue like:
|
726
|
+
|
727
|
+
* Title:
|
728
|
+
```
|
729
|
+
Newest and oldest issues summary
|
730
|
+
```
|
731
|
+
* Description:
|
732
|
+
``` markdown
|
733
|
+
Please triage the following issues:
|
734
|
+
|
735
|
+
Please triage the following new issues:
|
736
|
+
|
737
|
+
- [ ] [A new issue](http://example.com/group/project/issues/4)
|
738
|
+
- [ ] [Another new issue](http://example.com/group/project/issues/3) ~"label B", ~"label C"
|
739
|
+
|
740
|
+
Please triage the following old issues:
|
741
|
+
|
742
|
+
- [ ] [An old issue](http://example.com/group/project/issues/1) ~"label A", ~"label B"
|
743
|
+
- [ ] [Another old issue](http://example.com/group/project/issues/2) ~"label C"
|
744
|
+
|
745
|
+
Please take care of them before the end of 2000-01-01
|
746
|
+
|
747
|
+
/label ~"needs attention"
|
748
|
+
```
|
749
|
+
|
661
750
|
### Ruby expression API
|
662
751
|
|
663
752
|
Here's a list of currently available Ruby expression API:
|
@@ -741,11 +830,13 @@ run:triage:triage:
|
|
741
830
|
Yes, you can override the host url using the following options:
|
742
831
|
|
743
832
|
##### CLI
|
833
|
+
|
744
834
|
```
|
745
835
|
gitlab-triage --dry-run --token $API_TOKEN --project-id gitlab-org/triage --host-url https://gitlab.host.com
|
746
836
|
```
|
747
837
|
|
748
838
|
##### Policy file
|
839
|
+
|
749
840
|
```yml
|
750
841
|
host_url: https://gitlab.host.com
|
751
842
|
resource_rules:
|
@@ -753,4 +844,4 @@ resource_rules:
|
|
753
844
|
|
754
845
|
### Contributing
|
755
846
|
|
756
|
-
Please refer to the [Contributing Guide](CONTRIBUTING.md)
|
847
|
+
Please refer to the [Contributing Guide](CONTRIBUTING.md).
|
data/lib/gitlab/triage/action.rb
CHANGED
@@ -4,15 +4,12 @@ require_relative 'action/comment'
|
|
4
4
|
module Gitlab
|
5
5
|
module Triage
|
6
6
|
module Action
|
7
|
-
def self.process(
|
8
|
-
summarize = rules.delete(:summarize)
|
9
|
-
comment = rules.any? && rules
|
10
|
-
|
7
|
+
def self.process(policy:, **args)
|
11
8
|
{
|
12
|
-
Summarize => summarize
|
13
|
-
Comment => comment
|
14
|
-
}.compact.each do |action,
|
15
|
-
act(action: action,
|
9
|
+
Summarize => policy.summarize?,
|
10
|
+
Comment => policy.comment?
|
11
|
+
}.compact.each do |action, active|
|
12
|
+
act(action: action, policy: policy, **args) if active
|
16
13
|
end
|
17
14
|
end
|
18
15
|
|
@@ -2,13 +2,10 @@ module Gitlab
|
|
2
2
|
module Triage
|
3
3
|
module Action
|
4
4
|
class Base
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :policy, :net
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
9
|
-
@type = type
|
10
|
-
@rule = rule
|
11
|
-
@resources = resources
|
7
|
+
def initialize(policy:, net:)
|
8
|
+
@policy = policy
|
12
9
|
@net = net
|
13
10
|
end
|
14
11
|
end
|
@@ -14,7 +14,7 @@ module Gitlab
|
|
14
14
|
class Comment < Base
|
15
15
|
class Dry < Comment
|
16
16
|
def act
|
17
|
-
puts "
|
17
|
+
puts "The following comments would be posted for the rule **#{policy.name}**:\n\n"
|
18
18
|
|
19
19
|
super
|
20
20
|
end
|
@@ -27,7 +27,7 @@ module Gitlab
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def act
|
30
|
-
resources.each do |resource|
|
30
|
+
policy.resources.each do |resource|
|
31
31
|
comment = build_comment(resource).strip
|
32
32
|
|
33
33
|
perform(resource, comment) unless comment.empty?
|
@@ -39,11 +39,11 @@ module Gitlab
|
|
39
39
|
def build_comment(resource)
|
40
40
|
CommandBuilders::CommentCommandBuilder.new(
|
41
41
|
[
|
42
|
-
CommandBuilders::TextContentBuilder.new(
|
43
|
-
CommandBuilders::LabelCommandBuilder.new(
|
44
|
-
CommandBuilders::RemoveLabelCommandBuilder.new(
|
45
|
-
CommandBuilders::CcCommandBuilder.new(
|
46
|
-
CommandBuilders::StatusCommandBuilder.new(
|
42
|
+
CommandBuilders::TextContentBuilder.new(policy.actions[:comment], resource: resource, net: net).build_command,
|
43
|
+
CommandBuilders::LabelCommandBuilder.new(policy.actions[:labels]).build_command,
|
44
|
+
CommandBuilders::RemoveLabelCommandBuilder.new(policy.actions[:remove_labels]).build_command,
|
45
|
+
CommandBuilders::CcCommandBuilder.new(policy.actions[:mention]).build_command,
|
46
|
+
CommandBuilders::StatusCommandBuilder.new(policy.actions[:status]).build_command
|
47
47
|
]
|
48
48
|
).build_command
|
49
49
|
end
|
@@ -61,7 +61,7 @@ module Gitlab
|
|
61
61
|
host_url: net[:host_url],
|
62
62
|
api_version: net[:api_version],
|
63
63
|
source_id: net[:source_id],
|
64
|
-
resource_type: type,
|
64
|
+
resource_type: policy.type,
|
65
65
|
resource_id: resource['iid'],
|
66
66
|
sub_resource_type: 'notes'
|
67
67
|
).build
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'base'
|
4
|
-
require_relative 'summarize/issue_builder'
|
5
4
|
|
6
5
|
module Gitlab
|
7
6
|
module Triage
|
@@ -11,7 +10,7 @@ module Gitlab
|
|
11
10
|
private
|
12
11
|
|
13
12
|
def perform
|
14
|
-
puts "
|
13
|
+
puts "The following issue would be created for the rule **#{policy.name}**:\n\n"
|
15
14
|
puts ">>>"
|
16
15
|
puts "* Title: #{issue.title}"
|
17
16
|
puts "* Description: #{issue.description}"
|
@@ -20,7 +19,7 @@ module Gitlab
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def act
|
23
|
-
perform if resources.any? && issue.valid?
|
22
|
+
perform if policy.resources.any? && issue.valid?
|
24
23
|
end
|
25
24
|
|
26
25
|
private
|
@@ -30,7 +29,7 @@ module Gitlab
|
|
30
29
|
end
|
31
30
|
|
32
31
|
def issue
|
33
|
-
@issue ||=
|
32
|
+
@issue ||= policy.build_issue
|
34
33
|
end
|
35
34
|
|
36
35
|
def post_issue_url
|
data/lib/gitlab/triage/engine.rb
CHANGED
@@ -10,6 +10,8 @@ require_relative 'filters/assignee_member_conditions_filter'
|
|
10
10
|
require_relative 'filters/ruby_conditions_filter'
|
11
11
|
require_relative 'limiters/date_field_limiter'
|
12
12
|
require_relative 'action'
|
13
|
+
require_relative 'policies/rule_policy'
|
14
|
+
require_relative 'policies/summary_policy'
|
13
15
|
require_relative 'api_query_builders/single_query_param_builder'
|
14
16
|
require_relative 'api_query_builders/multi_query_param_builder'
|
15
17
|
require_relative 'url_builders/url_builder'
|
@@ -42,14 +44,12 @@ module Gitlab
|
|
42
44
|
puts Gitlab::Triage::UI.header("Triaging the `#{options.project_id}` project", char: '=')
|
43
45
|
puts
|
44
46
|
|
45
|
-
resource_rules.each do |
|
46
|
-
puts Gitlab::Triage::UI.header("Processing rules for #{
|
47
|
+
resource_rules.each do |resource_type, resource|
|
48
|
+
puts Gitlab::Triage::UI.header("Processing rules for #{resource_type}", char: '-')
|
47
49
|
puts
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
process_rule(type, rule)
|
52
|
-
end
|
50
|
+
|
51
|
+
process_summaries(resource_type, resource[:summaries])
|
52
|
+
process_rules(resource_type, resource[:rules])
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -94,15 +94,45 @@ module Gitlab
|
|
94
94
|
rule.fetch(:conditions) { {} }
|
95
95
|
end
|
96
96
|
|
97
|
-
def rule_actions(rule)
|
98
|
-
rule.fetch(:actions) { {} }
|
99
|
-
end
|
100
|
-
|
101
97
|
def rule_limits(rule)
|
102
98
|
rule.fetch(:limits) { {} }
|
103
99
|
end
|
104
100
|
|
105
|
-
def
|
101
|
+
def process_summaries(resource_type, summaries)
|
102
|
+
return if summaries.blank?
|
103
|
+
|
104
|
+
summaries.each do |summary|
|
105
|
+
process_summary(resource_type, summary)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def process_rules(resource_type, rules)
|
110
|
+
return if rules.blank?
|
111
|
+
|
112
|
+
rules.each do |rule|
|
113
|
+
process_action(Policies::RulePolicy.new(resource_type, rule, resources_for_rule(resource_type, rule), net))
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def process_summary(resource_type, summary)
|
118
|
+
puts Gitlab::Triage::UI.header("Processing summary: **#{summary[:name]}**", char: '~')
|
119
|
+
puts
|
120
|
+
|
121
|
+
resources = resources_for_rules(resource_type, summary[:rules])
|
122
|
+
# { summary_rule => resources }
|
123
|
+
summary_parts = Hash[summary[:rules].zip(resources)]
|
124
|
+
|
125
|
+
process_action(Policies::SummaryPolicy.new(resource_type, summary, summary_parts, net))
|
126
|
+
end
|
127
|
+
|
128
|
+
def resources_for_rules(resource_type, rules)
|
129
|
+
rules.map { |rule| resources_for_rule(resource_type, rule) }
|
130
|
+
end
|
131
|
+
|
132
|
+
def resources_for_rule(resource_type, rule)
|
133
|
+
puts Gitlab::Triage::UI.header("Processing rule: **#{rule[:name]}**", char: '-')
|
134
|
+
resources = []
|
135
|
+
|
106
136
|
ExpandCondition.perform(rule_conditions(rule)) do |conditions|
|
107
137
|
# retrieving the resources for every rule is inefficient
|
108
138
|
# however, previous rules may affect those upcoming
|
@@ -114,14 +144,18 @@ module Gitlab
|
|
114
144
|
print "* Limiting resources..."
|
115
145
|
resources = limit_resources(resources, rule_limits(rule))
|
116
146
|
puts "\n* Total after limiting: #{resources.count} resources"
|
117
|
-
|
118
|
-
name: rule[:name],
|
119
|
-
type: resource_type,
|
120
|
-
rules: rule_actions(rule),
|
121
|
-
resources: resources,
|
122
|
-
net: net,
|
123
|
-
dry: options.dry_run)
|
147
|
+
puts
|
124
148
|
end
|
149
|
+
|
150
|
+
resources
|
151
|
+
end
|
152
|
+
|
153
|
+
def process_action(policy)
|
154
|
+
Action.process(
|
155
|
+
policy: policy,
|
156
|
+
net: net,
|
157
|
+
dry: options.dry_run)
|
158
|
+
puts
|
125
159
|
end
|
126
160
|
|
127
161
|
def filter_resources(resources, conditions)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '../
|
4
|
-
require_relative '../../command_builders/text_content_builder'
|
3
|
+
require_relative '../command_builders/text_content_builder'
|
5
4
|
|
6
5
|
module Gitlab
|
7
6
|
module Triage
|
8
|
-
module
|
7
|
+
module EntityBuilders
|
9
8
|
class IssueBuilder
|
10
9
|
attr_reader :title
|
10
|
+
attr_writer :description, :items
|
11
11
|
|
12
12
|
def initialize(action, resources, net)
|
13
13
|
@title = action[:title]
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gitlab
|
4
|
+
module Triage
|
5
|
+
module Policies
|
6
|
+
BasePolicy = Struct.new(:type, :policy_spec, :resources, :net) do
|
7
|
+
def name
|
8
|
+
@name ||= (policy_spec[:name] || "#{type}-#{object_id}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def actions
|
12
|
+
@actions ||= policy_spec.fetch(:actions) { {} }
|
13
|
+
end
|
14
|
+
|
15
|
+
def summarize?
|
16
|
+
actions.key?(:summarize)
|
17
|
+
end
|
18
|
+
|
19
|
+
def comment?
|
20
|
+
(actions.keys - [:summarize]).any?
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_issue
|
24
|
+
raise NotImplementedError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base_policy'
|
4
|
+
require_relative '../entity_builders/issue_builder'
|
5
|
+
|
6
|
+
module Gitlab
|
7
|
+
module Triage
|
8
|
+
module Policies
|
9
|
+
class RulePolicy < BasePolicy
|
10
|
+
# Build an issue from a single rule policy
|
11
|
+
def build_issue
|
12
|
+
EntityBuilders::IssueBuilder.new(actions, resources, net)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base_policy'
|
4
|
+
require_relative 'rule_policy'
|
5
|
+
require_relative '../entity_builders/issue_builder'
|
6
|
+
|
7
|
+
module Gitlab
|
8
|
+
module Triage
|
9
|
+
module Policies
|
10
|
+
class SummaryPolicy < BasePolicy
|
11
|
+
# Build an issue from several rules policies
|
12
|
+
def build_issue
|
13
|
+
EntityBuilders::IssueBuilder.new(actions[:summarize].merge(item: "{{description}}\n\n"), [], net).tap do |issue|
|
14
|
+
issue.items =
|
15
|
+
resources.map do |inner_policy_spec, inner_resources|
|
16
|
+
Policies::RulePolicy.new(type, inner_policy_spec, inner_resources, net).build_issue.description
|
17
|
+
end.join("\n\n")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -14,6 +14,36 @@ resource_rules:
|
|
14
14
|
actions:
|
15
15
|
comment: |
|
16
16
|
This issue has been open for one week and is unlabelled
|
17
|
+
summaries:
|
18
|
+
- name: Newest and oldest issues summary
|
19
|
+
actions:
|
20
|
+
summarize:
|
21
|
+
title: "Newest and oldest issues summary"
|
22
|
+
summary: |
|
23
|
+
Please triage the following issues:
|
24
|
+
|
25
|
+
{{items}}
|
26
|
+
|
27
|
+
Please take care of them before the end of #{7.days.from_now.strftime('%Y-%m-%d')}
|
28
|
+
|
29
|
+
/label ~"needs attention"
|
30
|
+
rules:
|
31
|
+
- name: New issues
|
32
|
+
conditions:
|
33
|
+
state: opened
|
34
|
+
limits:
|
35
|
+
most_recent: 2
|
36
|
+
actions:
|
37
|
+
item: "- [ ] [{{title}}]({{web_url}}) {{labels}}"
|
38
|
+
summary: "Please triage the following new issues:\n\n{{items}}"
|
39
|
+
- name: Old issues
|
40
|
+
conditions:
|
41
|
+
state: opened
|
42
|
+
limits:
|
43
|
+
oldest: 2
|
44
|
+
actions:
|
45
|
+
item: "- [ ] [{{title}}]({{web_url}}) {{labels}}"
|
46
|
+
summary: "Please triage the following old issues:\n\n{{items}}"
|
17
47
|
merge_requests:
|
18
48
|
rules:
|
19
49
|
[]
|
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: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -135,7 +135,6 @@ files:
|
|
135
135
|
- lib/gitlab/triage/action/base.rb
|
136
136
|
- lib/gitlab/triage/action/comment.rb
|
137
137
|
- lib/gitlab/triage/action/summarize.rb
|
138
|
-
- lib/gitlab/triage/action/summarize/issue_builder.rb
|
139
138
|
- lib/gitlab/triage/api_query_builders/base_query_param_builder.rb
|
140
139
|
- lib/gitlab/triage/api_query_builders/multi_query_param_builder.rb
|
141
140
|
- lib/gitlab/triage/api_query_builders/single_query_param_builder.rb
|
@@ -147,6 +146,7 @@ files:
|
|
147
146
|
- lib/gitlab/triage/command_builders/status_command_builder.rb
|
148
147
|
- lib/gitlab/triage/command_builders/text_content_builder.rb
|
149
148
|
- lib/gitlab/triage/engine.rb
|
149
|
+
- lib/gitlab/triage/entity_builders/issue_builder.rb
|
150
150
|
- lib/gitlab/triage/expand_condition.rb
|
151
151
|
- lib/gitlab/triage/expand_condition/expansion.rb
|
152
152
|
- lib/gitlab/triage/expand_condition/list.rb
|
@@ -167,6 +167,9 @@ files:
|
|
167
167
|
- lib/gitlab/triage/network_adapters/base_adapter.rb
|
168
168
|
- lib/gitlab/triage/network_adapters/httparty_adapter.rb
|
169
169
|
- lib/gitlab/triage/network_adapters/test_adapter.rb
|
170
|
+
- lib/gitlab/triage/policies/base_policy.rb
|
171
|
+
- lib/gitlab/triage/policies/rule_policy.rb
|
172
|
+
- lib/gitlab/triage/policies/summary_policy.rb
|
170
173
|
- lib/gitlab/triage/resource/base.rb
|
171
174
|
- lib/gitlab/triage/resource/context.rb
|
172
175
|
- lib/gitlab/triage/resource/instance_version.rb
|