githuh 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,165 @@
1
+ :doctype: book
2
+ :toc:
3
+ :toclevels: 4
4
+ :sectnums:
5
+ image:https://github.com/kigster/githuh/workflows/Ruby/badge.svg[Ruby,link=https://github.com/kigster/githuh/actions?query=workflow%3ARuby]
6
+ image:docs/img/coverage.svg[Coverage]
7
+
8
+ = Githuh -- GitHub API client
9
+
10
+ As in... *git? huh?*.
11
+
12
+ Github API client wrapper on top of Octokit, that provides extensible command pattern for wrapping Github functionality.
13
+
14
+ At the moment two features are implemented:
15
+
16
+ * Generating a list of org's (or personal) repositories and rending in either markdown or JSON
17
+ * Printing info of the logged in user.
18
+
19
+ == Using `githuh`
20
+
21
+ Add your Github Token to the global config:
22
+
23
+ [source,bash]
24
+ ----
25
+ git config --global --set user.token <token>
26
+ ----
27
+
28
+ After that:
29
+
30
+ [source,bash]
31
+ ----
32
+ ❯ be exe/githuh -h
33
+
34
+ Githuh CLI 0.2.1 — API client for Github.com.
35
+ © 2020 Konstantin Gredeskoul, All rights reserved. MIT License.
36
+
37
+ Commands:
38
+ githuh issue [SUBCOMMAND]
39
+ githuh repo [SUBCOMMAND]
40
+ githuh user [SUBCOMMAND]
41
+ githuh version # Print version, no subcommands
42
+ ----
43
+
44
+ Githuh is invoked by using one of its commands and sub-commands.
45
+
46
+
47
+ === `issue export`
48
+
49
+ Use this command to export all issues for a given repo into either a raw JSON format (using `--format=json`) or into a https://www.pivotaltracker.com/help/articles/csv_import_export[Pivotal Tracker-compatible CSV format] (the default output format).
50
+
51
+ [source,bash]
52
+ ----
53
+ ❯ be exe/githuh issue export -h
54
+
55
+ Githuh CLI 0.2.1 — API client for Github.com.
56
+ © 2020 Konstantin Gredeskoul, All rights reserved. MIT License.
57
+
58
+ Command:
59
+ githuh issue export
60
+
61
+ Usage:
62
+ githuh issue export REPO
63
+
64
+ Description:
65
+ Export Repo issues into a CSV or JSON format
66
+ Default output file is <username>.<repo>.issues.<format>
67
+
68
+ Arguments:
69
+ REPO # REQUIRED Name of the repo, eg "rails/rails"
70
+
71
+ Options:
72
+ --api-token=VALUE # Github API token; if not given, user.token is read from ~/.gitconfig
73
+ --per-page=VALUE # Pagination page size for Github API, default: 20
74
+ --[no-]info # Print UI elements, like a the progress bar, default: true
75
+ --[no-]verbose # Print additional debugging info, default: false
76
+ --file=VALUE # Output file, overrides <username>.<repo>.issues.<format>
77
+ --format=VALUE # Output format: (json/csv), default: "csv"
78
+ --help, -h # Print this help
79
+ ----
80
+
81
+ ==== Example
82
+
83
+ Eg, to export all issues of this repo into Pivotal Tracker compatibel CSV:
84
+
85
+ [source,bash]
86
+ ----
87
+ # export into Pivotal Tracker CSV format
88
+ githuh issue export kigster/githuh -v -i --api-token=XXXX
89
+ ----
90
+
91
+ You should see an output similar to the following:
92
+
93
+ image::docs/img/githuh-issue-export.png[issue export,width=60%,border=1]
94
+
95
+
96
+ === `repo list`
97
+
98
+ ==== Motivation
99
+
100
+ This functionality was born out of the need to generate a brief but comprehensive, well-formatted list of prior inventions for a typical employment contract.
101
+
102
+ NOTE: nothing in this library constitutes a legal advice. Use it at your own risk. For more information, please see xref:WARANTY.adoc[WARRANTY].
103
+
104
+ Please watch the following Ascii Screen cast to see this command in action:
105
+
106
+ image::https://asciinema.org/a/CW8NbYfu9RsifQJVU6tKRtRkU.svg[asciicast,link=https://asciinema.org/a/CW8NbYfu9RsifQJVU6tKRtRkU]
107
+
108
+ ==== Usage
109
+
110
+ [source,bash]
111
+ ----
112
+ ❯ githuh repo list --help
113
+
114
+ Githuh CLI 0.1.2 — API client for Github.com.
115
+ © 2020 Konstantin Gredeskoul, All rights reserved. MIT License.
116
+
117
+ Usage:
118
+ githuh repo list
119
+
120
+ Description:
121
+ List owned repositories and render the output in markdown or JSON
122
+ Default output file is <username>.repositories.<format>
123
+
124
+ Options:
125
+ --api-token=VALUE # Github API token; if not given, user.token is read from ~/.gitconfig
126
+ --per-page=VALUE # Pagination page size for Github API, default: 20
127
+ --[no-]info # Print UI elements, like a the progress bar, default: true
128
+ --[no-]verbose # Print additional debugging info, default: false
129
+ --file=VALUE # Output file, overrides <username>.repositories.<format>
130
+ --format=VALUE # Output format: (markdown/json), default: "markdown"
131
+ --forks=VALUE # Include or exclude forks: (exclude/include/only), default: "exclude"
132
+ --[no-]private # If specified, returns only private repos for true, public for false
133
+ --help, -h # Print this help
134
+ ----
135
+
136
+ ==== Example
137
+
138
+ For instance, to generate a markdown list of all of your *public* repos that are also *not forks*, run the following:
139
+
140
+ [source,bash]
141
+ ----
142
+ $ githuh repo list --format=markdown --no-private --forks=exclude --file=repos.md
143
+ ----
144
+
145
+ === `user info`
146
+
147
+ This command prints the info about currently authenticated user.
148
+
149
+ [source,bash]
150
+ ----
151
+ ❯ githuh user info
152
+ {
153
+ :login => "kigster",
154
+ :url => "https://api.github.com/users/kigster",
155
+ :html_url => "https://github.com/kigster",
156
+ ..............
157
+ ----
158
+
159
+ == Contributing
160
+
161
+ Please submit a pull request at https://github.com/kigster/githuh/pulls
162
+
163
+ == License
164
+
165
+ &copy; 2020 Konstantin Gredeskoul, link:LICENSE[MIT License]
@@ -11,7 +11,7 @@
11
11
  <g fill="#fff" text-anchor="middle" font-weight="800" font-family="Consolas,DejaVu Sans,Verdana,Geneva,sans-serif" font-size="12">
12
12
  <text x="40.5" y="15" fill="#010101" fill-opacity=".3">COVERAGE</text>
13
13
  <text x="41.5" y="14">COVERAGE</text>
14
- <text x="105.5" y="15" fill="#010101" fill-opacity=".3">67%</text>
15
- <text x="106.5" y="14">67%</text>
14
+ <text x="105.5" y="15" fill="#010101" fill-opacity=".3">61%</text>
15
+ <text x="106.5" y="14">61%</text>
16
16
  </g>
17
17
  </svg>
data/exe/githuh CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby -W0
2
+ ENV['RUBYOPT'] = 'W0'
2
3
  # frozen_string_literal: true
3
4
 
4
5
  # vim: ft=ruby
@@ -24,11 +24,13 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ['lib']
25
25
  spec.required_ruby_version = '>= 2.3'
26
26
 
27
+ spec.add_dependency 'activesupport'
27
28
  spec.add_dependency 'colored2', '~> 3'
28
29
  spec.add_dependency 'dry-cli', '~> 0.6'
29
30
  spec.add_dependency 'octokit', '~> 4'
30
- spec.add_dependency 'tty-box', '~> 0.5'
31
+ spec.add_dependency 'tty-box'
31
32
  spec.add_dependency 'tty-progressbar'
33
+ spec.add_dependency 'tty-screen'
32
34
 
33
35
  spec.add_development_dependency 'aruba', '= 1.0.0'
34
36
  spec.add_development_dependency 'awesome_print', '~> 1'
@@ -36,6 +38,7 @@ Gem::Specification.new do |spec|
36
38
  spec.add_development_dependency 'rake', '~> 13'
37
39
  spec.add_development_dependency 'rspec', '~> 3'
38
40
  spec.add_development_dependency 'rspec-its', '~> 1'
41
+ spec.add_development_dependency 'rubocop'
39
42
  spec.add_development_dependency 'simplecov'
40
43
  spec.add_development_dependency 'simplecov-formatter-badge'
41
44
  end
@@ -0,0 +1,3168 @@
1
+ [
2
+ {
3
+ "url": "https://api.github.com/repos/fossas/basis/issues/729",
4
+ "repository_url": "https://api.github.com/repos/fossas/basis",
5
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/729/labels{/name}",
6
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/729/comments",
7
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/729/events",
8
+ "html_url": "https://github.com/fossas/basis/pull/729",
9
+ "id": 696792373,
10
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyODI1MzY1",
11
+ "number": 729,
12
+ "title": "[ramjet] Fill out crawl DAO ",
13
+ "user": {
14
+ "login": "taliamccormick",
15
+ "id": 13280845,
16
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
17
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
18
+ "gravatar_id": "",
19
+ "url": "https://api.github.com/users/taliamccormick",
20
+ "html_url": "https://github.com/taliamccormick",
21
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
22
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
23
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
24
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
25
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
26
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
27
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
28
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
29
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
30
+ "type": "User",
31
+ "site_admin": false
32
+ },
33
+ "labels": [
34
+ {
35
+ "id": 2242947081,
36
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MDgx",
37
+ "url": "https://api.github.com/repos/fossas/basis/labels/discovery",
38
+ "name": "discovery",
39
+ "color": "40ed1a",
40
+ "default": false,
41
+ "description": ""
42
+ },
43
+ {
44
+ "id": 2287593135,
45
+ "node_id": "MDU6TGFiZWwyMjg3NTkzMTM1",
46
+ "url": "https://api.github.com/repos/fossas/basis/labels/in%20review",
47
+ "name": "in review",
48
+ "color": "d059db",
49
+ "default": false,
50
+ "description": "Signify that the PR is in review"
51
+ },
52
+ {
53
+ "id": 2242944920,
54
+ "node_id": "MDU6TGFiZWwyMjQyOTQ0OTIw",
55
+ "url": "https://api.github.com/repos/fossas/basis/labels/knowledge",
56
+ "name": "knowledge",
57
+ "color": "fef2c0",
58
+ "default": false,
59
+ "description": "knowledge team work"
60
+ },
61
+ {
62
+ "id": 2242947217,
63
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MjE3",
64
+ "url": "https://api.github.com/repos/fossas/basis/labels/ramjet",
65
+ "name": "ramjet",
66
+ "color": "cca3e2",
67
+ "default": false,
68
+ "description": ""
69
+ }
70
+ ],
71
+ "state": "open",
72
+ "locked": false,
73
+ "assignee": null,
74
+ "assignees": [
75
+
76
+ ],
77
+ "milestone": {
78
+ "url": "https://api.github.com/repos/fossas/basis/milestones/2",
79
+ "html_url": "https://github.com/fossas/basis/milestone/2",
80
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/2/labels",
81
+ "id": 5786627,
82
+ "node_id": "MDk6TWlsZXN0b25lNTc4NjYyNw==",
83
+ "number": 2,
84
+ "title": "Discovery and Analysis Trigger API",
85
+ "description": "",
86
+ "creator": {
87
+ "login": "microsoftly",
88
+ "id": 4560399,
89
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
90
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
91
+ "gravatar_id": "",
92
+ "url": "https://api.github.com/users/microsoftly",
93
+ "html_url": "https://github.com/microsoftly",
94
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
95
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
96
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
97
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
98
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
99
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
100
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
101
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
102
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
103
+ "type": "User",
104
+ "site_admin": false
105
+ },
106
+ "open_issues": 4,
107
+ "closed_issues": 8,
108
+ "state": "open",
109
+ "created_at": "2020-08-18T22:28:32Z",
110
+ "updated_at": "2020-09-09T12:58:05Z",
111
+ "due_on": null,
112
+ "closed_at": null
113
+ },
114
+ "comments": 1,
115
+ "created_at": "2020-09-09T12:58:05Z",
116
+ "updated_at": "2020-09-09T18:30:09Z",
117
+ "closed_at": null,
118
+ "author_association": "CONTRIBUTOR",
119
+ "active_lock_reason": null,
120
+ "pull_request": {
121
+ "url": "https://api.github.com/repos/fossas/basis/pulls/729",
122
+ "html_url": "https://github.com/fossas/basis/pull/729",
123
+ "diff_url": "https://github.com/fossas/basis/pull/729.diff",
124
+ "patch_url": "https://github.com/fossas/basis/pull/729.patch"
125
+ },
126
+ "body": "## What\r\n\r\nFills out the crawl DAO\r\n\r\nRequesting review from @aluttik and @kitified , CC @microsoftly for visibility\r\n\r\n## Why\r\n\r\nUsed in task queueing service for discovery tasks\r\n\r\nhttps://github.com/fossas/basis/issues/627\r\nhttps://github.com/fossas/basis/issues/628\r\nhttps://github.com/fossas/basis/issues/630\r\n\r\n## How\r\n\r\n1. Fills out the DAO for inserting a new crawl\r\n2. Adds tests\r\n3. Removes similar code from the component service (minus the race condition plus the extra DAO layering)\r\n\r\n## Security Impact\r\n\r\nNA -- none\r\n\r\nChecklist:\r\n- [x] Code in this PR is covered by automated tests.\r\n- [x] New inputs in this PR are validated and sanitized (example: user input or data read from other systems).\r\n\r\n## Dependency Changes\r\n\r\nNA -- none",
127
+ "performed_via_github_app": null
128
+ },
129
+ {
130
+ "url": "https://api.github.com/repos/fossas/basis/issues/728",
131
+ "repository_url": "https://api.github.com/repos/fossas/basis",
132
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/728/labels{/name}",
133
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/728/comments",
134
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/728/events",
135
+ "html_url": "https://github.com/fossas/basis/pull/728",
136
+ "id": 696783666,
137
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyODE4MTE5",
138
+ "number": 728,
139
+ "title": "[ramjet] Fill out crawler dao",
140
+ "user": {
141
+ "login": "taliamccormick",
142
+ "id": 13280845,
143
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
144
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
145
+ "gravatar_id": "",
146
+ "url": "https://api.github.com/users/taliamccormick",
147
+ "html_url": "https://github.com/taliamccormick",
148
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
149
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
150
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
151
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
152
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
153
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
154
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
155
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
156
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
157
+ "type": "User",
158
+ "site_admin": false
159
+ },
160
+ "labels": [
161
+ {
162
+ "id": 2242947081,
163
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MDgx",
164
+ "url": "https://api.github.com/repos/fossas/basis/labels/discovery",
165
+ "name": "discovery",
166
+ "color": "40ed1a",
167
+ "default": false,
168
+ "description": ""
169
+ },
170
+ {
171
+ "id": 2242944920,
172
+ "node_id": "MDU6TGFiZWwyMjQyOTQ0OTIw",
173
+ "url": "https://api.github.com/repos/fossas/basis/labels/knowledge",
174
+ "name": "knowledge",
175
+ "color": "fef2c0",
176
+ "default": false,
177
+ "description": "knowledge team work"
178
+ },
179
+ {
180
+ "id": 2242947217,
181
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MjE3",
182
+ "url": "https://api.github.com/repos/fossas/basis/labels/ramjet",
183
+ "name": "ramjet",
184
+ "color": "cca3e2",
185
+ "default": false,
186
+ "description": ""
187
+ },
188
+ {
189
+ "id": 2287713828,
190
+ "node_id": "MDU6TGFiZWwyMjg3NzEzODI4",
191
+ "url": "https://api.github.com/repos/fossas/basis/labels/refactor",
192
+ "name": "refactor",
193
+ "color": "caea81",
194
+ "default": false,
195
+ "description": ""
196
+ }
197
+ ],
198
+ "state": "open",
199
+ "locked": false,
200
+ "assignee": null,
201
+ "assignees": [
202
+
203
+ ],
204
+ "milestone": null,
205
+ "comments": 1,
206
+ "created_at": "2020-09-09T12:46:08Z",
207
+ "updated_at": "2020-09-09T19:30:22Z",
208
+ "closed_at": null,
209
+ "author_association": "CONTRIBUTOR",
210
+ "active_lock_reason": null,
211
+ "pull_request": {
212
+ "url": "https://api.github.com/repos/fossas/basis/pulls/728",
213
+ "html_url": "https://github.com/fossas/basis/pull/728",
214
+ "diff_url": "https://github.com/fossas/basis/pull/728.diff",
215
+ "patch_url": "https://github.com/fossas/basis/pull/728.patch"
216
+ },
217
+ "body": "## What\r\n\r\nFill out crawler DAO\r\n\r\nRequesting review from @aluttik , CC @microsoftly for visibility\r\n\r\n## Why\r\n\r\nWe need to make use of the crawler recording DAO setup for discovery task queueing. Also minimize duplication code so we remove the `findOrCreateCrawler` in component service (chose to keep this DAO one because it's slightly simpler / no race condition)\r\n\r\nhttps://github.com/fossas/basis/issues/627\r\nhttps://github.com/fossas/basis/issues/628 \r\nhttps://github.com/fossas/basis/issues/630\r\n\r\n## How\r\n\r\n1. Add to DAO\r\n2. Remove from component-service\r\n\r\nPlease note that types are being defined into the database DAO -- per offline discussion, we're splitting the `DTO` pacakge so that each type is defined with the logical layer that it's used in (ie. the DAO package is responsible for the types of it's DTO / externally visible interface). This is intentional\r\n\r\n## Security Impact\r\n\r\nChecklist:\r\n- [x] Code in this PR is covered by automated tests.\r\n\r\n\r\n## Dependency Changes\r\n\r\nNA -- none",
218
+ "performed_via_github_app": null
219
+ },
220
+ {
221
+ "url": "https://api.github.com/repos/fossas/basis/issues/727",
222
+ "repository_url": "https://api.github.com/repos/fossas/basis",
223
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/727/labels{/name}",
224
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/727/comments",
225
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/727/events",
226
+ "html_url": "https://github.com/fossas/basis/pull/727",
227
+ "id": 696769686,
228
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyODA2NDUz",
229
+ "number": 727,
230
+ "title": "[ramjet] Fill out analysis task queue logic (no more deadlock!)",
231
+ "user": {
232
+ "login": "taliamccormick",
233
+ "id": 13280845,
234
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
235
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
236
+ "gravatar_id": "",
237
+ "url": "https://api.github.com/users/taliamccormick",
238
+ "html_url": "https://github.com/taliamccormick",
239
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
240
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
241
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
242
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
243
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
244
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
245
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
246
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
247
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
248
+ "type": "User",
249
+ "site_admin": false
250
+ },
251
+ "labels": [
252
+ {
253
+ "id": 2285388797,
254
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
255
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
256
+ "name": "analysis",
257
+ "color": "83ef83",
258
+ "default": false,
259
+ "description": ""
260
+ },
261
+ {
262
+ "id": 2242944920,
263
+ "node_id": "MDU6TGFiZWwyMjQyOTQ0OTIw",
264
+ "url": "https://api.github.com/repos/fossas/basis/labels/knowledge",
265
+ "name": "knowledge",
266
+ "color": "fef2c0",
267
+ "default": false,
268
+ "description": "knowledge team work"
269
+ },
270
+ {
271
+ "id": 2242947217,
272
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MjE3",
273
+ "url": "https://api.github.com/repos/fossas/basis/labels/ramjet",
274
+ "name": "ramjet",
275
+ "color": "cca3e2",
276
+ "default": false,
277
+ "description": ""
278
+ }
279
+ ],
280
+ "state": "open",
281
+ "locked": false,
282
+ "assignee": null,
283
+ "assignees": [
284
+
285
+ ],
286
+ "milestone": {
287
+ "url": "https://api.github.com/repos/fossas/basis/milestones/2",
288
+ "html_url": "https://github.com/fossas/basis/milestone/2",
289
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/2/labels",
290
+ "id": 5786627,
291
+ "node_id": "MDk6TWlsZXN0b25lNTc4NjYyNw==",
292
+ "number": 2,
293
+ "title": "Discovery and Analysis Trigger API",
294
+ "description": "",
295
+ "creator": {
296
+ "login": "microsoftly",
297
+ "id": 4560399,
298
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
299
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
300
+ "gravatar_id": "",
301
+ "url": "https://api.github.com/users/microsoftly",
302
+ "html_url": "https://github.com/microsoftly",
303
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
304
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
305
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
306
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
307
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
308
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
309
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
310
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
311
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
312
+ "type": "User",
313
+ "site_admin": false
314
+ },
315
+ "open_issues": 4,
316
+ "closed_issues": 8,
317
+ "state": "open",
318
+ "created_at": "2020-08-18T22:28:32Z",
319
+ "updated_at": "2020-09-09T12:58:05Z",
320
+ "due_on": null,
321
+ "closed_at": null
322
+ },
323
+ "comments": 1,
324
+ "created_at": "2020-09-09T12:25:45Z",
325
+ "updated_at": "2020-09-09T18:52:50Z",
326
+ "closed_at": null,
327
+ "author_association": "CONTRIBUTOR",
328
+ "active_lock_reason": null,
329
+ "pull_request": {
330
+ "url": "https://api.github.com/repos/fossas/basis/pulls/727",
331
+ "html_url": "https://github.com/fossas/basis/pull/727",
332
+ "diff_url": "https://github.com/fossas/basis/pull/727.diff",
333
+ "patch_url": "https://github.com/fossas/basis/pull/727.patch"
334
+ },
335
+ "body": "## What\r\n\r\nAdd queueing logic for analysis tasks\r\n\r\nRequesting review from any/either of @aluttik or @kitified or @microsoftly , CC @microsoftly for visibility\r\n\r\n## Why\r\n\r\nCentral part of the process for writing a \"Analysis Task Queueing Service\"\r\nFurther detail here https://github.com/fossas/basis/issues/627 https://github.com/fossas/basis/issues/628 https://github.com/fossas/basis/issues/631\r\n\r\n## How\r\n\r\nManually tested agains `curl -H \"Content-Type: application/json\" -X POST -d '{ \"componentIDs\": [ \"12345678-910a-bcde-f123-45678910abcd\" ], \"declaredLicenseScan\": true, \"discoveredLicenseScan\": true, \"commentStrippedSHA256\": true }' http://localhost:8678/api/analysis` & similar. Next step is adding automated tests and testing more thoroughly. This will be handled in a separate PR for the sake of review.\r\n\r\n1. Fix the blocking threading issue introduced to manual-task-pusher during git conflicts\r\n2. Fill out logic for analysis task launching!\r\n\r\n## Security Impact\r\n\r\nNA -- none\r\n\r\n## Dependency Changes\r\n\r\nNA -- none\r\n",
336
+ "performed_via_github_app": null
337
+ },
338
+ {
339
+ "url": "https://api.github.com/repos/fossas/basis/issues/726",
340
+ "repository_url": "https://api.github.com/repos/fossas/basis",
341
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/726/labels{/name}",
342
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/726/comments",
343
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/726/events",
344
+ "html_url": "https://github.com/fossas/basis/pull/726",
345
+ "id": 696308703,
346
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyNDA3NDcw",
347
+ "number": 726,
348
+ "title": "[WIP] [Ramjet] Merge ComponentID type definitions",
349
+ "user": {
350
+ "login": "taliamccormick",
351
+ "id": 13280845,
352
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
353
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
354
+ "gravatar_id": "",
355
+ "url": "https://api.github.com/users/taliamccormick",
356
+ "html_url": "https://github.com/taliamccormick",
357
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
358
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
359
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
360
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
361
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
362
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
363
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
364
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
365
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
366
+ "type": "User",
367
+ "site_admin": false
368
+ },
369
+ "labels": [
370
+ {
371
+ "id": 1845816875,
372
+ "node_id": "MDU6TGFiZWwxODQ1ODE2ODc1",
373
+ "url": "https://api.github.com/repos/fossas/basis/labels/wip",
374
+ "name": "wip",
375
+ "color": "8723ce",
376
+ "default": false,
377
+ "description": "Work in progress"
378
+ }
379
+ ],
380
+ "state": "open",
381
+ "locked": false,
382
+ "assignee": null,
383
+ "assignees": [
384
+
385
+ ],
386
+ "milestone": null,
387
+ "comments": 0,
388
+ "created_at": "2020-09-09T01:26:59Z",
389
+ "updated_at": "2020-09-09T12:14:16Z",
390
+ "closed_at": null,
391
+ "author_association": "CONTRIBUTOR",
392
+ "active_lock_reason": null,
393
+ "pull_request": {
394
+ "url": "https://api.github.com/repos/fossas/basis/pulls/726",
395
+ "html_url": "https://github.com/fossas/basis/pull/726",
396
+ "diff_url": "https://github.com/fossas/basis/pull/726.diff",
397
+ "patch_url": "https://github.com/fossas/basis/pull/726.patch"
398
+ },
399
+ "body": "## What\r\n\r\nWe have multiple definitions for `type ComponentID` in Ramjet -- this starts to consolidate them\r\nWIP because it works for Ramjet but causes issues since `ComponentID` not in pkg/externally visible. In discussion for where-to-put\r\n\r\n## Why\r\n\r\nWe have multiple definitions for `type ComponentID` in Ramjet and we probably want one or two (one pkg/externally visible, one internal/internally visible)\r\n\r\nhttps://teamfossa.slack.com/archives/C0155DXDMP1/p1599572067001400\r\n\r\n## How\r\n\r\n1. Merged definitions to the DTOs package\r\n2. Fought compiler errors\r\n\r\n## Security Impact\r\n\r\nNA -- none\r\n\r\nChecklist:\r\n- [x] Code in this PR is covered by automated tests.\r\n\r\n\r\n## Dependency Changes\r\n\r\nNA -- none",
400
+ "performed_via_github_app": null
401
+ },
402
+ {
403
+ "url": "https://api.github.com/repos/fossas/basis/issues/725",
404
+ "repository_url": "https://api.github.com/repos/fossas/basis",
405
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/725/labels{/name}",
406
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/725/comments",
407
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/725/events",
408
+ "html_url": "https://github.com/fossas/basis/pull/725",
409
+ "id": 696278911,
410
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyMzgyMTE4",
411
+ "number": 725,
412
+ "title": "Added filename prioritization for determining a Declared Project License",
413
+ "user": {
414
+ "login": "aluttik",
415
+ "id": 10134357,
416
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
417
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
418
+ "gravatar_id": "",
419
+ "url": "https://api.github.com/users/aluttik",
420
+ "html_url": "https://github.com/aluttik",
421
+ "followers_url": "https://api.github.com/users/aluttik/followers",
422
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
423
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
424
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
425
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
426
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
427
+ "repos_url": "https://api.github.com/users/aluttik/repos",
428
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
429
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
430
+ "type": "User",
431
+ "site_admin": false
432
+ },
433
+ "labels": [
434
+
435
+ ],
436
+ "state": "open",
437
+ "locked": false,
438
+ "assignee": null,
439
+ "assignees": [
440
+
441
+ ],
442
+ "milestone": null,
443
+ "comments": 1,
444
+ "created_at": "2020-09-09T00:26:20Z",
445
+ "updated_at": "2020-09-09T01:07:47Z",
446
+ "closed_at": null,
447
+ "author_association": "CONTRIBUTOR",
448
+ "active_lock_reason": null,
449
+ "pull_request": {
450
+ "url": "https://api.github.com/repos/fossas/basis/pulls/725",
451
+ "html_url": "https://github.com/fossas/basis/pull/725",
452
+ "diff_url": "https://github.com/fossas/basis/pull/725.diff",
453
+ "patch_url": "https://github.com/fossas/basis/pull/725.patch"
454
+ },
455
+ "body": "## What\r\n\r\nIPR.Detect will now take filename into account when deciding on a declared project license.\r\n\r\n## Why\r\n\r\nCurrently the component DB has a ton of components where the declared_license_source is a README file and it should be LICENSE.\r\n\r\nPart of #620 \r\n\r\n## How\r\n\r\nWhen determining a declared project license, if there's a tie for prioritization in the categories of SPDX validity, depth of file in project, and license type (e.g. explicit expression, nomos scanned, downloaded from URL), IPR will then check filenames to determine which license to pick.\r\n\r\nThe filename priorities are currently:\r\n```\r\nLICENSE*\r\nNOTICE*\r\nCOPYING*\r\nREADME*\r\n```\r\n\r\nThis does not affect other declared license files like `*.nuspec` or `pom.xml` because those have a higher priority `IPR.LicenseType`.\r\n\r\n## Checklist\r\n- [x] Code in this PR is covered by automated tests.\r\n",
456
+ "performed_via_github_app": null
457
+ },
458
+ {
459
+ "url": "https://api.github.com/repos/fossas/basis/issues/721",
460
+ "repository_url": "https://api.github.com/repos/fossas/basis",
461
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/721/labels{/name}",
462
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/721/comments",
463
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/721/events",
464
+ "html_url": "https://github.com/fossas/basis/pull/721",
465
+ "id": 696083454,
466
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyMjE5MDI3",
467
+ "number": 721,
468
+ "title": "Added max file size to expander",
469
+ "user": {
470
+ "login": "aluttik",
471
+ "id": 10134357,
472
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
473
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
474
+ "gravatar_id": "",
475
+ "url": "https://api.github.com/users/aluttik",
476
+ "html_url": "https://github.com/aluttik",
477
+ "followers_url": "https://api.github.com/users/aluttik/followers",
478
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
479
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
480
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
481
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
482
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
483
+ "repos_url": "https://api.github.com/users/aluttik/repos",
484
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
485
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
486
+ "type": "User",
487
+ "site_admin": false
488
+ },
489
+ "labels": [
490
+
491
+ ],
492
+ "state": "open",
493
+ "locked": false,
494
+ "assignee": null,
495
+ "assignees": [
496
+
497
+ ],
498
+ "milestone": null,
499
+ "comments": 2,
500
+ "created_at": "2020-09-08T18:22:28Z",
501
+ "updated_at": "2020-09-08T18:28:27Z",
502
+ "closed_at": null,
503
+ "author_association": "CONTRIBUTOR",
504
+ "active_lock_reason": null,
505
+ "pull_request": {
506
+ "url": "https://api.github.com/repos/fossas/basis/pulls/721",
507
+ "html_url": "https://github.com/fossas/basis/pull/721",
508
+ "diff_url": "https://github.com/fossas/basis/pull/721.diff",
509
+ "patch_url": "https://github.com/fossas/basis/pull/721.patch"
510
+ },
511
+ "body": "## What\r\n\r\nThis PR is more of a suggestion. I'd like to start a conversation about this before merging and I don't mind changing any part of it or just closing it if that's what we think is best.\r\n\r\nThis change would make it so that empty files with a `!_fossa.toobig_!` suffix would be added in place of decompressing files that would be >10GB in size when decompressed.\r\n\r\n## Why\r\n\r\nSometimes when expanding we'll run into issues where the uncompressed size of a file will be like >60GB. This takes up a lot of space and CPU for the component analysis workers, and I'm not sure if the fingerprint we'd get out of it is worth the cost and possible complications.\r\n\r\n## How\r\n\r\nWhen we know the uncompressed size of an archived file, we can just create an empty file in its place if it is too big.\r\n\r\n## Checklist\r\n- [x] Code in this PR is covered by automated tests.",
512
+ "performed_via_github_app": null
513
+ },
514
+ {
515
+ "url": "https://api.github.com/repos/fossas/basis/issues/720",
516
+ "repository_url": "https://api.github.com/repos/fossas/basis",
517
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/720/labels{/name}",
518
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/720/comments",
519
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/720/events",
520
+ "html_url": "https://github.com/fossas/basis/pull/720",
521
+ "id": 695979125,
522
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgyMTMyODE3",
523
+ "number": 720,
524
+ "title": "[ramjet] Wrap up state tracking transitions",
525
+ "user": {
526
+ "login": "taliamccormick",
527
+ "id": 13280845,
528
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
529
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
530
+ "gravatar_id": "",
531
+ "url": "https://api.github.com/users/taliamccormick",
532
+ "html_url": "https://github.com/taliamccormick",
533
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
534
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
535
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
536
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
537
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
538
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
539
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
540
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
541
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
542
+ "type": "User",
543
+ "site_admin": false
544
+ },
545
+ "labels": [
546
+ {
547
+ "id": 2285388797,
548
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
549
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
550
+ "name": "analysis",
551
+ "color": "83ef83",
552
+ "default": false,
553
+ "description": ""
554
+ },
555
+ {
556
+ "id": 2287593135,
557
+ "node_id": "MDU6TGFiZWwyMjg3NTkzMTM1",
558
+ "url": "https://api.github.com/repos/fossas/basis/labels/in%20review",
559
+ "name": "in review",
560
+ "color": "d059db",
561
+ "default": false,
562
+ "description": "Signify that the PR is in review"
563
+ },
564
+ {
565
+ "id": 2242944920,
566
+ "node_id": "MDU6TGFiZWwyMjQyOTQ0OTIw",
567
+ "url": "https://api.github.com/repos/fossas/basis/labels/knowledge",
568
+ "name": "knowledge",
569
+ "color": "fef2c0",
570
+ "default": false,
571
+ "description": "knowledge team work"
572
+ },
573
+ {
574
+ "id": 2242947217,
575
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MjE3",
576
+ "url": "https://api.github.com/repos/fossas/basis/labels/ramjet",
577
+ "name": "ramjet",
578
+ "color": "cca3e2",
579
+ "default": false,
580
+ "description": ""
581
+ }
582
+ ],
583
+ "state": "open",
584
+ "locked": false,
585
+ "assignee": null,
586
+ "assignees": [
587
+
588
+ ],
589
+ "milestone": null,
590
+ "comments": 2,
591
+ "created_at": "2020-09-08T15:37:44Z",
592
+ "updated_at": "2020-09-09T16:55:56Z",
593
+ "closed_at": null,
594
+ "author_association": "CONTRIBUTOR",
595
+ "active_lock_reason": null,
596
+ "pull_request": {
597
+ "url": "https://api.github.com/repos/fossas/basis/pulls/720",
598
+ "html_url": "https://github.com/fossas/basis/pull/720",
599
+ "diff_url": "https://github.com/fossas/basis/pull/720.diff",
600
+ "patch_url": "https://github.com/fossas/basis/pull/720.patch"
601
+ },
602
+ "body": "## What\r\n\r\nReplaces https://github.com/fossas/basis/pull/623, per newer discussion\r\n\r\nMandate state tracking transitions for components (eg. a component can not jump to being \"in progress\" without first being queued)\r\n\r\nRequesting review from either @aluttik @microsoftly , CC @microsoftly \r\n\r\n## Why\r\n\r\nLogically, component states should transition in logical ways (eg. should not jump directly from Failed to InProgress). This PR enforces these transitions\r\n\r\nFurther discussion & detail here:\r\nhttps://github.com/fossas/basis/issues/549\r\nhttps://teamfossa.slack.com/archives/C0155DXDMP1/p1599178239054500\r\n\r\n## How\r\n\r\n1. Update to use squirrel library to build queries\r\n2. We allow these transitions\r\n```\r\nUnalyzed -> Queued\r\nQueued -> InProgress, Queued (may clear queue and need to requeue)\r\nInProgress -> Analyzed, Failed, Queued (may succeed, fail. May also timeout and then be cleared from faktory or have us scale down kube midway through analysis)\r\nAnalyzed -> Queued (may need too be re-analyzed at some point if we want certain components to be scanned with a different scan type)\r\nFailed -> Queued (may requeue if failed due to rate-limiting)\r\n```\r\n3. Add tests for these cases\r\n4. Update other integration tests which rely on state\r\n\r\n## Security Impact\r\n\r\n\r\nChecklist:\r\n- [x] Code in this PR is covered by automated tests.\r\n- [ ] New inputs in this PR are validated and sanitized (example: user input or data read from other systems).\r\n\r\n## Dependency Changes\r\n\r\nNA (makes use of Squirrel, which is already used throughout basis)\r\n",
603
+ "performed_via_github_app": null
604
+ },
605
+ {
606
+ "url": "https://api.github.com/repos/fossas/basis/issues/719",
607
+ "repository_url": "https://api.github.com/repos/fossas/basis",
608
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/719/labels{/name}",
609
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/719/comments",
610
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/719/events",
611
+ "html_url": "https://github.com/fossas/basis/pull/719",
612
+ "id": 695518149,
613
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgxNzUwMzU4",
614
+ "number": 719,
615
+ "title": "Ninja Build Graph Tables",
616
+ "user": {
617
+ "login": "thedeerchild",
618
+ "id": 1609616,
619
+ "node_id": "MDQ6VXNlcjE2MDk2MTY=",
620
+ "avatar_url": "https://avatars0.githubusercontent.com/u/1609616?v=4",
621
+ "gravatar_id": "",
622
+ "url": "https://api.github.com/users/thedeerchild",
623
+ "html_url": "https://github.com/thedeerchild",
624
+ "followers_url": "https://api.github.com/users/thedeerchild/followers",
625
+ "following_url": "https://api.github.com/users/thedeerchild/following{/other_user}",
626
+ "gists_url": "https://api.github.com/users/thedeerchild/gists{/gist_id}",
627
+ "starred_url": "https://api.github.com/users/thedeerchild/starred{/owner}{/repo}",
628
+ "subscriptions_url": "https://api.github.com/users/thedeerchild/subscriptions",
629
+ "organizations_url": "https://api.github.com/users/thedeerchild/orgs",
630
+ "repos_url": "https://api.github.com/users/thedeerchild/repos",
631
+ "events_url": "https://api.github.com/users/thedeerchild/events{/privacy}",
632
+ "received_events_url": "https://api.github.com/users/thedeerchild/received_events",
633
+ "type": "User",
634
+ "site_admin": false
635
+ },
636
+ "labels": [
637
+
638
+ ],
639
+ "state": "open",
640
+ "locked": false,
641
+ "assignee": null,
642
+ "assignees": [
643
+
644
+ ],
645
+ "milestone": null,
646
+ "comments": 1,
647
+ "created_at": "2020-09-08T03:34:12Z",
648
+ "updated_at": "2020-09-08T22:27:16Z",
649
+ "closed_at": null,
650
+ "author_association": "CONTRIBUTOR",
651
+ "active_lock_reason": null,
652
+ "pull_request": {
653
+ "url": "https://api.github.com/repos/fossas/basis/pulls/719",
654
+ "html_url": "https://github.com/fossas/basis/pull/719",
655
+ "diff_url": "https://github.com/fossas/basis/pull/719.diff",
656
+ "patch_url": "https://github.com/fossas/basis/pull/719.patch"
657
+ },
658
+ "body": "Adds DB tables for Ninja build graph data. I'm OOO this week, so feel free to merge if LGTM'd.",
659
+ "performed_via_github_app": null
660
+ },
661
+ {
662
+ "url": "https://api.github.com/repos/fossas/basis/issues/716",
663
+ "repository_url": "https://api.github.com/repos/fossas/basis",
664
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/716/labels{/name}",
665
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/716/comments",
666
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/716/events",
667
+ "html_url": "https://github.com/fossas/basis/pull/716",
668
+ "id": 693711373,
669
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDgwMTgxMDE4",
670
+ "number": 716,
671
+ "title": "ghost files support in scotland yard",
672
+ "user": {
673
+ "login": "anuccio1",
674
+ "id": 3067666,
675
+ "node_id": "MDQ6VXNlcjMwNjc2NjY=",
676
+ "avatar_url": "https://avatars2.githubusercontent.com/u/3067666?v=4",
677
+ "gravatar_id": "",
678
+ "url": "https://api.github.com/users/anuccio1",
679
+ "html_url": "https://github.com/anuccio1",
680
+ "followers_url": "https://api.github.com/users/anuccio1/followers",
681
+ "following_url": "https://api.github.com/users/anuccio1/following{/other_user}",
682
+ "gists_url": "https://api.github.com/users/anuccio1/gists{/gist_id}",
683
+ "starred_url": "https://api.github.com/users/anuccio1/starred{/owner}{/repo}",
684
+ "subscriptions_url": "https://api.github.com/users/anuccio1/subscriptions",
685
+ "organizations_url": "https://api.github.com/users/anuccio1/orgs",
686
+ "repos_url": "https://api.github.com/users/anuccio1/repos",
687
+ "events_url": "https://api.github.com/users/anuccio1/events{/privacy}",
688
+ "received_events_url": "https://api.github.com/users/anuccio1/received_events",
689
+ "type": "User",
690
+ "site_admin": false
691
+ },
692
+ "labels": [
693
+ {
694
+ "id": 2012655720,
695
+ "node_id": "MDU6TGFiZWwyMDEyNjU1NzIw",
696
+ "url": "https://api.github.com/repos/fossas/basis/labels/DO%20NOT%20MERGE",
697
+ "name": "DO NOT MERGE",
698
+ "color": "b60205",
699
+ "default": false,
700
+ "description": ""
701
+ }
702
+ ],
703
+ "state": "open",
704
+ "locked": false,
705
+ "assignee": null,
706
+ "assignees": [
707
+
708
+ ],
709
+ "milestone": null,
710
+ "comments": 2,
711
+ "created_at": "2020-09-04T22:03:06Z",
712
+ "updated_at": "2020-09-08T22:45:40Z",
713
+ "closed_at": null,
714
+ "author_association": "CONTRIBUTOR",
715
+ "active_lock_reason": null,
716
+ "pull_request": {
717
+ "url": "https://api.github.com/repos/fossas/basis/pulls/716",
718
+ "html_url": "https://github.com/fossas/basis/pull/716",
719
+ "diff_url": "https://github.com/fossas/basis/pull/716.diff",
720
+ "patch_url": "https://github.com/fossas/basis/pull/716.patch"
721
+ },
722
+ "body": "## What\r\n\r\nThis PR adds support for expanded archive files (Ghost Files) in Scotland Yard.\r\n\r\nUI Mocks: https://www.figma.com/file/sNe1Y0Aa7c93NxXGpxCDSe/VPS%3A-Archive-in-File-Tree?node-id=0%3A1\r\n\r\n## Why\r\n\r\nIn order to show users the scan results of files inside of their archives, we needed to turn this feature on when importing file inferences from Sherlock\r\n\r\n## How\r\n\r\nThis PR consists of a few changes:\r\n\r\n1) Add query param \"?full=true\" in the call to `sherlock` from the `scotland-yard-worker`. This will tell `sherlock` to include ghost files in the response\r\n\r\n2) Add a migration to the Scotland Yard DB that adds a new column to `scan_files` named `is_expanded`. If an original file was expanded, we mark this column as `true` in the DB. \r\n\r\n3) Modify the Materialized view to include `is_archive`, which basically checks if a directory ends with `!_fossa.virtual_!`. If it does, we know that the folder is an expanded archive, and we will return this in the API\r\n\r\n4) Modify the `ListFiles` endpoint to return\r\n - display file path `filePath` which is the file path stripped of occurrences of `!_fossa.virtual_!` so we don't show that in the UI.\r\n - `fullFilePath` which includes the full path, so the UI can make correct queries to SY. \r\n - `isGhostFile` - is the file part of an archive\r\n - `isArchive` - is the file an expanded archive\r\n\r\nWe also will by default ignore the original archive if we have the expanded contents. This is to minimize confusion in the UI (they would see both a folder and a file with the same name)\r\n\r\n## Security Impact\r\n\r\nNo Security impact AFAICT\r\n\r\nChecklist:\r\nTODO\r\n\r\n## Dependency Changes\r\n\r\nNone",
723
+ "performed_via_github_app": null
724
+ },
725
+ {
726
+ "url": "https://api.github.com/repos/fossas/basis/issues/709",
727
+ "repository_url": "https://api.github.com/repos/fossas/basis",
728
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/709/labels{/name}",
729
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/709/comments",
730
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/709/events",
731
+ "html_url": "https://github.com/fossas/basis/issues/709",
732
+ "id": 692528067,
733
+ "node_id": "MDU6SXNzdWU2OTI1MjgwNjc=",
734
+ "number": 709,
735
+ "title": "Add LicenseBoundariesType field to IPR.File",
736
+ "user": {
737
+ "login": "aluttik",
738
+ "id": 10134357,
739
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
740
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
741
+ "gravatar_id": "",
742
+ "url": "https://api.github.com/users/aluttik",
743
+ "html_url": "https://github.com/aluttik",
744
+ "followers_url": "https://api.github.com/users/aluttik/followers",
745
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
746
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
747
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
748
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
749
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
750
+ "repos_url": "https://api.github.com/users/aluttik/repos",
751
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
752
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
753
+ "type": "User",
754
+ "site_admin": false
755
+ },
756
+ "labels": [
757
+ {
758
+ "id": 2285389198,
759
+ "node_id": "MDU6TGFiZWwyMjg1Mzg5MTk4",
760
+ "url": "https://api.github.com/repos/fossas/basis/labels/IPR",
761
+ "name": "IPR",
762
+ "color": "d79aea",
763
+ "default": false,
764
+ "description": ""
765
+ },
766
+ {
767
+ "id": 2233957218,
768
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
769
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
770
+ "name": "task",
771
+ "color": "ed8917",
772
+ "default": false,
773
+ "description": ""
774
+ },
775
+ {
776
+ "id": 2242946206,
777
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
778
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
779
+ "name": "tech debt",
780
+ "color": "ffccfc",
781
+ "default": false,
782
+ "description": ""
783
+ },
784
+ {
785
+ "id": 2292163570,
786
+ "node_id": "MDU6TGFiZWwyMjkyMTYzNTcw",
787
+ "url": "https://api.github.com/repos/fossas/basis/labels/xs(%3C=1%20eng%20day)",
788
+ "name": "xs(<=1 eng day)",
789
+ "color": "bfd4f2",
790
+ "default": false,
791
+ "description": ""
792
+ }
793
+ ],
794
+ "state": "open",
795
+ "locked": false,
796
+ "assignee": {
797
+ "login": "aluttik",
798
+ "id": 10134357,
799
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
800
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
801
+ "gravatar_id": "",
802
+ "url": "https://api.github.com/users/aluttik",
803
+ "html_url": "https://github.com/aluttik",
804
+ "followers_url": "https://api.github.com/users/aluttik/followers",
805
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
806
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
807
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
808
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
809
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
810
+ "repos_url": "https://api.github.com/users/aluttik/repos",
811
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
812
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
813
+ "type": "User",
814
+ "site_admin": false
815
+ },
816
+ "assignees": [
817
+ {
818
+ "login": "aluttik",
819
+ "id": 10134357,
820
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
821
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
822
+ "gravatar_id": "",
823
+ "url": "https://api.github.com/users/aluttik",
824
+ "html_url": "https://github.com/aluttik",
825
+ "followers_url": "https://api.github.com/users/aluttik/followers",
826
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
827
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
828
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
829
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
830
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
831
+ "repos_url": "https://api.github.com/users/aluttik/repos",
832
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
833
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
834
+ "type": "User",
835
+ "site_admin": false
836
+ }
837
+ ],
838
+ "milestone": null,
839
+ "comments": 0,
840
+ "created_at": "2020-09-04T00:01:54Z",
841
+ "updated_at": "2020-09-04T00:02:44Z",
842
+ "closed_at": null,
843
+ "author_association": "CONTRIBUTOR",
844
+ "active_lock_reason": null,
845
+ "body": "Requested by VPS team.\r\n\r\nAdd a field to an IPR.File that describes what license boundary expansion strategy was used to set the offsets/line numbers in the license expression.\r\n\r\nIt can be one of these strings:\r\n```\r\nnone\r\nbinary\r\ncode\r\nspecial\r\ntext\r\n```\r\n\r\nWhen there are no `LicenseExpressions`, the field should be `\"none\"`.",
846
+ "performed_via_github_app": null
847
+ },
848
+ {
849
+ "url": "https://api.github.com/repos/fossas/basis/issues/701",
850
+ "repository_url": "https://api.github.com/repos/fossas/basis",
851
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/701/labels{/name}",
852
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/701/comments",
853
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/701/events",
854
+ "html_url": "https://github.com/fossas/basis/issues/701",
855
+ "id": 691300376,
856
+ "node_id": "MDU6SXNzdWU2OTEzMDAzNzY=",
857
+ "number": 701,
858
+ "title": "Faktory queue based pod autoscaling",
859
+ "user": {
860
+ "login": "microsoftly",
861
+ "id": 4560399,
862
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
863
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
864
+ "gravatar_id": "",
865
+ "url": "https://api.github.com/users/microsoftly",
866
+ "html_url": "https://github.com/microsoftly",
867
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
868
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
869
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
870
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
871
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
872
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
873
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
874
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
875
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
876
+ "type": "User",
877
+ "site_admin": false
878
+ },
879
+ "labels": [
880
+ {
881
+ "id": 2317081331,
882
+ "node_id": "MDU6TGFiZWwyMzE3MDgxMzMx",
883
+ "url": "https://api.github.com/repos/fossas/basis/labels/XL(8%20eng%20day)",
884
+ "name": "XL(8 eng day)",
885
+ "color": "bfd4f2",
886
+ "default": false,
887
+ "description": ""
888
+ },
889
+ {
890
+ "id": 2233957218,
891
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
892
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
893
+ "name": "task",
894
+ "color": "ed8917",
895
+ "default": false,
896
+ "description": ""
897
+ },
898
+ {
899
+ "id": 2242946206,
900
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
901
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
902
+ "name": "tech debt",
903
+ "color": "ffccfc",
904
+ "default": false,
905
+ "description": ""
906
+ }
907
+ ],
908
+ "state": "open",
909
+ "locked": false,
910
+ "assignee": null,
911
+ "assignees": [
912
+
913
+ ],
914
+ "milestone": {
915
+ "url": "https://api.github.com/repos/fossas/basis/milestones/8",
916
+ "html_url": "https://github.com/fossas/basis/milestone/8",
917
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/8/labels",
918
+ "id": 5837416,
919
+ "node_id": "MDk6TWlsZXN0b25lNTgzNzQxNg==",
920
+ "number": 8,
921
+ "title": "Kube/Deployment improvements",
922
+ "description": "",
923
+ "creator": {
924
+ "login": "microsoftly",
925
+ "id": 4560399,
926
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
927
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
928
+ "gravatar_id": "",
929
+ "url": "https://api.github.com/users/microsoftly",
930
+ "html_url": "https://github.com/microsoftly",
931
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
932
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
933
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
934
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
935
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
936
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
937
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
938
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
939
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
940
+ "type": "User",
941
+ "site_admin": false
942
+ },
943
+ "open_issues": 5,
944
+ "closed_issues": 0,
945
+ "state": "open",
946
+ "created_at": "2020-09-02T16:20:50Z",
947
+ "updated_at": "2020-09-02T19:21:25Z",
948
+ "due_on": null,
949
+ "closed_at": null
950
+ },
951
+ "comments": 0,
952
+ "created_at": "2020-09-02T18:20:22Z",
953
+ "updated_at": "2020-09-04T00:15:30Z",
954
+ "closed_at": null,
955
+ "author_association": "CONTRIBUTOR",
956
+ "active_lock_reason": null,
957
+ "body": "# Description\r\nAdd service that allows kube analysis worker deployments to proportionally scale to a defined _max_ number of pods based on the size of a taskqueue in faktory.\r\n\r\n# Equation\r\nThere are three variables that determine pod counts\r\n* `queueSize`: the size of the queue\r\n* `podStepSize`: configurable, the desired number of messages in the queue per pod. \r\n* `maxPods`: configurable, the max scale of pods that can be running\r\n```\r\nPodCount=\r\n MIN(\r\n CIELING(QSize/stepSize),\r\n maxPods\r\n )\r\n```\r\n\r\n# Acceptance Criteria\r\n* Checks for changes in pod scale are performed every 5 minutes\r\n\r\n\r\nThe following scenarios are met (test fixture):\r\n| queue size | queue-pod step size | max pods | current pod count | ∆ in pod count | final pod count |\r\n|------------|---------------------|----------|-------------------|----------------|-----------------|\r\n| 0 | 1000 | 10 | 9 | -9 | 0 |\r\n| 1000 | 1000 | 10 | 2 | -1 | 1 |\r\n| 5000 | 1000 | 10 | 2 | 3 | 5 |\r\n| 90000000 | 1000 | 10 | 0 | 10 | 10 |\r\n| 15 | 5 | 10 | 0 | 3 | 3 |\r\n| 1 | 5 | 10 | 4 | -3 | 1 |\r\n",
958
+ "performed_via_github_app": null
959
+ },
960
+ {
961
+ "url": "https://api.github.com/repos/fossas/basis/issues/700",
962
+ "repository_url": "https://api.github.com/repos/fossas/basis",
963
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/700/labels{/name}",
964
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/700/comments",
965
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/700/events",
966
+ "html_url": "https://github.com/fossas/basis/issues/700",
967
+ "id": 691300323,
968
+ "node_id": "MDU6SXNzdWU2OTEzMDAzMjM=",
969
+ "number": 700,
970
+ "title": "tooling for kube testing locally using kind",
971
+ "user": {
972
+ "login": "microsoftly",
973
+ "id": 4560399,
974
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
975
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
976
+ "gravatar_id": "",
977
+ "url": "https://api.github.com/users/microsoftly",
978
+ "html_url": "https://github.com/microsoftly",
979
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
980
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
981
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
982
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
983
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
984
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
985
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
986
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
987
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
988
+ "type": "User",
989
+ "site_admin": false
990
+ },
991
+ "labels": [
992
+
993
+ ],
994
+ "state": "open",
995
+ "locked": false,
996
+ "assignee": null,
997
+ "assignees": [
998
+
999
+ ],
1000
+ "milestone": {
1001
+ "url": "https://api.github.com/repos/fossas/basis/milestones/8",
1002
+ "html_url": "https://github.com/fossas/basis/milestone/8",
1003
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/8/labels",
1004
+ "id": 5837416,
1005
+ "node_id": "MDk6TWlsZXN0b25lNTgzNzQxNg==",
1006
+ "number": 8,
1007
+ "title": "Kube/Deployment improvements",
1008
+ "description": "",
1009
+ "creator": {
1010
+ "login": "microsoftly",
1011
+ "id": 4560399,
1012
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1013
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1014
+ "gravatar_id": "",
1015
+ "url": "https://api.github.com/users/microsoftly",
1016
+ "html_url": "https://github.com/microsoftly",
1017
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1018
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1019
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1020
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1021
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1022
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1023
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1024
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1025
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1026
+ "type": "User",
1027
+ "site_admin": false
1028
+ },
1029
+ "open_issues": 5,
1030
+ "closed_issues": 0,
1031
+ "state": "open",
1032
+ "created_at": "2020-09-02T16:20:50Z",
1033
+ "updated_at": "2020-09-02T19:21:25Z",
1034
+ "due_on": null,
1035
+ "closed_at": null
1036
+ },
1037
+ "comments": 0,
1038
+ "created_at": "2020-09-02T18:20:17Z",
1039
+ "updated_at": "2020-09-02T19:21:21Z",
1040
+ "closed_at": null,
1041
+ "author_association": "CONTRIBUTOR",
1042
+ "active_lock_reason": null,
1043
+ "body": "# Description\r\nAdd tooling to allow ramjet to support `kind` for local kube testing",
1044
+ "performed_via_github_app": null
1045
+ },
1046
+ {
1047
+ "url": "https://api.github.com/repos/fossas/basis/issues/699",
1048
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1049
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/699/labels{/name}",
1050
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/699/comments",
1051
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/699/events",
1052
+ "html_url": "https://github.com/fossas/basis/issues/699",
1053
+ "id": 691300274,
1054
+ "node_id": "MDU6SXNzdWU2OTEzMDAyNzQ=",
1055
+ "number": 699,
1056
+ "title": "Update GH workflows and documentation for tagged releases",
1057
+ "user": {
1058
+ "login": "microsoftly",
1059
+ "id": 4560399,
1060
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1061
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1062
+ "gravatar_id": "",
1063
+ "url": "https://api.github.com/users/microsoftly",
1064
+ "html_url": "https://github.com/microsoftly",
1065
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1066
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1067
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1068
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1069
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1070
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1071
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1072
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1073
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1074
+ "type": "User",
1075
+ "site_admin": false
1076
+ },
1077
+ "labels": [
1078
+
1079
+ ],
1080
+ "state": "open",
1081
+ "locked": false,
1082
+ "assignee": null,
1083
+ "assignees": [
1084
+
1085
+ ],
1086
+ "milestone": {
1087
+ "url": "https://api.github.com/repos/fossas/basis/milestones/8",
1088
+ "html_url": "https://github.com/fossas/basis/milestone/8",
1089
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/8/labels",
1090
+ "id": 5837416,
1091
+ "node_id": "MDk6TWlsZXN0b25lNTgzNzQxNg==",
1092
+ "number": 8,
1093
+ "title": "Kube/Deployment improvements",
1094
+ "description": "",
1095
+ "creator": {
1096
+ "login": "microsoftly",
1097
+ "id": 4560399,
1098
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1099
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1100
+ "gravatar_id": "",
1101
+ "url": "https://api.github.com/users/microsoftly",
1102
+ "html_url": "https://github.com/microsoftly",
1103
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1104
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1105
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1106
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1107
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1108
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1109
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1110
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1111
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1112
+ "type": "User",
1113
+ "site_admin": false
1114
+ },
1115
+ "open_issues": 5,
1116
+ "closed_issues": 0,
1117
+ "state": "open",
1118
+ "created_at": "2020-09-02T16:20:50Z",
1119
+ "updated_at": "2020-09-02T19:21:25Z",
1120
+ "due_on": null,
1121
+ "closed_at": null
1122
+ },
1123
+ "comments": 1,
1124
+ "created_at": "2020-09-02T18:20:13Z",
1125
+ "updated_at": "2020-09-02T19:21:16Z",
1126
+ "closed_at": null,
1127
+ "author_association": "CONTRIBUTOR",
1128
+ "active_lock_reason": null,
1129
+ "body": "",
1130
+ "performed_via_github_app": null
1131
+ },
1132
+ {
1133
+ "url": "https://api.github.com/repos/fossas/basis/issues/698",
1134
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1135
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/698/labels{/name}",
1136
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/698/comments",
1137
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/698/events",
1138
+ "html_url": "https://github.com/fossas/basis/issues/698",
1139
+ "id": 691167137,
1140
+ "node_id": "MDU6SXNzdWU2OTExNjcxMzc=",
1141
+ "number": 698,
1142
+ "title": "update fossa/f2-kube to use helm charts",
1143
+ "user": {
1144
+ "login": "microsoftly",
1145
+ "id": 4560399,
1146
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1147
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1148
+ "gravatar_id": "",
1149
+ "url": "https://api.github.com/users/microsoftly",
1150
+ "html_url": "https://github.com/microsoftly",
1151
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1152
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1153
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1154
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1155
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1156
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1157
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1158
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1159
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1160
+ "type": "User",
1161
+ "site_admin": false
1162
+ },
1163
+ "labels": [
1164
+ {
1165
+ "id": 2233957218,
1166
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
1167
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
1168
+ "name": "task",
1169
+ "color": "ed8917",
1170
+ "default": false,
1171
+ "description": ""
1172
+ },
1173
+ {
1174
+ "id": 2242946206,
1175
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
1176
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
1177
+ "name": "tech debt",
1178
+ "color": "ffccfc",
1179
+ "default": false,
1180
+ "description": ""
1181
+ },
1182
+ {
1183
+ "id": 2292163570,
1184
+ "node_id": "MDU6TGFiZWwyMjkyMTYzNTcw",
1185
+ "url": "https://api.github.com/repos/fossas/basis/labels/xs(%3C=1%20eng%20day)",
1186
+ "name": "xs(<=1 eng day)",
1187
+ "color": "bfd4f2",
1188
+ "default": false,
1189
+ "description": ""
1190
+ }
1191
+ ],
1192
+ "state": "open",
1193
+ "locked": false,
1194
+ "assignee": null,
1195
+ "assignees": [
1196
+
1197
+ ],
1198
+ "milestone": {
1199
+ "url": "https://api.github.com/repos/fossas/basis/milestones/8",
1200
+ "html_url": "https://github.com/fossas/basis/milestone/8",
1201
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/8/labels",
1202
+ "id": 5837416,
1203
+ "node_id": "MDk6TWlsZXN0b25lNTgzNzQxNg==",
1204
+ "number": 8,
1205
+ "title": "Kube/Deployment improvements",
1206
+ "description": "",
1207
+ "creator": {
1208
+ "login": "microsoftly",
1209
+ "id": 4560399,
1210
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1211
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1212
+ "gravatar_id": "",
1213
+ "url": "https://api.github.com/users/microsoftly",
1214
+ "html_url": "https://github.com/microsoftly",
1215
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1216
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1217
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1218
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1219
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1220
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1221
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1222
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1223
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1224
+ "type": "User",
1225
+ "site_admin": false
1226
+ },
1227
+ "open_issues": 5,
1228
+ "closed_issues": 0,
1229
+ "state": "open",
1230
+ "created_at": "2020-09-02T16:20:50Z",
1231
+ "updated_at": "2020-09-02T19:21:25Z",
1232
+ "due_on": null,
1233
+ "closed_at": null
1234
+ },
1235
+ "comments": 0,
1236
+ "created_at": "2020-09-02T16:24:28Z",
1237
+ "updated_at": "2020-09-02T19:21:12Z",
1238
+ "closed_at": null,
1239
+ "author_association": "CONTRIBUTOR",
1240
+ "active_lock_reason": null,
1241
+ "body": "# Description\r\nUpdate fossas/f2-kube to use helm charts for spot workers. \r\n\r\n# Acceptance Criteria\r\n* helm chart templates out a spot worker\r\n* values defined for: `default`, `rpm`, and `aosp` queue workers\r\n* README updated with description on how to setup helm and manually deploy with helm ",
1242
+ "performed_via_github_app": null
1243
+ },
1244
+ {
1245
+ "url": "https://api.github.com/repos/fossas/basis/issues/697",
1246
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1247
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/697/labels{/name}",
1248
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/697/comments",
1249
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/697/events",
1250
+ "html_url": "https://github.com/fossas/basis/issues/697",
1251
+ "id": 691161453,
1252
+ "node_id": "MDU6SXNzdWU2OTExNjE0NTM=",
1253
+ "number": 697,
1254
+ "title": "Kube/Deployment improvements",
1255
+ "user": {
1256
+ "login": "microsoftly",
1257
+ "id": 4560399,
1258
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1259
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1260
+ "gravatar_id": "",
1261
+ "url": "https://api.github.com/users/microsoftly",
1262
+ "html_url": "https://github.com/microsoftly",
1263
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1264
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1265
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1266
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1267
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1268
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1269
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1270
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1271
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1272
+ "type": "User",
1273
+ "site_admin": false
1274
+ },
1275
+ "labels": [
1276
+ {
1277
+ "id": 2233963128,
1278
+ "node_id": "MDU6TGFiZWwyMjMzOTYzMTI4",
1279
+ "url": "https://api.github.com/repos/fossas/basis/labels/story",
1280
+ "name": "story",
1281
+ "color": "7139ba",
1282
+ "default": false,
1283
+ "description": ""
1284
+ },
1285
+ {
1286
+ "id": 2242946206,
1287
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
1288
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
1289
+ "name": "tech debt",
1290
+ "color": "ffccfc",
1291
+ "default": false,
1292
+ "description": ""
1293
+ }
1294
+ ],
1295
+ "state": "open",
1296
+ "locked": false,
1297
+ "assignee": null,
1298
+ "assignees": [
1299
+
1300
+ ],
1301
+ "milestone": {
1302
+ "url": "https://api.github.com/repos/fossas/basis/milestones/8",
1303
+ "html_url": "https://github.com/fossas/basis/milestone/8",
1304
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/8/labels",
1305
+ "id": 5837416,
1306
+ "node_id": "MDk6TWlsZXN0b25lNTgzNzQxNg==",
1307
+ "number": 8,
1308
+ "title": "Kube/Deployment improvements",
1309
+ "description": "",
1310
+ "creator": {
1311
+ "login": "microsoftly",
1312
+ "id": 4560399,
1313
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1314
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1315
+ "gravatar_id": "",
1316
+ "url": "https://api.github.com/users/microsoftly",
1317
+ "html_url": "https://github.com/microsoftly",
1318
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1319
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1320
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1321
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1322
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1323
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1324
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1325
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1326
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1327
+ "type": "User",
1328
+ "site_admin": false
1329
+ },
1330
+ "open_issues": 5,
1331
+ "closed_issues": 0,
1332
+ "state": "open",
1333
+ "created_at": "2020-09-02T16:20:50Z",
1334
+ "updated_at": "2020-09-02T19:21:25Z",
1335
+ "due_on": null,
1336
+ "closed_at": null
1337
+ },
1338
+ "comments": 1,
1339
+ "created_at": "2020-09-02T16:17:42Z",
1340
+ "updated_at": "2020-09-02T18:19:42Z",
1341
+ "closed_at": null,
1342
+ "author_association": "CONTRIBUTOR",
1343
+ "active_lock_reason": null,
1344
+ "body": "# Description\r\nThe ramjet deployment pipeline is currently heavily manual and hard to test. There are several small wins we can get, and this story captures the first part of them. \r\n\r\n# Helm\r\nParameterize f2-kube yaml files into helm charts for simpler deployments and less repetitive overhead.\r\n\r\n# Tagged + Manual Releases\r\nSupport building images that we intend to deploy based on tags, with the option to support manually specified tags.\r\n\r\n# Kind-ly local test \r\nAdd tooling to allow testing with [kind](https://kind.sigs.k8s.io/). This will unlock the ability to more rapidly test features that rely on kube (e.g. autoscaling)\r\n\r\n# Queue Size Based Autoscaling\r\nUpdate deployment pod count based on the size of a faktory queue.\r\n\r\n## Future Work\r\nFuture work may require more advanced autoscaling control: e.g. multiple inputs like rate of failure for a queue (e.g. 80% of tasks are failing, so autoscale down until that number reaches an acceptable threshold or pod count goes to 0)\r\n\r\n# Simple Deployment Flow\r\nDeploy on merge to certain tag/branch structures. ",
1345
+ "performed_via_github_app": null
1346
+ },
1347
+ {
1348
+ "url": "https://api.github.com/repos/fossas/basis/issues/696",
1349
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1350
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/696/labels{/name}",
1351
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/696/comments",
1352
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/696/events",
1353
+ "html_url": "https://github.com/fossas/basis/pull/696",
1354
+ "id": 690524214,
1355
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDc3Mzk4OTQ0",
1356
+ "number": 696,
1357
+ "title": "Component Domain HTTP and Client API pseudo code draft",
1358
+ "user": {
1359
+ "login": "microsoftly",
1360
+ "id": 4560399,
1361
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1362
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1363
+ "gravatar_id": "",
1364
+ "url": "https://api.github.com/users/microsoftly",
1365
+ "html_url": "https://github.com/microsoftly",
1366
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1367
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1368
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1369
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1370
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1371
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1372
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1373
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1374
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1375
+ "type": "User",
1376
+ "site_admin": false
1377
+ },
1378
+ "labels": [
1379
+ {
1380
+ "id": 2012655720,
1381
+ "node_id": "MDU6TGFiZWwyMDEyNjU1NzIw",
1382
+ "url": "https://api.github.com/repos/fossas/basis/labels/DO%20NOT%20MERGE",
1383
+ "name": "DO NOT MERGE",
1384
+ "color": "b60205",
1385
+ "default": false,
1386
+ "description": ""
1387
+ }
1388
+ ],
1389
+ "state": "open",
1390
+ "locked": false,
1391
+ "assignee": null,
1392
+ "assignees": [
1393
+
1394
+ ],
1395
+ "milestone": null,
1396
+ "comments": 3,
1397
+ "created_at": "2020-09-01T23:57:14Z",
1398
+ "updated_at": "2020-09-04T15:37:32Z",
1399
+ "closed_at": null,
1400
+ "author_association": "CONTRIBUTOR",
1401
+ "active_lock_reason": null,
1402
+ "pull_request": {
1403
+ "url": "https://api.github.com/repos/fossas/basis/pulls/696",
1404
+ "html_url": "https://github.com/fossas/basis/pull/696",
1405
+ "diff_url": "https://github.com/fossas/basis/pull/696.diff",
1406
+ "patch_url": "https://github.com/fossas/basis/pull/696.patch"
1407
+ },
1408
+ "body": "## What\r\n\r\nThis PR provides a draft of the shape of the HTTP and client interfaces that will interact with the knowlege API. This draft only supports public data.\r\n\r\nAs noted in the code, this is written in typescript because our intended final model has a lot of disjoint unions, which I find much easier to express in typescript with generics than via explicit enumeration in golang.\r\n\r\nThe pseudo code is very terse, let me know if you want me to go back and sprinkle in more comments to make what is happening and what does what more clear.\r\n\r\n## Why\r\n\r\nTo get buy in on the design before more work is put into the design. I tried to encompass what functionality was needed from the knowledge API as described in the high level unified scan doc as well as other low hanging fruit for the API as a whole.\r\n",
1409
+ "performed_via_github_app": null
1410
+ },
1411
+ {
1412
+ "url": "https://api.github.com/repos/fossas/basis/issues/695",
1413
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1414
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/695/labels{/name}",
1415
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/695/comments",
1416
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/695/events",
1417
+ "html_url": "https://github.com/fossas/basis/issues/695",
1418
+ "id": 690370623,
1419
+ "node_id": "MDU6SXNzdWU2OTAzNzA2MjM=",
1420
+ "number": 695,
1421
+ "title": "nuget analysis execution",
1422
+ "user": {
1423
+ "login": "microsoftly",
1424
+ "id": 4560399,
1425
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1426
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1427
+ "gravatar_id": "",
1428
+ "url": "https://api.github.com/users/microsoftly",
1429
+ "html_url": "https://github.com/microsoftly",
1430
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1431
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1432
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1433
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1434
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1435
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1436
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1437
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1438
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1439
+ "type": "User",
1440
+ "site_admin": false
1441
+ },
1442
+ "labels": [
1443
+ {
1444
+ "id": 2292198574,
1445
+ "node_id": "MDU6TGFiZWwyMjkyMTk4NTc0",
1446
+ "url": "https://api.github.com/repos/fossas/basis/labels/XXL(13%20eng%20day)",
1447
+ "name": "XXL(13 eng day)",
1448
+ "color": "bfd4f2",
1449
+ "default": false,
1450
+ "description": ""
1451
+ },
1452
+ {
1453
+ "id": 2285388797,
1454
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
1455
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
1456
+ "name": "analysis",
1457
+ "color": "83ef83",
1458
+ "default": false,
1459
+ "description": ""
1460
+ },
1461
+ {
1462
+ "id": 1715002859,
1463
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
1464
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
1465
+ "name": "feature",
1466
+ "color": "a2eeef",
1467
+ "default": false,
1468
+ "description": "New feature or request"
1469
+ },
1470
+ {
1471
+ "id": 2314884738,
1472
+ "node_id": "MDU6TGFiZWwyMzE0ODg0NzM4",
1473
+ "url": "https://api.github.com/repos/fossas/basis/labels/passive",
1474
+ "name": "passive",
1475
+ "color": "17a589",
1476
+ "default": false,
1477
+ "description": "Tasks that can generally be performed in the background"
1478
+ },
1479
+ {
1480
+ "id": 2233957218,
1481
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
1482
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
1483
+ "name": "task",
1484
+ "color": "ed8917",
1485
+ "default": false,
1486
+ "description": ""
1487
+ }
1488
+ ],
1489
+ "state": "open",
1490
+ "locked": false,
1491
+ "assignee": {
1492
+ "login": "achristianson",
1493
+ "id": 24681233,
1494
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1495
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1496
+ "gravatar_id": "",
1497
+ "url": "https://api.github.com/users/achristianson",
1498
+ "html_url": "https://github.com/achristianson",
1499
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1500
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1501
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1502
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1503
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1504
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1505
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1506
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1507
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1508
+ "type": "User",
1509
+ "site_admin": false
1510
+ },
1511
+ "assignees": [
1512
+ {
1513
+ "login": "achristianson",
1514
+ "id": 24681233,
1515
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1516
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1517
+ "gravatar_id": "",
1518
+ "url": "https://api.github.com/users/achristianson",
1519
+ "html_url": "https://github.com/achristianson",
1520
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1521
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1522
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1523
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1524
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1525
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1526
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1527
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1528
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1529
+ "type": "User",
1530
+ "site_admin": false
1531
+ }
1532
+ ],
1533
+ "milestone": {
1534
+ "url": "https://api.github.com/repos/fossas/basis/milestones/4",
1535
+ "html_url": "https://github.com/fossas/basis/milestone/4",
1536
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/4/labels",
1537
+ "id": 5833310,
1538
+ "node_id": "MDk6TWlsZXN0b25lNTgzMzMxMA==",
1539
+ "number": 4,
1540
+ "title": "Nuget Coverage",
1541
+ "description": "",
1542
+ "creator": {
1543
+ "login": "microsoftly",
1544
+ "id": 4560399,
1545
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1546
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1547
+ "gravatar_id": "",
1548
+ "url": "https://api.github.com/users/microsoftly",
1549
+ "html_url": "https://github.com/microsoftly",
1550
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1551
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1552
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1553
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1554
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1555
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1556
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1557
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1558
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1559
+ "type": "User",
1560
+ "site_admin": false
1561
+ },
1562
+ "open_issues": 5,
1563
+ "closed_issues": 0,
1564
+ "state": "open",
1565
+ "created_at": "2020-09-01T18:16:03Z",
1566
+ "updated_at": "2020-09-01T19:00:38Z",
1567
+ "due_on": null,
1568
+ "closed_at": null
1569
+ },
1570
+ "comments": 0,
1571
+ "created_at": "2020-09-01T18:54:50Z",
1572
+ "updated_at": "2020-09-01T19:06:15Z",
1573
+ "closed_at": null,
1574
+ "author_association": "CONTRIBUTOR",
1575
+ "active_lock_reason": null,
1576
+ "body": "story #691 \r\n# Description\r\nDeploy analysis workers for nuget, queue analysis jobs, and monitor for edge cases from data in the wild\r\n# Acceptance Criteria\r\n* Push nuget components to queue `NUGET-analysis` with:\r\n * commenStrippedSha and declaredLicenseScan enabled\r\n * discoveredLicnse scan disabled\r\n * 30 min timeout\r\n * 3 retries\r\n* add a nuget analysis worker kube deployment in f2-kube repo\r\n* deploy worker that consumes from `NUGET-analysis` queue\r\n* [passive] monitor for unexpected errors and rate limits using kibana. [go/ramjet-worker-dashboard](http://go/ramjet-worker-dashboard) is a good starting point.\r\n* [passive] monitor max/min pod memory and cpu usage. Adjust worker pod resource limits and requests to support more efficient pod packing per node. ",
1577
+ "performed_via_github_app": null
1578
+ },
1579
+ {
1580
+ "url": "https://api.github.com/repos/fossas/basis/issues/694",
1581
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1582
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/694/labels{/name}",
1583
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/694/comments",
1584
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/694/events",
1585
+ "html_url": "https://github.com/fossas/basis/issues/694",
1586
+ "id": 690370595,
1587
+ "node_id": "MDU6SXNzdWU2OTAzNzA1OTU=",
1588
+ "number": 694,
1589
+ "title": "update component analyzer to be compatible with nuget based components",
1590
+ "user": {
1591
+ "login": "microsoftly",
1592
+ "id": 4560399,
1593
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1594
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1595
+ "gravatar_id": "",
1596
+ "url": "https://api.github.com/users/microsoftly",
1597
+ "html_url": "https://github.com/microsoftly",
1598
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1599
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1600
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1601
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1602
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1603
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1604
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1605
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1606
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1607
+ "type": "User",
1608
+ "site_admin": false
1609
+ },
1610
+ "labels": [
1611
+ {
1612
+ "id": 2285388797,
1613
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
1614
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
1615
+ "name": "analysis",
1616
+ "color": "83ef83",
1617
+ "default": false,
1618
+ "description": ""
1619
+ },
1620
+ {
1621
+ "id": 1715002859,
1622
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
1623
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
1624
+ "name": "feature",
1625
+ "color": "a2eeef",
1626
+ "default": false,
1627
+ "description": "New feature or request"
1628
+ },
1629
+ {
1630
+ "id": 2233957218,
1631
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
1632
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
1633
+ "name": "task",
1634
+ "color": "ed8917",
1635
+ "default": false,
1636
+ "description": ""
1637
+ },
1638
+ {
1639
+ "id": 2292163570,
1640
+ "node_id": "MDU6TGFiZWwyMjkyMTYzNTcw",
1641
+ "url": "https://api.github.com/repos/fossas/basis/labels/xs(%3C=1%20eng%20day)",
1642
+ "name": "xs(<=1 eng day)",
1643
+ "color": "bfd4f2",
1644
+ "default": false,
1645
+ "description": ""
1646
+ }
1647
+ ],
1648
+ "state": "open",
1649
+ "locked": false,
1650
+ "assignee": {
1651
+ "login": "achristianson",
1652
+ "id": 24681233,
1653
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1654
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1655
+ "gravatar_id": "",
1656
+ "url": "https://api.github.com/users/achristianson",
1657
+ "html_url": "https://github.com/achristianson",
1658
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1659
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1660
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1661
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1662
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1663
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1664
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1665
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1666
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1667
+ "type": "User",
1668
+ "site_admin": false
1669
+ },
1670
+ "assignees": [
1671
+ {
1672
+ "login": "achristianson",
1673
+ "id": 24681233,
1674
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1675
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1676
+ "gravatar_id": "",
1677
+ "url": "https://api.github.com/users/achristianson",
1678
+ "html_url": "https://github.com/achristianson",
1679
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1680
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1681
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1682
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1683
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1684
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1685
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1686
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1687
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1688
+ "type": "User",
1689
+ "site_admin": false
1690
+ }
1691
+ ],
1692
+ "milestone": {
1693
+ "url": "https://api.github.com/repos/fossas/basis/milestones/4",
1694
+ "html_url": "https://github.com/fossas/basis/milestone/4",
1695
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/4/labels",
1696
+ "id": 5833310,
1697
+ "node_id": "MDk6TWlsZXN0b25lNTgzMzMxMA==",
1698
+ "number": 4,
1699
+ "title": "Nuget Coverage",
1700
+ "description": "",
1701
+ "creator": {
1702
+ "login": "microsoftly",
1703
+ "id": 4560399,
1704
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1705
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1706
+ "gravatar_id": "",
1707
+ "url": "https://api.github.com/users/microsoftly",
1708
+ "html_url": "https://github.com/microsoftly",
1709
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1710
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1711
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1712
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1713
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1714
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1715
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1716
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1717
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1718
+ "type": "User",
1719
+ "site_admin": false
1720
+ },
1721
+ "open_issues": 5,
1722
+ "closed_issues": 0,
1723
+ "state": "open",
1724
+ "created_at": "2020-09-01T18:16:03Z",
1725
+ "updated_at": "2020-09-01T19:00:38Z",
1726
+ "due_on": null,
1727
+ "closed_at": null
1728
+ },
1729
+ "comments": 0,
1730
+ "created_at": "2020-09-01T18:54:47Z",
1731
+ "updated_at": "2020-09-01T19:04:54Z",
1732
+ "closed_at": null,
1733
+ "author_association": "CONTRIBUTOR",
1734
+ "active_lock_reason": null,
1735
+ "body": "story #691 \r\n# Description\r\nUpdate the component downloader and component analyzer to be compatible with nuget dependencies\r\n# Acceptance Criteria \r\n* ensure that component downloader supports the download type for each component that is discovered. If already supported, no additional work needs to be done in this section\r\n* if download type is unsupported, add that support.",
1736
+ "performed_via_github_app": null
1737
+ },
1738
+ {
1739
+ "url": "https://api.github.com/repos/fossas/basis/issues/693",
1740
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1741
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/693/labels{/name}",
1742
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/693/comments",
1743
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/693/events",
1744
+ "html_url": "https://github.com/fossas/basis/issues/693",
1745
+ "id": 690370563,
1746
+ "node_id": "MDU6SXNzdWU2OTAzNzA1NjM=",
1747
+ "number": 693,
1748
+ "title": "nuget discovery execution",
1749
+ "user": {
1750
+ "login": "microsoftly",
1751
+ "id": 4560399,
1752
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1753
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1754
+ "gravatar_id": "",
1755
+ "url": "https://api.github.com/users/microsoftly",
1756
+ "html_url": "https://github.com/microsoftly",
1757
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1758
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1759
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1760
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1761
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1762
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1763
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1764
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1765
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1766
+ "type": "User",
1767
+ "site_admin": false
1768
+ },
1769
+ "labels": [
1770
+ {
1771
+ "id": 2317081331,
1772
+ "node_id": "MDU6TGFiZWwyMzE3MDgxMzMx",
1773
+ "url": "https://api.github.com/repos/fossas/basis/labels/XL(8%20eng%20day)",
1774
+ "name": "XL(8 eng day)",
1775
+ "color": "bfd4f2",
1776
+ "default": false,
1777
+ "description": ""
1778
+ },
1779
+ {
1780
+ "id": 2242947081,
1781
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MDgx",
1782
+ "url": "https://api.github.com/repos/fossas/basis/labels/discovery",
1783
+ "name": "discovery",
1784
+ "color": "40ed1a",
1785
+ "default": false,
1786
+ "description": ""
1787
+ },
1788
+ {
1789
+ "id": 1715002859,
1790
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
1791
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
1792
+ "name": "feature",
1793
+ "color": "a2eeef",
1794
+ "default": false,
1795
+ "description": "New feature or request"
1796
+ },
1797
+ {
1798
+ "id": 2314884738,
1799
+ "node_id": "MDU6TGFiZWwyMzE0ODg0NzM4",
1800
+ "url": "https://api.github.com/repos/fossas/basis/labels/passive",
1801
+ "name": "passive",
1802
+ "color": "17a589",
1803
+ "default": false,
1804
+ "description": "Tasks that can generally be performed in the background"
1805
+ },
1806
+ {
1807
+ "id": 2233957218,
1808
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
1809
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
1810
+ "name": "task",
1811
+ "color": "ed8917",
1812
+ "default": false,
1813
+ "description": ""
1814
+ }
1815
+ ],
1816
+ "state": "open",
1817
+ "locked": false,
1818
+ "assignee": {
1819
+ "login": "achristianson",
1820
+ "id": 24681233,
1821
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1822
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1823
+ "gravatar_id": "",
1824
+ "url": "https://api.github.com/users/achristianson",
1825
+ "html_url": "https://github.com/achristianson",
1826
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1827
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1828
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1829
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1830
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1831
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1832
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1833
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1834
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1835
+ "type": "User",
1836
+ "site_admin": false
1837
+ },
1838
+ "assignees": [
1839
+ {
1840
+ "login": "achristianson",
1841
+ "id": 24681233,
1842
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1843
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1844
+ "gravatar_id": "",
1845
+ "url": "https://api.github.com/users/achristianson",
1846
+ "html_url": "https://github.com/achristianson",
1847
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1848
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1849
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1850
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1851
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1852
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1853
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1854
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1855
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1856
+ "type": "User",
1857
+ "site_admin": false
1858
+ }
1859
+ ],
1860
+ "milestone": {
1861
+ "url": "https://api.github.com/repos/fossas/basis/milestones/4",
1862
+ "html_url": "https://github.com/fossas/basis/milestone/4",
1863
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/4/labels",
1864
+ "id": 5833310,
1865
+ "node_id": "MDk6TWlsZXN0b25lNTgzMzMxMA==",
1866
+ "number": 4,
1867
+ "title": "Nuget Coverage",
1868
+ "description": "",
1869
+ "creator": {
1870
+ "login": "microsoftly",
1871
+ "id": 4560399,
1872
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1873
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1874
+ "gravatar_id": "",
1875
+ "url": "https://api.github.com/users/microsoftly",
1876
+ "html_url": "https://github.com/microsoftly",
1877
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1878
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1879
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1880
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1881
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1882
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1883
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1884
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1885
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1886
+ "type": "User",
1887
+ "site_admin": false
1888
+ },
1889
+ "open_issues": 5,
1890
+ "closed_issues": 0,
1891
+ "state": "open",
1892
+ "created_at": "2020-09-01T18:16:03Z",
1893
+ "updated_at": "2020-09-01T19:00:38Z",
1894
+ "due_on": null,
1895
+ "closed_at": null
1896
+ },
1897
+ "comments": 0,
1898
+ "created_at": "2020-09-01T18:54:42Z",
1899
+ "updated_at": "2020-09-01T19:05:01Z",
1900
+ "closed_at": null,
1901
+ "author_association": "CONTRIBUTOR",
1902
+ "active_lock_reason": null,
1903
+ "body": "story #691 \r\n\r\n# Description\r\nDeploy nuget discovery worker and trigger a discovery crawl\r\n\r\n# Acceptance Criteria\r\n* create kube deployment config for discovery worker(s)\r\n* deploy worker(s)\r\n* [passive] trigger discovery job by pushing to the queue, monitor for unexpected behavior/failures (e.g. surprising number of errors, rate limits, 503s, etc ...)\r\n* [passive] monitor max/min pod memory and cpu usage. Adjust worker pod resource limits and requests to support more efficient pod packing per node.\r\n",
1904
+ "performed_via_github_app": null
1905
+ },
1906
+ {
1907
+ "url": "https://api.github.com/repos/fossas/basis/issues/692",
1908
+ "repository_url": "https://api.github.com/repos/fossas/basis",
1909
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/692/labels{/name}",
1910
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/692/comments",
1911
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/692/events",
1912
+ "html_url": "https://github.com/fossas/basis/issues/692",
1913
+ "id": 690370523,
1914
+ "node_id": "MDU6SXNzdWU2OTAzNzA1MjM=",
1915
+ "number": 692,
1916
+ "title": "nuget discovery implementation",
1917
+ "user": {
1918
+ "login": "microsoftly",
1919
+ "id": 4560399,
1920
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
1921
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
1922
+ "gravatar_id": "",
1923
+ "url": "https://api.github.com/users/microsoftly",
1924
+ "html_url": "https://github.com/microsoftly",
1925
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
1926
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
1927
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
1928
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
1929
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
1930
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
1931
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
1932
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
1933
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
1934
+ "type": "User",
1935
+ "site_admin": false
1936
+ },
1937
+ "labels": [
1938
+ {
1939
+ "id": 2317081331,
1940
+ "node_id": "MDU6TGFiZWwyMzE3MDgxMzMx",
1941
+ "url": "https://api.github.com/repos/fossas/basis/labels/XL(8%20eng%20day)",
1942
+ "name": "XL(8 eng day)",
1943
+ "color": "bfd4f2",
1944
+ "default": false,
1945
+ "description": ""
1946
+ },
1947
+ {
1948
+ "id": 2242947081,
1949
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MDgx",
1950
+ "url": "https://api.github.com/repos/fossas/basis/labels/discovery",
1951
+ "name": "discovery",
1952
+ "color": "40ed1a",
1953
+ "default": false,
1954
+ "description": ""
1955
+ },
1956
+ {
1957
+ "id": 1715002859,
1958
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
1959
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
1960
+ "name": "feature",
1961
+ "color": "a2eeef",
1962
+ "default": false,
1963
+ "description": "New feature or request"
1964
+ },
1965
+ {
1966
+ "id": 2233957218,
1967
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
1968
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
1969
+ "name": "task",
1970
+ "color": "ed8917",
1971
+ "default": false,
1972
+ "description": ""
1973
+ }
1974
+ ],
1975
+ "state": "open",
1976
+ "locked": false,
1977
+ "assignee": {
1978
+ "login": "achristianson",
1979
+ "id": 24681233,
1980
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
1981
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
1982
+ "gravatar_id": "",
1983
+ "url": "https://api.github.com/users/achristianson",
1984
+ "html_url": "https://github.com/achristianson",
1985
+ "followers_url": "https://api.github.com/users/achristianson/followers",
1986
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
1987
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
1988
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
1989
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
1990
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
1991
+ "repos_url": "https://api.github.com/users/achristianson/repos",
1992
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
1993
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
1994
+ "type": "User",
1995
+ "site_admin": false
1996
+ },
1997
+ "assignees": [
1998
+ {
1999
+ "login": "achristianson",
2000
+ "id": 24681233,
2001
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
2002
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
2003
+ "gravatar_id": "",
2004
+ "url": "https://api.github.com/users/achristianson",
2005
+ "html_url": "https://github.com/achristianson",
2006
+ "followers_url": "https://api.github.com/users/achristianson/followers",
2007
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
2008
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
2009
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
2010
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
2011
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
2012
+ "repos_url": "https://api.github.com/users/achristianson/repos",
2013
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
2014
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
2015
+ "type": "User",
2016
+ "site_admin": false
2017
+ }
2018
+ ],
2019
+ "milestone": {
2020
+ "url": "https://api.github.com/repos/fossas/basis/milestones/4",
2021
+ "html_url": "https://github.com/fossas/basis/milestone/4",
2022
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/4/labels",
2023
+ "id": 5833310,
2024
+ "node_id": "MDk6TWlsZXN0b25lNTgzMzMxMA==",
2025
+ "number": 4,
2026
+ "title": "Nuget Coverage",
2027
+ "description": "",
2028
+ "creator": {
2029
+ "login": "microsoftly",
2030
+ "id": 4560399,
2031
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2032
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2033
+ "gravatar_id": "",
2034
+ "url": "https://api.github.com/users/microsoftly",
2035
+ "html_url": "https://github.com/microsoftly",
2036
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2037
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2038
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2039
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2040
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2041
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2042
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2043
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2044
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2045
+ "type": "User",
2046
+ "site_admin": false
2047
+ },
2048
+ "open_issues": 5,
2049
+ "closed_issues": 0,
2050
+ "state": "open",
2051
+ "created_at": "2020-09-01T18:16:03Z",
2052
+ "updated_at": "2020-09-01T19:00:38Z",
2053
+ "due_on": null,
2054
+ "closed_at": null
2055
+ },
2056
+ "comments": 0,
2057
+ "created_at": "2020-09-01T18:54:38Z",
2058
+ "updated_at": "2020-09-01T19:02:23Z",
2059
+ "closed_at": null,
2060
+ "author_association": "CONTRIBUTOR",
2061
+ "active_lock_reason": null,
2062
+ "body": "Story #691 \r\n# Description\r\nCreate nuget component discovery worker(s) and endpoints to trigger discovery\r\n# Acceptance Criteria\r\n1. new crawler `nuget` is added to the db\r\n1. new registry is added to the DB. \r\n1. add `POST` endpoint that supports the new crawler, registry pair: `[POST] /api/crawler/:crawler/:registryID` see #627 for reference\r\n1. faktory worker that consumes task sent to queue by step 1 and starts nuget discovery\r\n1. discovery crawls and the payloads that trigger them are recorded in the DB and associated with all components discovered in the crawl\r\n1. newly discovered components are added to the component database. \r\n1. metadata that does not align with the current columns should be inserted into the `additional_metadata` column.\r\n1. if possible, record metadata about the crawl so that subsequent discovery crawls will not redo the same work",
2063
+ "performed_via_github_app": null
2064
+ },
2065
+ {
2066
+ "url": "https://api.github.com/repos/fossas/basis/issues/691",
2067
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2068
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/691/labels{/name}",
2069
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/691/comments",
2070
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/691/events",
2071
+ "html_url": "https://github.com/fossas/basis/issues/691",
2072
+ "id": 690347413,
2073
+ "node_id": "MDU6SXNzdWU2OTAzNDc0MTM=",
2074
+ "number": 691,
2075
+ "title": "Nuget Coverage",
2076
+ "user": {
2077
+ "login": "microsoftly",
2078
+ "id": 4560399,
2079
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2080
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2081
+ "gravatar_id": "",
2082
+ "url": "https://api.github.com/users/microsoftly",
2083
+ "html_url": "https://github.com/microsoftly",
2084
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2085
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2086
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2087
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2088
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2089
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2090
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2091
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2092
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2093
+ "type": "User",
2094
+ "site_admin": false
2095
+ },
2096
+ "labels": [
2097
+ {
2098
+ "id": 2292198574,
2099
+ "node_id": "MDU6TGFiZWwyMjkyMTk4NTc0",
2100
+ "url": "https://api.github.com/repos/fossas/basis/labels/XXL(13%20eng%20day)",
2101
+ "name": "XXL(13 eng day)",
2102
+ "color": "bfd4f2",
2103
+ "default": false,
2104
+ "description": ""
2105
+ },
2106
+ {
2107
+ "id": 2285388797,
2108
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
2109
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
2110
+ "name": "analysis",
2111
+ "color": "83ef83",
2112
+ "default": false,
2113
+ "description": ""
2114
+ },
2115
+ {
2116
+ "id": 2242947081,
2117
+ "node_id": "MDU6TGFiZWwyMjQyOTQ3MDgx",
2118
+ "url": "https://api.github.com/repos/fossas/basis/labels/discovery",
2119
+ "name": "discovery",
2120
+ "color": "40ed1a",
2121
+ "default": false,
2122
+ "description": ""
2123
+ },
2124
+ {
2125
+ "id": 2233963128,
2126
+ "node_id": "MDU6TGFiZWwyMjMzOTYzMTI4",
2127
+ "url": "https://api.github.com/repos/fossas/basis/labels/story",
2128
+ "name": "story",
2129
+ "color": "7139ba",
2130
+ "default": false,
2131
+ "description": ""
2132
+ }
2133
+ ],
2134
+ "state": "open",
2135
+ "locked": false,
2136
+ "assignee": {
2137
+ "login": "achristianson",
2138
+ "id": 24681233,
2139
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
2140
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
2141
+ "gravatar_id": "",
2142
+ "url": "https://api.github.com/users/achristianson",
2143
+ "html_url": "https://github.com/achristianson",
2144
+ "followers_url": "https://api.github.com/users/achristianson/followers",
2145
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
2146
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
2147
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
2148
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
2149
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
2150
+ "repos_url": "https://api.github.com/users/achristianson/repos",
2151
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
2152
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
2153
+ "type": "User",
2154
+ "site_admin": false
2155
+ },
2156
+ "assignees": [
2157
+ {
2158
+ "login": "achristianson",
2159
+ "id": 24681233,
2160
+ "node_id": "MDQ6VXNlcjI0NjgxMjMz",
2161
+ "avatar_url": "https://avatars3.githubusercontent.com/u/24681233?v=4",
2162
+ "gravatar_id": "",
2163
+ "url": "https://api.github.com/users/achristianson",
2164
+ "html_url": "https://github.com/achristianson",
2165
+ "followers_url": "https://api.github.com/users/achristianson/followers",
2166
+ "following_url": "https://api.github.com/users/achristianson/following{/other_user}",
2167
+ "gists_url": "https://api.github.com/users/achristianson/gists{/gist_id}",
2168
+ "starred_url": "https://api.github.com/users/achristianson/starred{/owner}{/repo}",
2169
+ "subscriptions_url": "https://api.github.com/users/achristianson/subscriptions",
2170
+ "organizations_url": "https://api.github.com/users/achristianson/orgs",
2171
+ "repos_url": "https://api.github.com/users/achristianson/repos",
2172
+ "events_url": "https://api.github.com/users/achristianson/events{/privacy}",
2173
+ "received_events_url": "https://api.github.com/users/achristianson/received_events",
2174
+ "type": "User",
2175
+ "site_admin": false
2176
+ }
2177
+ ],
2178
+ "milestone": {
2179
+ "url": "https://api.github.com/repos/fossas/basis/milestones/4",
2180
+ "html_url": "https://github.com/fossas/basis/milestone/4",
2181
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/4/labels",
2182
+ "id": 5833310,
2183
+ "node_id": "MDk6TWlsZXN0b25lNTgzMzMxMA==",
2184
+ "number": 4,
2185
+ "title": "Nuget Coverage",
2186
+ "description": "",
2187
+ "creator": {
2188
+ "login": "microsoftly",
2189
+ "id": 4560399,
2190
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2191
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2192
+ "gravatar_id": "",
2193
+ "url": "https://api.github.com/users/microsoftly",
2194
+ "html_url": "https://github.com/microsoftly",
2195
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2196
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2197
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2198
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2199
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2200
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2201
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2202
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2203
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2204
+ "type": "User",
2205
+ "site_admin": false
2206
+ },
2207
+ "open_issues": 5,
2208
+ "closed_issues": 0,
2209
+ "state": "open",
2210
+ "created_at": "2020-09-01T18:16:03Z",
2211
+ "updated_at": "2020-09-01T19:00:38Z",
2212
+ "due_on": null,
2213
+ "closed_at": null
2214
+ },
2215
+ "comments": 0,
2216
+ "created_at": "2020-09-01T18:15:36Z",
2217
+ "updated_at": "2020-09-01T18:52:42Z",
2218
+ "closed_at": null,
2219
+ "author_association": "CONTRIBUTOR",
2220
+ "active_lock_reason": null,
2221
+ "body": "# Description\r\n* Create a golang based discovery crawler for nuget to gather C# coverage. \r\n* Extend existing analysis worker to be compatible with nuget components.\r\n\r\n# Acceptance Criteria\r\n## Discovery\r\n### Code Changes\r\n1. new crawler `nuget` is added to the db\r\n1. new registry is added to the DB. \r\n1. add `POST` endpoint that supports the new crawler, registry pair: `[POST] /api/crawler/:crawler/:registryID` see #627 for reference\r\n1. faktory worker that consumes task sent to queue by step 1 and starts nuget discovery\r\n1. discovery crawls and the payloads that trigger them are recorded in the DB and associated with all components discovered in the crawl\r\n1. newly discovered components are added to the component database. \r\n1. metadata that does not align with the current columns should be inserted into the `additional_metadata` column.\r\n1. if possible, record metadata about the crawl so that subsequent discovery crawls will not redo the same work\r\n### Deployment\r\n* create kube deployment config for discovery worker(s)\r\n* deploy worker(s)\r\n* [passive] trigger discovery job by pushing to the queue, monitor for unexpected behavior/failures (e.g. surprising number of errors, rate limits, 503s, etc ...)\r\n* [passive] monitor max/min pod memory and cpu usage. Adjust worker pod resource limits and requests to support more efficient pod packing per node.\r\n\r\n### Metrics\r\n* estimate max number of components\r\n* estimate rate of discovery (components/sec) (min 2 hour window)\r\n* estimate time to complete discovery \r\n\r\n## Analysis\r\n### Code Changes\r\n* ensure that component downloader supports the download type for each component that is discovered. If already supported, no additional work needs to be done in this section\r\n* if download type is unsupported, add that support.\r\n\r\n### Analysis Execution\r\n* Push nuget components to queue `NUGET-analysis` with:\r\n * commenStrippedSha and declaredLicenseScan enabled\r\n * discoveredLicnse scan disabled\r\n * 30 min timeout\r\n * 3 retries\r\n* add a nuget analysis worker kube deployment in f2-kube repo\r\n* deploy worker that consumes from `NUGET-analysis` queue\r\n* [passive] monitor for unexpected errors and rate limits using kibana. [go/ramjet-worker-dashboard](http://go/ramjet-worker-dashboard) is a good starting point.\r\n* [passive] monitor max/min pod memory and cpu usage. Adjust worker pod resource limits and requests to support more efficient pod packing per node. \r\n\r\n### Metrics\r\n* estimate rate of analysis (components/sec) (min 3 hour window)\r\n* estimate time to complete analysis for nuget\r\n* determine baseline error rate so we can identify when things are going wrong\r\n * e.g. in 1 hour, 10,000 successful analysis tasks and 500 failed tasks as a baseline would hint that we should be concerned if during another 1 hr window there is a 4,000 successful tasks and 8,000 failed tasks\r\n\r\n\r\n# Notes\r\n* More than 1 faktory worker can be made for this. It is likely that there will be a fanout-like workflow\r\n* There are always unexpected edge cases from real world data. Aim to follow the 80/20 rule. Downstream consumers may be able to work with 80% success in discovery &/or analysis.\r\n* There may be rate limits, but they seem very high. If we need to get around them, we can try to build out the IP rate limit bypass as a service.\r\n* The [f2 project may be a good reference](https://github.com/fossas/f2/tree/master/services/crawlers/nuget) for an older implementation of this type of service. As a warning it uses netflix's conductor orchestration framework instead of faktory. \r\n* docs on the nuget registry server can be found [here](https://github.com/fossas/f2/tree/master/services/crawlers/nugethttps://github.com/fossas/f2/tree/master/services/crawlers/nuget)\r\n",
2222
+ "performed_via_github_app": null
2223
+ },
2224
+ {
2225
+ "url": "https://api.github.com/repos/fossas/basis/issues/688",
2226
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2227
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/688/labels{/name}",
2228
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/688/comments",
2229
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/688/events",
2230
+ "html_url": "https://github.com/fossas/basis/issues/688",
2231
+ "id": 689550513,
2232
+ "node_id": "MDU6SXNzdWU2ODk1NTA1MTM=",
2233
+ "number": 688,
2234
+ "title": "AOSP analysis",
2235
+ "user": {
2236
+ "login": "microsoftly",
2237
+ "id": 4560399,
2238
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2239
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2240
+ "gravatar_id": "",
2241
+ "url": "https://api.github.com/users/microsoftly",
2242
+ "html_url": "https://github.com/microsoftly",
2243
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2244
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2245
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2246
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2247
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2248
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2249
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2250
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2251
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2252
+ "type": "User",
2253
+ "site_admin": false
2254
+ },
2255
+ "labels": [
2256
+ {
2257
+ "id": 2292198574,
2258
+ "node_id": "MDU6TGFiZWwyMjkyMTk4NTc0",
2259
+ "url": "https://api.github.com/repos/fossas/basis/labels/XXL(13%20eng%20day)",
2260
+ "name": "XXL(13 eng day)",
2261
+ "color": "bfd4f2",
2262
+ "default": false,
2263
+ "description": ""
2264
+ },
2265
+ {
2266
+ "id": 1715002859,
2267
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
2268
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
2269
+ "name": "feature",
2270
+ "color": "a2eeef",
2271
+ "default": false,
2272
+ "description": "New feature or request"
2273
+ },
2274
+ {
2275
+ "id": 2314884738,
2276
+ "node_id": "MDU6TGFiZWwyMzE0ODg0NzM4",
2277
+ "url": "https://api.github.com/repos/fossas/basis/labels/passive",
2278
+ "name": "passive",
2279
+ "color": "17a589",
2280
+ "default": false,
2281
+ "description": "Tasks that can generally be performed in the background"
2282
+ },
2283
+ {
2284
+ "id": 2233957218,
2285
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
2286
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
2287
+ "name": "task",
2288
+ "color": "ed8917",
2289
+ "default": false,
2290
+ "description": ""
2291
+ }
2292
+ ],
2293
+ "state": "open",
2294
+ "locked": false,
2295
+ "assignee": {
2296
+ "login": "taliamccormick",
2297
+ "id": 13280845,
2298
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2299
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2300
+ "gravatar_id": "",
2301
+ "url": "https://api.github.com/users/taliamccormick",
2302
+ "html_url": "https://github.com/taliamccormick",
2303
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2304
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2305
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2306
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2307
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2308
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2309
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2310
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2311
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2312
+ "type": "User",
2313
+ "site_admin": false
2314
+ },
2315
+ "assignees": [
2316
+ {
2317
+ "login": "taliamccormick",
2318
+ "id": 13280845,
2319
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2320
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2321
+ "gravatar_id": "",
2322
+ "url": "https://api.github.com/users/taliamccormick",
2323
+ "html_url": "https://github.com/taliamccormick",
2324
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2325
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2326
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2327
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2328
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2329
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2330
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2331
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2332
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2333
+ "type": "User",
2334
+ "site_admin": false
2335
+ }
2336
+ ],
2337
+ "milestone": null,
2338
+ "comments": 0,
2339
+ "created_at": "2020-08-31T22:15:32Z",
2340
+ "updated_at": "2020-08-31T22:43:25Z",
2341
+ "closed_at": null,
2342
+ "author_association": "CONTRIBUTOR",
2343
+ "active_lock_reason": null,
2344
+ "body": "# Description\r\nStart, monitor, and manage AOSP analysis\r\n\r\n\r\n# Gotchyas\r\n* Remember to allocate enough ephemeral storage\r\n* remember to send these tasks to a differently named queue so we can balance the number of worker pods",
2345
+ "performed_via_github_app": null
2346
+ },
2347
+ {
2348
+ "url": "https://api.github.com/repos/fossas/basis/issues/687",
2349
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2350
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/687/labels{/name}",
2351
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/687/comments",
2352
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/687/events",
2353
+ "html_url": "https://github.com/fossas/basis/issues/687",
2354
+ "id": 689550469,
2355
+ "node_id": "MDU6SXNzdWU2ODk1NTA0Njk=",
2356
+ "number": 687,
2357
+ "title": "Monitor RPM analysis",
2358
+ "user": {
2359
+ "login": "microsoftly",
2360
+ "id": 4560399,
2361
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2362
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2363
+ "gravatar_id": "",
2364
+ "url": "https://api.github.com/users/microsoftly",
2365
+ "html_url": "https://github.com/microsoftly",
2366
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2367
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2368
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2369
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2370
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2371
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2372
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2373
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2374
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2375
+ "type": "User",
2376
+ "site_admin": false
2377
+ },
2378
+ "labels": [
2379
+ {
2380
+ "id": 2292198574,
2381
+ "node_id": "MDU6TGFiZWwyMjkyMTk4NTc0",
2382
+ "url": "https://api.github.com/repos/fossas/basis/labels/XXL(13%20eng%20day)",
2383
+ "name": "XXL(13 eng day)",
2384
+ "color": "bfd4f2",
2385
+ "default": false,
2386
+ "description": ""
2387
+ },
2388
+ {
2389
+ "id": 1715002859,
2390
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODU5",
2391
+ "url": "https://api.github.com/repos/fossas/basis/labels/feature",
2392
+ "name": "feature",
2393
+ "color": "a2eeef",
2394
+ "default": false,
2395
+ "description": "New feature or request"
2396
+ },
2397
+ {
2398
+ "id": 2314884738,
2399
+ "node_id": "MDU6TGFiZWwyMzE0ODg0NzM4",
2400
+ "url": "https://api.github.com/repos/fossas/basis/labels/passive",
2401
+ "name": "passive",
2402
+ "color": "17a589",
2403
+ "default": false,
2404
+ "description": "Tasks that can generally be performed in the background"
2405
+ },
2406
+ {
2407
+ "id": 2233957218,
2408
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
2409
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
2410
+ "name": "task",
2411
+ "color": "ed8917",
2412
+ "default": false,
2413
+ "description": ""
2414
+ }
2415
+ ],
2416
+ "state": "open",
2417
+ "locked": false,
2418
+ "assignee": {
2419
+ "login": "taliamccormick",
2420
+ "id": 13280845,
2421
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2422
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2423
+ "gravatar_id": "",
2424
+ "url": "https://api.github.com/users/taliamccormick",
2425
+ "html_url": "https://github.com/taliamccormick",
2426
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2427
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2428
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2429
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2430
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2431
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2432
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2433
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2434
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2435
+ "type": "User",
2436
+ "site_admin": false
2437
+ },
2438
+ "assignees": [
2439
+ {
2440
+ "login": "taliamccormick",
2441
+ "id": 13280845,
2442
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2443
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2444
+ "gravatar_id": "",
2445
+ "url": "https://api.github.com/users/taliamccormick",
2446
+ "html_url": "https://github.com/taliamccormick",
2447
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2448
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2449
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2450
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2451
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2452
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2453
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2454
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2455
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2456
+ "type": "User",
2457
+ "site_admin": false
2458
+ }
2459
+ ],
2460
+ "milestone": {
2461
+ "url": "https://api.github.com/repos/fossas/basis/milestones/3",
2462
+ "html_url": "https://github.com/fossas/basis/milestone/3",
2463
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/3/labels",
2464
+ "id": 5808820,
2465
+ "node_id": "MDk6TWlsZXN0b25lNTgwODgyMA==",
2466
+ "number": 3,
2467
+ "title": "RPM Analysis",
2468
+ "description": "",
2469
+ "creator": {
2470
+ "login": "microsoftly",
2471
+ "id": 4560399,
2472
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2473
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2474
+ "gravatar_id": "",
2475
+ "url": "https://api.github.com/users/microsoftly",
2476
+ "html_url": "https://github.com/microsoftly",
2477
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2478
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2479
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2480
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2481
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2482
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2483
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2484
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2485
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2486
+ "type": "User",
2487
+ "site_admin": false
2488
+ },
2489
+ "open_issues": 4,
2490
+ "closed_issues": 1,
2491
+ "state": "open",
2492
+ "created_at": "2020-08-25T18:08:32Z",
2493
+ "updated_at": "2020-09-03T15:03:45Z",
2494
+ "due_on": "2020-08-28T07:00:00Z",
2495
+ "closed_at": null
2496
+ },
2497
+ "comments": 0,
2498
+ "created_at": "2020-08-31T22:15:26Z",
2499
+ "updated_at": "2020-08-31T22:39:33Z",
2500
+ "closed_at": null,
2501
+ "author_association": "CONTRIBUTOR",
2502
+ "active_lock_reason": null,
2503
+ "body": "# Description\r\nRPM analysis has been failing due to 503 service not responding errors because we've likely been taking down their servers.\r\n\r\nThis happens with 1 or more pods, sometimes at random, and seems to be happening with fedora. The way around this has been: run 1-10 pods at a time, then occassionally check when 503s are being hit.\r\n\r\nWhen that happens, spin down the pods, wait 30 minutes, start them up again and re-queue the components that failed due to the 503.\r\n\r\nRight now you can just use the query \r\n```sql\r\nselect component.id from component \r\njoin crawl on crawl.id=component.crawl and crawler=21 and analysis_state='failed' order by registry desc;\r\n```\r\nto get all of the RPM components that failed. If we start getting a high number of _non service not available_ failures, we can look to change the query to be more focused.\r\n\r\nRemember to clear the existing queue when requeuing as you might end up redundantly queuing components by accident.\r\n# Tasks\r\n* queue RPM comonents for analysis in `RPM-analysis` queue\r\n* turn on RPM analysis pods. Start at 1, increase to 4-10 until the service outage hits\r\n* periodically check for logs for service failures. Turn off pods, re-queue components, go to the beginning of this task list",
2504
+ "performed_via_github_app": null
2505
+ },
2506
+ {
2507
+ "url": "https://api.github.com/repos/fossas/basis/issues/676",
2508
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2509
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/676/labels{/name}",
2510
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/676/comments",
2511
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/676/events",
2512
+ "html_url": "https://github.com/fossas/basis/issues/676",
2513
+ "id": 687420280,
2514
+ "node_id": "MDU6SXNzdWU2ODc0MjAyODA=",
2515
+ "number": 676,
2516
+ "title": "Move Ramjet migrations from ramjet/migrations/ to ramjet/internal/migrations/",
2517
+ "user": {
2518
+ "login": "taliamccormick",
2519
+ "id": 13280845,
2520
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2521
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2522
+ "gravatar_id": "",
2523
+ "url": "https://api.github.com/users/taliamccormick",
2524
+ "html_url": "https://github.com/taliamccormick",
2525
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2526
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2527
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2528
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2529
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2530
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2531
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2532
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2533
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2534
+ "type": "User",
2535
+ "site_admin": false
2536
+ },
2537
+ "labels": [
2538
+ {
2539
+ "id": 2233957218,
2540
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
2541
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
2542
+ "name": "task",
2543
+ "color": "ed8917",
2544
+ "default": false,
2545
+ "description": ""
2546
+ },
2547
+ {
2548
+ "id": 2242946206,
2549
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
2550
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
2551
+ "name": "tech debt",
2552
+ "color": "ffccfc",
2553
+ "default": false,
2554
+ "description": ""
2555
+ },
2556
+ {
2557
+ "id": 2292163570,
2558
+ "node_id": "MDU6TGFiZWwyMjkyMTYzNTcw",
2559
+ "url": "https://api.github.com/repos/fossas/basis/labels/xs(%3C=1%20eng%20day)",
2560
+ "name": "xs(<=1 eng day)",
2561
+ "color": "bfd4f2",
2562
+ "default": false,
2563
+ "description": ""
2564
+ }
2565
+ ],
2566
+ "state": "open",
2567
+ "locked": false,
2568
+ "assignee": {
2569
+ "login": "taliamccormick",
2570
+ "id": 13280845,
2571
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2572
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2573
+ "gravatar_id": "",
2574
+ "url": "https://api.github.com/users/taliamccormick",
2575
+ "html_url": "https://github.com/taliamccormick",
2576
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2577
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2578
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2579
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2580
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2581
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2582
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2583
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2584
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2585
+ "type": "User",
2586
+ "site_admin": false
2587
+ },
2588
+ "assignees": [
2589
+ {
2590
+ "login": "taliamccormick",
2591
+ "id": 13280845,
2592
+ "node_id": "MDQ6VXNlcjEzMjgwODQ1",
2593
+ "avatar_url": "https://avatars2.githubusercontent.com/u/13280845?v=4",
2594
+ "gravatar_id": "",
2595
+ "url": "https://api.github.com/users/taliamccormick",
2596
+ "html_url": "https://github.com/taliamccormick",
2597
+ "followers_url": "https://api.github.com/users/taliamccormick/followers",
2598
+ "following_url": "https://api.github.com/users/taliamccormick/following{/other_user}",
2599
+ "gists_url": "https://api.github.com/users/taliamccormick/gists{/gist_id}",
2600
+ "starred_url": "https://api.github.com/users/taliamccormick/starred{/owner}{/repo}",
2601
+ "subscriptions_url": "https://api.github.com/users/taliamccormick/subscriptions",
2602
+ "organizations_url": "https://api.github.com/users/taliamccormick/orgs",
2603
+ "repos_url": "https://api.github.com/users/taliamccormick/repos",
2604
+ "events_url": "https://api.github.com/users/taliamccormick/events{/privacy}",
2605
+ "received_events_url": "https://api.github.com/users/taliamccormick/received_events",
2606
+ "type": "User",
2607
+ "site_admin": false
2608
+ }
2609
+ ],
2610
+ "milestone": null,
2611
+ "comments": 1,
2612
+ "created_at": "2020-08-27T17:34:36Z",
2613
+ "updated_at": "2020-08-31T19:21:52Z",
2614
+ "closed_at": null,
2615
+ "author_association": "CONTRIBUTOR",
2616
+ "active_lock_reason": null,
2617
+ "body": "## Background\r\nRamjet's migrations are stored in ramjet/migrations. Other projects store their migrations in <project>/internal/migrations. Moving the Ramjet migrations to ramjet/internal/migrations lets use benefit from shared database tooling (eg. package `migrate`, some defaults for package `ephemeraldb`)\r\n\r\n## Acceptance Criteria\r\n1. Migrations are moved.\r\n2. Aragog references to migrations (eg. README) are updated\r\n3. Ramjet references to migrations are updated\r\n i. All `mage.MigrateUp` and `mage.MigrateUp` used in tests with a hardcoded string should now make use of the shared tooling `migrate` functionality. Note that the list below is not exhaustive.\r\n `ramjet/internal/cmd/rpm-discovery/insert_test.go`\r\n `ramjet/internal/lib/analysis/dbsetup_test.go`\r\n `ramjet/internal/testing/shared/component_test_util.go`\r\n `ramjet/pkg/filestore/test_common_test.go`\r\n `ramjet/pkg/component-service/insert_test.go`\r\n ii. All places where hardcoded migration strings used in main.go files should now make use of the shared tooling `migrate` functionality. Note that the list below is not exhaustive.\r\n `ramjet/internal/cmd/component-analyzer-cli/main.go`\r\n4. Review `ramjet/mage` and update to make use of the shared tooling `migrate` package.",
2618
+ "performed_via_github_app": null
2619
+ },
2620
+ {
2621
+ "url": "https://api.github.com/repos/fossas/basis/issues/673",
2622
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2623
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/673/labels{/name}",
2624
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/673/comments",
2625
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/673/events",
2626
+ "html_url": "https://github.com/fossas/basis/issues/673",
2627
+ "id": 685994442,
2628
+ "node_id": "MDU6SXNzdWU2ODU5OTQ0NDI=",
2629
+ "number": 673,
2630
+ "title": "investigate infrastructure/framework to assess registry server stability",
2631
+ "user": {
2632
+ "login": "microsoftly",
2633
+ "id": 4560399,
2634
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2635
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2636
+ "gravatar_id": "",
2637
+ "url": "https://api.github.com/users/microsoftly",
2638
+ "html_url": "https://github.com/microsoftly",
2639
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2640
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2641
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2642
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2643
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2644
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2645
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2646
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2647
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2648
+ "type": "User",
2649
+ "site_admin": false
2650
+ },
2651
+ "labels": [
2652
+ {
2653
+ "id": 2242949023,
2654
+ "node_id": "MDU6TGFiZWwyMjQyOTQ5MDIz",
2655
+ "url": "https://api.github.com/repos/fossas/basis/labels/R&D",
2656
+ "name": "R&D",
2657
+ "color": "8137e8",
2658
+ "default": false,
2659
+ "description": ""
2660
+ }
2661
+ ],
2662
+ "state": "open",
2663
+ "locked": false,
2664
+ "assignee": null,
2665
+ "assignees": [
2666
+
2667
+ ],
2668
+ "milestone": null,
2669
+ "comments": 0,
2670
+ "created_at": "2020-08-26T04:27:19Z",
2671
+ "updated_at": "2020-08-26T04:38:41Z",
2672
+ "closed_at": null,
2673
+ "author_association": "CONTRIBUTOR",
2674
+ "active_lock_reason": null,
2675
+ "body": "# Goals\r\nInvestigate a performance testing/grading framework to assess the performance profile of registry response time and availability so that we can get the following benefits:\r\n* proactively prevent accidentally taking down a 3rd party service\r\n* accurately predict the length of time needed to complete a long running task that is putting load and relying on a third party registry\r\n\r\n# Background\r\nDifferent registries hit during discovery and fingerprinting had different performance profiles. Some, like nuget, were incredibly stable and offered a consistent response time under varying loads.\r\n\r\nSites like jcenter and certain RPM registries did not deliver consistent performance over varying load profiles. Without having a great way of knowing what the performance profile of a particular registry is, we needed to make guesses as to how long certain tasks (disco, fingerprinting) would take. \r\n\r\nThis was generally fine until we started to have the same workers consuming from registries of the same type but different sources. With RPM, we were able to use the same analysis pathways, but sourced RPMs from multiple registries. This became abundantly clear when we started facing a wave of 503s when those servers were under light load, compared to the 10-100x scale we were running against for earlier registries of type RPM\r\n\r\n# Proposal\r\nCreate a standardization for how to assess the performance profile of a registry under differing loads. The goal would be to determine if:\r\n* there is a relationship between load from our workers and the server performance\r\n * if at 1, 10, 100, and 1000 concurrent workers, the response could be: unaffected, degrade linearly, degrade superlinearly, or degrade sublinearly\r\n * is there a limit to the load before the registry is taken offline accidentally (503s)\r\n * is there a (documented or undocumented) rate limit? If so, is it by IP address, by header, or by some other mechanism? ",
2676
+ "performed_via_github_app": null
2677
+ },
2678
+ {
2679
+ "url": "https://api.github.com/repos/fossas/basis/issues/671",
2680
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2681
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/671/labels{/name}",
2682
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/671/comments",
2683
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/671/events",
2684
+ "html_url": "https://github.com/fossas/basis/pull/671",
2685
+ "id": 685914000,
2686
+ "node_id": "MDExOlB1bGxSZXF1ZXN0NDczNTcxMDQ1",
2687
+ "number": 671,
2688
+ "title": "Taskqueue: task not found",
2689
+ "user": {
2690
+ "login": "kitified",
2691
+ "id": 55713231,
2692
+ "node_id": "MDQ6VXNlcjU1NzEzMjMx",
2693
+ "avatar_url": "https://avatars0.githubusercontent.com/u/55713231?v=4",
2694
+ "gravatar_id": "",
2695
+ "url": "https://api.github.com/users/kitified",
2696
+ "html_url": "https://github.com/kitified",
2697
+ "followers_url": "https://api.github.com/users/kitified/followers",
2698
+ "following_url": "https://api.github.com/users/kitified/following{/other_user}",
2699
+ "gists_url": "https://api.github.com/users/kitified/gists{/gist_id}",
2700
+ "starred_url": "https://api.github.com/users/kitified/starred{/owner}{/repo}",
2701
+ "subscriptions_url": "https://api.github.com/users/kitified/subscriptions",
2702
+ "organizations_url": "https://api.github.com/users/kitified/orgs",
2703
+ "repos_url": "https://api.github.com/users/kitified/repos",
2704
+ "events_url": "https://api.github.com/users/kitified/events{/privacy}",
2705
+ "received_events_url": "https://api.github.com/users/kitified/received_events",
2706
+ "type": "User",
2707
+ "site_admin": false
2708
+ },
2709
+ "labels": [
2710
+
2711
+ ],
2712
+ "state": "open",
2713
+ "locked": false,
2714
+ "assignee": null,
2715
+ "assignees": [
2716
+
2717
+ ],
2718
+ "milestone": null,
2719
+ "comments": 7,
2720
+ "created_at": "2020-08-26T00:16:48Z",
2721
+ "updated_at": "2020-09-08T22:29:34Z",
2722
+ "closed_at": null,
2723
+ "author_association": "CONTRIBUTOR",
2724
+ "active_lock_reason": null,
2725
+ "pull_request": {
2726
+ "url": "https://api.github.com/repos/fossas/basis/pulls/671",
2727
+ "html_url": "https://github.com/fossas/basis/pull/671",
2728
+ "diff_url": "https://github.com/fossas/basis/pull/671.diff",
2729
+ "patch_url": "https://github.com/fossas/basis/pull/671.patch"
2730
+ },
2731
+ "body": "## What\r\n\r\nThis PR:\r\n\r\n* Updates `package taskqueue` to exit the worker if it encounters `ERR Job not found` from the Faktory worker.\r\n* Adds `logging.Interceptor` to support functionality like this.\r\n\r\n## Why\r\n\r\nSherlock has issues where workers are getting out of sync with the server, causing them to become stuck forever.\r\nThis PR prevents them from getting stuck at least.\r\n\r\n## How\r\n\r\nInspect logging output from `package faktoryWorker`, exit the program if we get matching log lines.\r\n\r\n## Security Impact\r\n\r\nNone.\r\n\r\nChecklist:\r\n- [x] Code in this PR is covered by automated tests.\r\n\r\n## Dependency Changes\r\n\r\nNone\r\n",
2732
+ "performed_via_github_app": null
2733
+ },
2734
+ {
2735
+ "url": "https://api.github.com/repos/fossas/basis/issues/667",
2736
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2737
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/667/labels{/name}",
2738
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/667/comments",
2739
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/667/events",
2740
+ "html_url": "https://github.com/fossas/basis/issues/667",
2741
+ "id": 685692343,
2742
+ "node_id": "MDU6SXNzdWU2ODU2OTIzNDM=",
2743
+ "number": 667,
2744
+ "title": "Large call trace in kube logs for RPM analysis",
2745
+ "user": {
2746
+ "login": "microsoftly",
2747
+ "id": 4560399,
2748
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2749
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2750
+ "gravatar_id": "",
2751
+ "url": "https://api.github.com/users/microsoftly",
2752
+ "html_url": "https://github.com/microsoftly",
2753
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2754
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2755
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2756
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2757
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2758
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2759
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2760
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2761
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2762
+ "type": "User",
2763
+ "site_admin": false
2764
+ },
2765
+ "labels": [
2766
+ {
2767
+ "id": 2285388797,
2768
+ "node_id": "MDU6TGFiZWwyMjg1Mzg4Nzk3",
2769
+ "url": "https://api.github.com/repos/fossas/basis/labels/analysis",
2770
+ "name": "analysis",
2771
+ "color": "83ef83",
2772
+ "default": false,
2773
+ "description": ""
2774
+ },
2775
+ {
2776
+ "id": 1715002852,
2777
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODUy",
2778
+ "url": "https://api.github.com/repos/fossas/basis/labels/bug",
2779
+ "name": "bug",
2780
+ "color": "d73a4a",
2781
+ "default": true,
2782
+ "description": "Something isn't working"
2783
+ },
2784
+ {
2785
+ "id": 2292162202,
2786
+ "node_id": "MDU6TGFiZWwyMjkyMTYyMjAy",
2787
+ "url": "https://api.github.com/repos/fossas/basis/labels/m(3%20eng%20day)",
2788
+ "name": "m(3 eng day)",
2789
+ "color": "bfd4f2",
2790
+ "default": false,
2791
+ "description": ""
2792
+ },
2793
+ {
2794
+ "id": 2233957218,
2795
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
2796
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
2797
+ "name": "task",
2798
+ "color": "ed8917",
2799
+ "default": false,
2800
+ "description": ""
2801
+ }
2802
+ ],
2803
+ "state": "open",
2804
+ "locked": false,
2805
+ "assignee": {
2806
+ "login": "aluttik",
2807
+ "id": 10134357,
2808
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
2809
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
2810
+ "gravatar_id": "",
2811
+ "url": "https://api.github.com/users/aluttik",
2812
+ "html_url": "https://github.com/aluttik",
2813
+ "followers_url": "https://api.github.com/users/aluttik/followers",
2814
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
2815
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
2816
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
2817
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
2818
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
2819
+ "repos_url": "https://api.github.com/users/aluttik/repos",
2820
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
2821
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
2822
+ "type": "User",
2823
+ "site_admin": false
2824
+ },
2825
+ "assignees": [
2826
+ {
2827
+ "login": "aluttik",
2828
+ "id": 10134357,
2829
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
2830
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
2831
+ "gravatar_id": "",
2832
+ "url": "https://api.github.com/users/aluttik",
2833
+ "html_url": "https://github.com/aluttik",
2834
+ "followers_url": "https://api.github.com/users/aluttik/followers",
2835
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
2836
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
2837
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
2838
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
2839
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
2840
+ "repos_url": "https://api.github.com/users/aluttik/repos",
2841
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
2842
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
2843
+ "type": "User",
2844
+ "site_admin": false
2845
+ }
2846
+ ],
2847
+ "milestone": {
2848
+ "url": "https://api.github.com/repos/fossas/basis/milestones/3",
2849
+ "html_url": "https://github.com/fossas/basis/milestone/3",
2850
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/3/labels",
2851
+ "id": 5808820,
2852
+ "node_id": "MDk6TWlsZXN0b25lNTgwODgyMA==",
2853
+ "number": 3,
2854
+ "title": "RPM Analysis",
2855
+ "description": "",
2856
+ "creator": {
2857
+ "login": "microsoftly",
2858
+ "id": 4560399,
2859
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2860
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2861
+ "gravatar_id": "",
2862
+ "url": "https://api.github.com/users/microsoftly",
2863
+ "html_url": "https://github.com/microsoftly",
2864
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2865
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2866
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2867
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2868
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2869
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2870
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2871
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2872
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2873
+ "type": "User",
2874
+ "site_admin": false
2875
+ },
2876
+ "open_issues": 4,
2877
+ "closed_issues": 1,
2878
+ "state": "open",
2879
+ "created_at": "2020-08-25T18:08:32Z",
2880
+ "updated_at": "2020-09-03T15:03:45Z",
2881
+ "due_on": "2020-08-28T07:00:00Z",
2882
+ "closed_at": null
2883
+ },
2884
+ "comments": 0,
2885
+ "created_at": "2020-08-25T18:18:24Z",
2886
+ "updated_at": "2020-08-25T18:23:29Z",
2887
+ "closed_at": null,
2888
+ "author_association": "CONTRIBUTOR",
2889
+ "active_lock_reason": null,
2890
+ "body": "# Description\r\nLarge call trace errors are popping up in RPM analysis on kube. Reason is not currently known, nor is there a hypothesis atm.\r\n\r\n# How to find trace\r\n* Go to RPM pods, select pod with many restarts. \r\n* Go to logs\r\n* Hit the triple dot more options button in the top right, select the previous logs option\r\n* search for the trace, this might need a few tries to find a pod that had this case\r\n\r\n# Example trace\r\n(partial) \r\n```\r\nbytes.(*Buffer).ReadFrom(0xc001dbbad8, 0x162fb60, 0xc001d4d3c0, 0x40a3e5, 0x11d65e0, 0x13048a0)\r\n\t/usr/local/go/src/bytes/buffer.go:204 +0xb4\r\ncrypto/tls.(*Conn).readFromUntil(0xc001dbb880, 0x1630e60, 0xc00292b338, 0x5, 0xc00292b338, 0x40c406)\r\n\t/usr/local/go/src/crypto/tls/conn.go:802 +0xec\r\ncrypto/tls.(*Conn).readRecordOrCCS(0xc001dbb880, 0x0, 0x0, 0x3)\r\n\t/usr/local/go/src/crypto/tls/conn.go:609 +0x124\r\ncrypto/tls.(*Conn).readRecord(...)\r\n\t/usr/local/go/src/crypto/tls/conn.go:577\r\ncrypto/tls.(*Conn).Read(0xc001dbb880, 0xc002910000, 0x1000, 0x1000, 0x0, 0x0, 0x0)\r\n\t/usr/local/go/src/crypto/tls/conn.go:1255 +0x161\r\nnet/http.(*persistConn).Read(0xc003020b40, 0xc002910000, 0x1000, 0x1000, 0xc0024861e0, 0xc000902c20, 0x404db5)\r\n\t/usr/local/go/src/net/http/transport.go:1747 +0x75\r\nbufio.(*Reader).fill(0xc0005b10e0)\r\n\t/usr/local/go/src/bufio/bufio.go:100 +0x103\r\nbufio.(*Reader).Peek(0xc0005b10e0, 0x1, 0x0, 0x0, 0x1, 0xc002486100, 0x0)\r\n\t/usr/local/go/src/bufio/bufio.go:138 +0x4f\r\nnet/http.(*persistConn).readLoop(0xc003020b40)\r\n\t/usr/local/go/src/net/http/transport.go:1900 +0x1d6\r\ncreated by net/http.(*Transport).dialConn\r\n\t/usr/local/go/src/net/http/transport.go:1569 +0xafe\r\ngoroutine 240671 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 248017 [chan send]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 240117 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 251813 [semacquire]:\r\nsync.runtime_SemacquireMutex(0xc00060a654, 0xc00242c701, 0x1)\r\n\t/usr/local/go/src/runtime/sema.go:71 +0x47\r\nsync.(*Mutex).lockSlow(0xc00060a650)\r\n\t/usr/local/go/src/sync/mutex.go:138 +0xfc\r\nsync.(*Mutex).Lock(...)\r\n\t/usr/local/go/src/sync/mutex.go:81\r\ngithub.com/sirupsen/logrus.(*MutexWrap).Lock(...)\r\n\t/go/pkg/mod/github.com/sirupsen/logrus@v1.5.0/logger.go:53\r\ngithub.com/sirupsen/logrus.(*Entry).WithFields(0xc002427d50, 0xc00256d348, 0x0)\r\n\t/go/pkg/mod/github.com/sirupsen/logrus@v1.5.0/entry.go:125 +0x68d\r\ngithub.com/fossas/basis/shared/pkg/effects/logging.(*FossaLogger).WithFields(...)\r\n\t/src/github.com/fossas/basis/shared/pkg/effects/logging/logger.go:22\r\ngithub.com/fossas/basis/shared/pkg/effects/logging.(*FossaLogger).DurationWithInitialMessage.func1(0x13855c4, 0x20, 0x6, 0x0, 0x0, 0x0, 0x0, 0x164e9c0, 0xc0033f6fa0)\r\n\t/src/github.com/fossas/basis/shared/pkg/effects/logging/utils.go:90 +0x1f1\r\ngithub.com/fossas/basis/ramjet/pkg/ipr.ReadBytesFromFile(0x164e000, 0xc00ce65020, 0x0, 0x0, 0xc0021f0a00, 0x20, 0x0, 0x0, 0xc001dc5b60, 0x10, ...)\r\n\t/src/github.com/fossas/basis/ramjet/pkg/ipr/util.go:101 +0x70b\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.processFile(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:273 +0x38e\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent.func4(0xc00970b768, 0x0)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:186 +0x217\r\ngolang.org/x/sync/errgroup.(*Group).Go.func1(0xc005ce13e0, 0xc000f2ca80)\r\n\t/go/pkg/mod/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e/errgroup/errgroup.go:57 +0x64\r\ncreated by golang.org/x/sync/errgroup.(*Group).Go\r\n\t/go/pkg/mod/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e/errgroup/errgroup.go:54 +0x66\r\ngoroutine 243387 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 243095 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 243965 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 242503 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 239914 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\ngoroutine 241968 [chan send, 1 minutes]:\r\ngithub.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.walkFileTree(0x165ca20, 0xc001c260a0, 0x1630240, 0xc001e7a000, 0x1631de0, 0xc001c260b0, 0x1630220, 0xc00017c460, 0x164e2c0, 0xc001c26080, ...)\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:239 +0x1c8\r\ncreated by github.com/fossas/basis/ramjet/internal/lib/analysis.ComponentAnalyzer.AnalyzeComponent\r\n\t/src/github.com/fossas/basis/ramjet/internal/lib/analysis/analysis.go:180 +0xc14\r\nLogs from to UTC\r\n```\r\n",
2891
+ "performed_via_github_app": null
2892
+ },
2893
+ {
2894
+ "url": "https://api.github.com/repos/fossas/basis/issues/665",
2895
+ "repository_url": "https://api.github.com/repos/fossas/basis",
2896
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/665/labels{/name}",
2897
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/665/comments",
2898
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/665/events",
2899
+ "html_url": "https://github.com/fossas/basis/issues/665",
2900
+ "id": 685686722,
2901
+ "node_id": "MDU6SXNzdWU2ODU2ODY3MjI=",
2902
+ "number": 665,
2903
+ "title": "RPM analysis",
2904
+ "user": {
2905
+ "login": "microsoftly",
2906
+ "id": 4560399,
2907
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
2908
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
2909
+ "gravatar_id": "",
2910
+ "url": "https://api.github.com/users/microsoftly",
2911
+ "html_url": "https://github.com/microsoftly",
2912
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
2913
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
2914
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
2915
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
2916
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
2917
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
2918
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
2919
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
2920
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
2921
+ "type": "User",
2922
+ "site_admin": false
2923
+ },
2924
+ "labels": [
2925
+ {
2926
+ "id": 1715002852,
2927
+ "node_id": "MDU6TGFiZWwxNzE1MDAyODUy",
2928
+ "url": "https://api.github.com/repos/fossas/basis/labels/bug",
2929
+ "name": "bug",
2930
+ "color": "d73a4a",
2931
+ "default": true,
2932
+ "description": "Something isn't working"
2933
+ },
2934
+ {
2935
+ "id": 2233963128,
2936
+ "node_id": "MDU6TGFiZWwyMjMzOTYzMTI4",
2937
+ "url": "https://api.github.com/repos/fossas/basis/labels/story",
2938
+ "name": "story",
2939
+ "color": "7139ba",
2940
+ "default": false,
2941
+ "description": ""
2942
+ }
2943
+ ],
2944
+ "state": "open",
2945
+ "locked": false,
2946
+ "assignee": {
2947
+ "login": "aluttik",
2948
+ "id": 10134357,
2949
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
2950
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
2951
+ "gravatar_id": "",
2952
+ "url": "https://api.github.com/users/aluttik",
2953
+ "html_url": "https://github.com/aluttik",
2954
+ "followers_url": "https://api.github.com/users/aluttik/followers",
2955
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
2956
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
2957
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
2958
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
2959
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
2960
+ "repos_url": "https://api.github.com/users/aluttik/repos",
2961
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
2962
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
2963
+ "type": "User",
2964
+ "site_admin": false
2965
+ },
2966
+ "assignees": [
2967
+ {
2968
+ "login": "aluttik",
2969
+ "id": 10134357,
2970
+ "node_id": "MDQ6VXNlcjEwMTM0MzU3",
2971
+ "avatar_url": "https://avatars0.githubusercontent.com/u/10134357?v=4",
2972
+ "gravatar_id": "",
2973
+ "url": "https://api.github.com/users/aluttik",
2974
+ "html_url": "https://github.com/aluttik",
2975
+ "followers_url": "https://api.github.com/users/aluttik/followers",
2976
+ "following_url": "https://api.github.com/users/aluttik/following{/other_user}",
2977
+ "gists_url": "https://api.github.com/users/aluttik/gists{/gist_id}",
2978
+ "starred_url": "https://api.github.com/users/aluttik/starred{/owner}{/repo}",
2979
+ "subscriptions_url": "https://api.github.com/users/aluttik/subscriptions",
2980
+ "organizations_url": "https://api.github.com/users/aluttik/orgs",
2981
+ "repos_url": "https://api.github.com/users/aluttik/repos",
2982
+ "events_url": "https://api.github.com/users/aluttik/events{/privacy}",
2983
+ "received_events_url": "https://api.github.com/users/aluttik/received_events",
2984
+ "type": "User",
2985
+ "site_admin": false
2986
+ }
2987
+ ],
2988
+ "milestone": {
2989
+ "url": "https://api.github.com/repos/fossas/basis/milestones/3",
2990
+ "html_url": "https://github.com/fossas/basis/milestone/3",
2991
+ "labels_url": "https://api.github.com/repos/fossas/basis/milestones/3/labels",
2992
+ "id": 5808820,
2993
+ "node_id": "MDk6TWlsZXN0b25lNTgwODgyMA==",
2994
+ "number": 3,
2995
+ "title": "RPM Analysis",
2996
+ "description": "",
2997
+ "creator": {
2998
+ "login": "microsoftly",
2999
+ "id": 4560399,
3000
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
3001
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
3002
+ "gravatar_id": "",
3003
+ "url": "https://api.github.com/users/microsoftly",
3004
+ "html_url": "https://github.com/microsoftly",
3005
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
3006
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
3007
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
3008
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
3009
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
3010
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
3011
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
3012
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
3013
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
3014
+ "type": "User",
3015
+ "site_admin": false
3016
+ },
3017
+ "open_issues": 4,
3018
+ "closed_issues": 1,
3019
+ "state": "open",
3020
+ "created_at": "2020-08-25T18:08:32Z",
3021
+ "updated_at": "2020-09-03T15:03:45Z",
3022
+ "due_on": "2020-08-28T07:00:00Z",
3023
+ "closed_at": null
3024
+ },
3025
+ "comments": 0,
3026
+ "created_at": "2020-08-25T18:08:41Z",
3027
+ "updated_at": "2020-08-25T18:23:55Z",
3028
+ "closed_at": null,
3029
+ "author_association": "CONTRIBUTOR",
3030
+ "active_lock_reason": null,
3031
+ "body": "# Description\r\nFinish/track RPM analysis. Resolve bugs in runtime analyiss\r\n\r\n# Query to find failed rpm components\r\n`select analysis_failure_reason, name, version, revision, component.id from component join crawl on component.crawl=crawl.id and crawler=21 and analysis_state='failed';`\r\n\r\nGives failure reason: we should hopefully be able to group these to find categories of failures.\r\nAllows us to track components that failed and were otherwise fixed.\r\n\r\n# Why Create a Story?\r\nWe've encountered a few bugs with RPM analysis. I wanted to capture/group them under a story that could be tracked independently",
3032
+ "performed_via_github_app": null
3033
+ },
3034
+ {
3035
+ "url": "https://api.github.com/repos/fossas/basis/issues/655",
3036
+ "repository_url": "https://api.github.com/repos/fossas/basis",
3037
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/655/labels{/name}",
3038
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/655/comments",
3039
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/655/events",
3040
+ "html_url": "https://github.com/fossas/basis/issues/655",
3041
+ "id": 683723517,
3042
+ "node_id": "MDU6SXNzdWU2ODM3MjM1MTc=",
3043
+ "number": 655,
3044
+ "title": "Template issue for validating analysis worker output",
3045
+ "user": {
3046
+ "login": "microsoftly",
3047
+ "id": 4560399,
3048
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
3049
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
3050
+ "gravatar_id": "",
3051
+ "url": "https://api.github.com/users/microsoftly",
3052
+ "html_url": "https://github.com/microsoftly",
3053
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
3054
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
3055
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
3056
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
3057
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
3058
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
3059
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
3060
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
3061
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
3062
+ "type": "User",
3063
+ "site_admin": false
3064
+ },
3065
+ "labels": [
3066
+ {
3067
+ "id": 2292200621,
3068
+ "node_id": "MDU6TGFiZWwyMjkyMjAwNjIx",
3069
+ "url": "https://api.github.com/repos/fossas/basis/labels/template",
3070
+ "name": "template",
3071
+ "color": "fef2c0",
3072
+ "default": false,
3073
+ "description": ""
3074
+ }
3075
+ ],
3076
+ "state": "open",
3077
+ "locked": false,
3078
+ "assignee": null,
3079
+ "assignees": [
3080
+
3081
+ ],
3082
+ "milestone": null,
3083
+ "comments": 0,
3084
+ "created_at": "2020-08-21T17:59:54Z",
3085
+ "updated_at": "2020-08-21T18:00:59Z",
3086
+ "closed_at": null,
3087
+ "author_association": "CONTRIBUTOR",
3088
+ "active_lock_reason": null,
3089
+ "body": "",
3090
+ "performed_via_github_app": null
3091
+ },
3092
+ {
3093
+ "url": "https://api.github.com/repos/fossas/basis/issues/654",
3094
+ "repository_url": "https://api.github.com/repos/fossas/basis",
3095
+ "labels_url": "https://api.github.com/repos/fossas/basis/issues/654/labels{/name}",
3096
+ "comments_url": "https://api.github.com/repos/fossas/basis/issues/654/comments",
3097
+ "events_url": "https://api.github.com/repos/fossas/basis/issues/654/events",
3098
+ "html_url": "https://github.com/fossas/basis/issues/654",
3099
+ "id": 683722412,
3100
+ "node_id": "MDU6SXNzdWU2ODM3MjI0MTI=",
3101
+ "number": 654,
3102
+ "title": "Add tests for `httppath` package",
3103
+ "user": {
3104
+ "login": "microsoftly",
3105
+ "id": 4560399,
3106
+ "node_id": "MDQ6VXNlcjQ1NjAzOTk=",
3107
+ "avatar_url": "https://avatars3.githubusercontent.com/u/4560399?v=4",
3108
+ "gravatar_id": "",
3109
+ "url": "https://api.github.com/users/microsoftly",
3110
+ "html_url": "https://github.com/microsoftly",
3111
+ "followers_url": "https://api.github.com/users/microsoftly/followers",
3112
+ "following_url": "https://api.github.com/users/microsoftly/following{/other_user}",
3113
+ "gists_url": "https://api.github.com/users/microsoftly/gists{/gist_id}",
3114
+ "starred_url": "https://api.github.com/users/microsoftly/starred{/owner}{/repo}",
3115
+ "subscriptions_url": "https://api.github.com/users/microsoftly/subscriptions",
3116
+ "organizations_url": "https://api.github.com/users/microsoftly/orgs",
3117
+ "repos_url": "https://api.github.com/users/microsoftly/repos",
3118
+ "events_url": "https://api.github.com/users/microsoftly/events{/privacy}",
3119
+ "received_events_url": "https://api.github.com/users/microsoftly/received_events",
3120
+ "type": "User",
3121
+ "site_admin": false
3122
+ },
3123
+ "labels": [
3124
+ {
3125
+ "id": 2233957218,
3126
+ "node_id": "MDU6TGFiZWwyMjMzOTU3MjE4",
3127
+ "url": "https://api.github.com/repos/fossas/basis/labels/task",
3128
+ "name": "task",
3129
+ "color": "ed8917",
3130
+ "default": false,
3131
+ "description": ""
3132
+ },
3133
+ {
3134
+ "id": 2242946206,
3135
+ "node_id": "MDU6TGFiZWwyMjQyOTQ2MjA2",
3136
+ "url": "https://api.github.com/repos/fossas/basis/labels/tech%20debt",
3137
+ "name": "tech debt",
3138
+ "color": "ffccfc",
3139
+ "default": false,
3140
+ "description": ""
3141
+ },
3142
+ {
3143
+ "id": 2292163570,
3144
+ "node_id": "MDU6TGFiZWwyMjkyMTYzNTcw",
3145
+ "url": "https://api.github.com/repos/fossas/basis/labels/xs(%3C=1%20eng%20day)",
3146
+ "name": "xs(<=1 eng day)",
3147
+ "color": "bfd4f2",
3148
+ "default": false,
3149
+ "description": ""
3150
+ }
3151
+ ],
3152
+ "state": "open",
3153
+ "locked": false,
3154
+ "assignee": null,
3155
+ "assignees": [
3156
+
3157
+ ],
3158
+ "milestone": null,
3159
+ "comments": 0,
3160
+ "created_at": "2020-08-21T17:57:55Z",
3161
+ "updated_at": "2020-08-21T17:58:38Z",
3162
+ "closed_at": null,
3163
+ "author_association": "CONTRIBUTOR",
3164
+ "active_lock_reason": null,
3165
+ "body": "",
3166
+ "performed_via_github_app": null
3167
+ }
3168
+ ]