gitlab-releases 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdd6ca3891ddce39fd65096220287c7eac8d3c344f0660b7741b49131ec71b88
4
- data.tar.gz: f1d5ce0a726fd809f19a5eb2dc3032da8b0fdf2421256cbea70bf2dff5ca9bfb
3
+ metadata.gz: 746155a512fce45ce0f53dc72e4e5f43280fee31def42ee1232e4674e6754992
4
+ data.tar.gz: fea0dca4f427127ee7b791cc97b2d5d3e600ed120baaa6c82fd73a0acb367623
5
5
  SHA512:
6
- metadata.gz: 949f9a6390771de916a7da3b91cae120a08937f0cee2a4f7188f15374be825867e4dcefe7a65e5557c35bfb32c8a13adaf63efc00527d7aed9b09731071f3079
7
- data.tar.gz: f3894af6c3f77437f287025800edb4c0c72fa15d27efed318a9dd3e78bfee8bce671bc011887f4dfeebd0f9d1cade3698f260aa548fdeba5c419ba916b7a7277
6
+ metadata.gz: dcbf182894b735c10891863e35a1be298f0de6111b61b5048ef46c5f63a7e38797763381856ac575950e2ac22d69e870f212a2ff0de2a13c3c4ffa5e86896ca0
7
+ data.tar.gz: d38b59ad684dbdf50a702b3a776bfdec4b79d629d73cdaa333bc4f2f231d32701f6d93436b8827e8c2e151b1f6b63d1ff137b6be54d28e17da04e70b633e5408
data/.rubocop.yml CHANGED
@@ -1,6 +1,3 @@
1
- AllCops:
2
- TargetRubyVersion: 3.4
3
-
4
1
  Style/StringLiterals:
5
2
  Enabled: false
6
3
  EnforcedStyle: double_quotes
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [2.2.0] - 2026-10-14
4
+
5
+ - Drops labkit as a gem dependency
6
+ - Introduces a minimal stdlib JSON logger
7
+
3
8
  ## [2.1.1] - 2026-08-10
4
9
 
5
10
  - Bump Ruby version to 3.4.10 in preparation for a Ruby 4.0 upgrade
data/Gemfile.lock CHANGED
@@ -1,33 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-releases (2.1.1)
4
+ gitlab-releases (2.2.0)
5
5
  activesupport (~> 8.0)
6
- gitlab (>= 5.1, < 7.x)
7
- gitlab-labkit (>= 1.5.1, < 5.0)
6
+ gitlab (>= 5.1, < 7)
8
7
  http (~> 5.2.0, ~> 5.2)
8
+ logger (~> 1.6)
9
9
  retriable (~> 3.1.2)
10
10
  version_sorter (~> 2.3.0)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- actionpack (8.1.3.1)
16
- actionview (= 8.1.3.1)
17
- activesupport (= 8.1.3.1)
18
- nokogiri (>= 1.8.5)
19
- rack (>= 2.2.4)
20
- rack-session (>= 1.0.1)
21
- rack-test (>= 0.6.3)
22
- rails-dom-testing (~> 2.2)
23
- rails-html-sanitizer (~> 1.6)
24
- useragent (~> 0.16)
25
- actionview (8.1.3.1)
26
- activesupport (= 8.1.3.1)
27
- builder (~> 3.1)
28
- erubi (~> 1.11)
29
- rails-dom-testing (~> 2.2)
30
- rails-html-sanitizer (~> 1.6)
31
15
  activesupport (8.1.3.1)
32
16
  base64
33
17
  bigdecimal
@@ -48,20 +32,17 @@ GEM
48
32
  bigdecimal (4.1.2)
49
33
  binding_of_caller (2.0.0)
50
34
  debug_inspector (>= 1.2.0)
51
- builder (3.3.0)
52
35
  coderay (1.1.3)
53
36
  concurrent-ruby (1.3.8)
54
37
  connection_pool (3.0.2)
55
38
  crack (1.0.1)
56
39
  bigdecimal
57
40
  rexml
58
- crass (1.0.7)
59
41
  csv (3.3.6)
60
42
  debug_inspector (1.2.0)
61
43
  diff-lcs (1.6.2)
62
44
  domain_name (0.6.20240107)
63
45
  drb (2.2.3)
64
- erubi (1.13.1)
65
46
  ffi (1.17.4-aarch64-linux-gnu)
66
47
  ffi (1.17.4-aarch64-linux-musl)
67
48
  ffi (1.17.4-arm-linux-gnu)
@@ -77,66 +58,6 @@ GEM
77
58
  base64 (~> 0.2.0)
78
59
  httparty (~> 0.20)
79
60
  terminal-table (>= 1.5.1)
80
- gitlab-labkit (4.0.0)
81
- actionpack (>= 5.0.0, < 8.2.0)
82
- activesupport (>= 5.0.0, < 8.2.0)
83
- google-protobuf (>= 3.25, < 5.0)
84
- grpc (>= 1.75)
85
- jaeger-client (~> 1.1.0)
86
- json_schemer (>= 2.3.0, < 3.0)
87
- openssl (~> 3.3.2)
88
- opentelemetry-exporter-otlp (>= 0.31, < 1)
89
- opentelemetry-instrumentation-all (>= 0.89, < 1)
90
- opentelemetry-sdk (>= 1.10, < 2)
91
- opentracing (>= 0.4, < 1)
92
- pg_query (>= 6.1.0, < 7.0)
93
- prometheus-client-mmap (>= 1.2, < 2.0)
94
- redis (> 3.0.0, < 6.0.0)
95
- google-protobuf (4.35.1)
96
- bigdecimal
97
- rake (~> 13.3)
98
- google-protobuf (4.35.1-aarch64-linux-gnu)
99
- bigdecimal
100
- rake (~> 13.3)
101
- google-protobuf (4.35.1-aarch64-linux-musl)
102
- bigdecimal
103
- rake (~> 13.3)
104
- google-protobuf (4.35.1-arm64-darwin)
105
- bigdecimal
106
- rake (~> 13.3)
107
- google-protobuf (4.35.1-x86_64-darwin)
108
- bigdecimal
109
- rake (~> 13.3)
110
- google-protobuf (4.35.1-x86_64-linux-gnu)
111
- bigdecimal
112
- rake (~> 13.3)
113
- google-protobuf (4.35.1-x86_64-linux-musl)
114
- bigdecimal
115
- rake (~> 13.3)
116
- googleapis-common-protos-types (1.23.0)
117
- google-protobuf (~> 4.26)
118
- grpc (1.83.0)
119
- google-protobuf (>= 3.25, < 5.0)
120
- googleapis-common-protos-types (~> 1.0)
121
- grpc (1.83.0-aarch64-linux-gnu)
122
- google-protobuf (>= 3.25, < 5.0)
123
- googleapis-common-protos-types (~> 1.0)
124
- grpc (1.83.0-aarch64-linux-musl)
125
- google-protobuf (>= 3.25, < 5.0)
126
- googleapis-common-protos-types (~> 1.0)
127
- grpc (1.83.0-arm64-darwin)
128
- google-protobuf (>= 3.25, < 5.0)
129
- googleapis-common-protos-types (~> 1.0)
130
- grpc (1.83.0-x86_64-darwin)
131
- google-protobuf (>= 3.25, < 5.0)
132
- googleapis-common-protos-types (~> 1.0)
133
- grpc (1.83.0-x86_64-linux-gnu)
134
- google-protobuf (>= 3.25, < 5.0)
135
- googleapis-common-protos-types (~> 1.0)
136
- grpc (1.83.0-x86_64-linux-musl)
137
- google-protobuf (>= 3.25, < 5.0)
138
- googleapis-common-protos-types (~> 1.0)
139
- hana (1.3.7)
140
61
  hashdiff (1.2.1)
141
62
  http (5.2.0)
142
63
  addressable (~> 2.8)
@@ -153,24 +74,13 @@ GEM
153
74
  multi_xml (>= 0.5.2)
154
75
  i18n (1.15.2)
155
76
  concurrent-ruby (~> 1.0)
156
- jaeger-client (1.1.0)
157
- opentracing (~> 0.3)
158
- thrift
159
77
  json (2.21.2)
160
- json_schemer (2.5.0)
161
- bigdecimal
162
- hana (~> 1.3)
163
- regexp_parser (~> 2.0)
164
- simpleidn (~> 0.2)
165
78
  language_server-protocol (3.17.0.6)
166
79
  lint_roller (1.1.0)
167
80
  llhttp-ffi (0.5.1)
168
81
  ffi-compiler (~> 1.0)
169
82
  rake (~> 13.0)
170
83
  logger (1.7.0)
171
- loofah (2.25.2)
172
- crass (~> 1.0.2)
173
- nokogiri (>= 1.12.0)
174
84
  method_source (1.1.0)
175
85
  mini_mime (1.1.5)
176
86
  minitest (6.0.6)
@@ -178,272 +88,22 @@ GEM
178
88
  prism (~> 1.5)
179
89
  multi_xml (0.9.1)
180
90
  bigdecimal (>= 3.1, < 5)
181
- nokogiri (1.19.4-aarch64-linux-gnu)
182
- racc (~> 1.4)
183
- nokogiri (1.19.4-aarch64-linux-musl)
184
- racc (~> 1.4)
185
- nokogiri (1.19.4-arm-linux-gnu)
186
- racc (~> 1.4)
187
- nokogiri (1.19.4-arm-linux-musl)
188
- racc (~> 1.4)
189
- nokogiri (1.19.4-arm64-darwin)
190
- racc (~> 1.4)
191
- nokogiri (1.19.4-x86_64-darwin)
192
- racc (~> 1.4)
193
- nokogiri (1.19.4-x86_64-linux-gnu)
194
- racc (~> 1.4)
195
- nokogiri (1.19.4-x86_64-linux-musl)
196
- racc (~> 1.4)
197
- openssl (3.3.3)
198
- opentelemetry-api (1.11.0)
199
- logger
200
- opentelemetry-common (0.25.1)
201
- opentelemetry-api (~> 1.0)
202
- opentelemetry-exporter-otlp (0.34.1)
203
- google-protobuf (>= 3.18)
204
- googleapis-common-protos-types (~> 1.3)
205
- opentelemetry-api (~> 1.1)
206
- opentelemetry-common (~> 0.20)
207
- opentelemetry-sdk (~> 1.10)
208
- opentelemetry-semantic_conventions
209
- opentelemetry-helpers-mysql (0.6.0)
210
- opentelemetry-api (~> 1.7)
211
- opentelemetry-common (~> 0.21)
212
- opentelemetry-helpers-sql (0.4.0)
213
- opentelemetry-api (~> 1.7)
214
- opentelemetry-helpers-sql-processor (0.5.0)
215
- opentelemetry-api (~> 1.0)
216
- opentelemetry-common (~> 0.21)
217
- opentelemetry-instrumentation-action_mailer (0.8.1)
218
- opentelemetry-instrumentation-active_support (~> 0.10)
219
- opentelemetry-instrumentation-action_pack (0.18.0)
220
- opentelemetry-instrumentation-rack (~> 0.29)
221
- opentelemetry-instrumentation-action_view (0.13.0)
222
- opentelemetry-instrumentation-active_support (~> 0.10)
223
- opentelemetry-instrumentation-active_job (0.13.0)
224
- opentelemetry-instrumentation-base (~> 0.25)
225
- opentelemetry-instrumentation-active_model_serializers (0.25.0)
226
- opentelemetry-instrumentation-active_support (>= 0.7.0)
227
- opentelemetry-instrumentation-active_record (0.13.0)
228
- opentelemetry-instrumentation-base (~> 0.25)
229
- opentelemetry-instrumentation-active_storage (0.5.1)
230
- opentelemetry-instrumentation-active_support (~> 0.10)
231
- opentelemetry-instrumentation-active_support (0.12.1)
232
- opentelemetry-instrumentation-base (~> 0.25)
233
- opentelemetry-instrumentation-all (0.94.0)
234
- opentelemetry-instrumentation-active_model_serializers (~> 0.25.0)
235
- opentelemetry-instrumentation-anthropic (~> 0.5.0)
236
- opentelemetry-instrumentation-aws_lambda (~> 0.7.0)
237
- opentelemetry-instrumentation-aws_sdk (~> 0.12.0)
238
- opentelemetry-instrumentation-bunny (~> 0.25.0)
239
- opentelemetry-instrumentation-concurrent_ruby (~> 0.25.0)
240
- opentelemetry-instrumentation-dalli (~> 0.30.0)
241
- opentelemetry-instrumentation-delayed_job (~> 0.26.0)
242
- opentelemetry-instrumentation-ethon (~> 0.29.0)
243
- opentelemetry-instrumentation-excon (~> 0.29.0)
244
- opentelemetry-instrumentation-faraday (~> 0.33.0)
245
- opentelemetry-instrumentation-grape (~> 0.7.0)
246
- opentelemetry-instrumentation-graphql (~> 0.32.0)
247
- opentelemetry-instrumentation-grpc (~> 0.5.0)
248
- opentelemetry-instrumentation-gruf (~> 0.6.0)
249
- opentelemetry-instrumentation-http (~> 0.30.0)
250
- opentelemetry-instrumentation-http_client (~> 0.29.0)
251
- opentelemetry-instrumentation-httpx (~> 0.8.0)
252
- opentelemetry-instrumentation-koala (~> 0.24.0)
253
- opentelemetry-instrumentation-lmdb (~> 0.26.0)
254
- opentelemetry-instrumentation-mongo (~> 0.26.0)
255
- opentelemetry-instrumentation-mysql2 (~> 0.34.0)
256
- opentelemetry-instrumentation-net_http (~> 0.29.0)
257
- opentelemetry-instrumentation-pg (~> 0.36.0)
258
- opentelemetry-instrumentation-que (~> 0.13.0)
259
- opentelemetry-instrumentation-racecar (~> 0.7.0)
260
- opentelemetry-instrumentation-rack (~> 0.31.0)
261
- opentelemetry-instrumentation-rails (~> 0.42.0)
262
- opentelemetry-instrumentation-rake (~> 0.6.0)
263
- opentelemetry-instrumentation-rdkafka (~> 0.10.0)
264
- opentelemetry-instrumentation-redis (~> 0.29.0)
265
- opentelemetry-instrumentation-resque (~> 0.9.0)
266
- opentelemetry-instrumentation-restclient (~> 0.28.0)
267
- opentelemetry-instrumentation-ruby_kafka (~> 0.25.0)
268
- opentelemetry-instrumentation-sidekiq (~> 0.29.0)
269
- opentelemetry-instrumentation-sinatra (~> 0.30.0)
270
- opentelemetry-instrumentation-trilogy (~> 0.69.0)
271
- opentelemetry-instrumentation-anthropic (0.5.0)
272
- opentelemetry-instrumentation-base (~> 0.25)
273
- opentelemetry-instrumentation-aws_lambda (0.7.0)
274
- opentelemetry-instrumentation-base (~> 0.25)
275
- opentelemetry-instrumentation-aws_sdk (0.12.0)
276
- opentelemetry-instrumentation-base (~> 0.25)
277
- opentelemetry-instrumentation-base (0.26.1)
278
- opentelemetry-api (~> 1.7)
279
- opentelemetry-common (~> 0.21)
280
- opentelemetry-registry (~> 0.1)
281
- opentelemetry-instrumentation-bunny (0.25.0)
282
- opentelemetry-instrumentation-base (~> 0.25)
283
- opentelemetry-instrumentation-concurrent_ruby (0.25.0)
284
- opentelemetry-instrumentation-base (~> 0.25)
285
- opentelemetry-instrumentation-dalli (0.30.0)
286
- opentelemetry-instrumentation-base (~> 0.25)
287
- opentelemetry-instrumentation-delayed_job (0.26.0)
288
- opentelemetry-instrumentation-base (~> 0.25)
289
- opentelemetry-instrumentation-ethon (0.29.0)
290
- opentelemetry-instrumentation-base (~> 0.25)
291
- opentelemetry-instrumentation-excon (0.29.1)
292
- opentelemetry-instrumentation-base (~> 0.25)
293
- opentelemetry-instrumentation-faraday (0.33.0)
294
- opentelemetry-instrumentation-base (~> 0.25)
295
- opentelemetry-instrumentation-grape (0.7.1)
296
- opentelemetry-instrumentation-rack (~> 0.29)
297
- opentelemetry-instrumentation-graphql (0.32.0)
298
- opentelemetry-instrumentation-base (~> 0.25)
299
- opentelemetry-instrumentation-grpc (0.5.2)
300
- opentelemetry-instrumentation-base (~> 0.25)
301
- opentelemetry-instrumentation-gruf (0.6.2)
302
- opentelemetry-instrumentation-base (~> 0.25)
303
- opentelemetry-instrumentation-http (0.30.0)
304
- opentelemetry-instrumentation-base (~> 0.25)
305
- opentelemetry-instrumentation-http_client (0.29.0)
306
- opentelemetry-instrumentation-base (~> 0.25)
307
- opentelemetry-instrumentation-httpx (0.8.0)
308
- opentelemetry-instrumentation-base (~> 0.25)
309
- opentelemetry-instrumentation-koala (0.24.0)
310
- opentelemetry-instrumentation-base (~> 0.25)
311
- opentelemetry-instrumentation-lmdb (0.26.0)
312
- opentelemetry-instrumentation-base (~> 0.25)
313
- opentelemetry-instrumentation-mongo (0.26.0)
314
- opentelemetry-instrumentation-base (~> 0.25)
315
- opentelemetry-instrumentation-mysql2 (0.34.0)
316
- opentelemetry-helpers-mysql
317
- opentelemetry-helpers-sql
318
- opentelemetry-helpers-sql-processor
319
- opentelemetry-instrumentation-base (~> 0.25)
320
- opentelemetry-instrumentation-net_http (0.29.0)
321
- opentelemetry-instrumentation-base (~> 0.25)
322
- opentelemetry-instrumentation-pg (0.36.0)
323
- opentelemetry-helpers-sql
324
- opentelemetry-helpers-sql-processor
325
- opentelemetry-instrumentation-base (~> 0.25)
326
- opentelemetry-instrumentation-que (0.13.0)
327
- opentelemetry-instrumentation-base (~> 0.25)
328
- opentelemetry-instrumentation-racecar (0.7.0)
329
- opentelemetry-instrumentation-base (~> 0.25)
330
- opentelemetry-instrumentation-rack (0.31.1)
331
- opentelemetry-instrumentation-base (~> 0.25)
332
- opentelemetry-instrumentation-rails (0.42.0)
333
- opentelemetry-instrumentation-action_mailer (~> 0.7)
334
- opentelemetry-instrumentation-action_pack (~> 0.17)
335
- opentelemetry-instrumentation-action_view (~> 0.12)
336
- opentelemetry-instrumentation-active_job (~> 0.11)
337
- opentelemetry-instrumentation-active_record (~> 0.12)
338
- opentelemetry-instrumentation-active_storage (~> 0.4)
339
- opentelemetry-instrumentation-active_support (~> 0.11)
340
- opentelemetry-instrumentation-concurrent_ruby (~> 0.25)
341
- opentelemetry-instrumentation-rake (0.6.0)
342
- opentelemetry-instrumentation-base (~> 0.25)
343
- opentelemetry-instrumentation-rdkafka (0.10.0)
344
- opentelemetry-instrumentation-base (~> 0.25)
345
- opentelemetry-instrumentation-redis (0.29.0)
346
- opentelemetry-instrumentation-base (~> 0.25)
347
- opentelemetry-instrumentation-resque (0.9.0)
348
- opentelemetry-instrumentation-base (~> 0.25)
349
- opentelemetry-instrumentation-restclient (0.28.0)
350
- opentelemetry-instrumentation-base (~> 0.25)
351
- opentelemetry-instrumentation-ruby_kafka (0.25.0)
352
- opentelemetry-instrumentation-base (~> 0.25)
353
- opentelemetry-instrumentation-sidekiq (0.29.0)
354
- opentelemetry-instrumentation-base (~> 0.25)
355
- opentelemetry-instrumentation-sinatra (0.30.0)
356
- opentelemetry-instrumentation-rack (~> 0.29)
357
- opentelemetry-instrumentation-trilogy (0.69.0)
358
- opentelemetry-helpers-mysql
359
- opentelemetry-helpers-sql
360
- opentelemetry-helpers-sql-processor
361
- opentelemetry-instrumentation-base (~> 0.25)
362
- opentelemetry-semantic_conventions (>= 1.8.0)
363
- opentelemetry-registry (0.6.3)
364
- opentelemetry-api (~> 1.1)
365
- opentelemetry-sdk (1.13.0)
366
- logger
367
- opentelemetry-api (~> 1.1)
368
- opentelemetry-common (~> 0.20)
369
- opentelemetry-registry (~> 0.2)
370
- opentelemetry-semantic_conventions
371
- opentelemetry-semantic_conventions (1.43.0)
372
- opentelemetry-api (~> 1.0)
373
- opentracing (0.5.0)
374
91
  parallel (2.1.0)
375
92
  parser (3.3.12.0)
376
93
  ast (~> 2.4.1)
377
94
  racc
378
- pg_query (6.2.2)
379
- google-protobuf (>= 3.25.3)
380
95
  prism (1.9.0)
381
96
  proc_to_ast (0.2.0)
382
97
  parser
383
98
  rouge
384
99
  unparser
385
- prometheus-client-mmap (1.6.0)
386
- base64
387
- bigdecimal
388
- logger
389
- rb_sys (~> 0.9.128)
390
- prometheus-client-mmap (1.6.0-aarch64-linux-gnu)
391
- base64
392
- bigdecimal
393
- logger
394
- rb_sys (~> 0.9.128)
395
- prometheus-client-mmap (1.6.0-aarch64-linux-musl)
396
- base64
397
- bigdecimal
398
- logger
399
- rb_sys (~> 0.9.128)
400
- prometheus-client-mmap (1.6.0-arm64-darwin)
401
- base64
402
- bigdecimal
403
- logger
404
- rb_sys (~> 0.9.128)
405
- prometheus-client-mmap (1.6.0-x86_64-darwin)
406
- base64
407
- bigdecimal
408
- logger
409
- rb_sys (~> 0.9.128)
410
- prometheus-client-mmap (1.6.0-x86_64-linux-gnu)
411
- base64
412
- bigdecimal
413
- logger
414
- rb_sys (~> 0.9.128)
415
- prometheus-client-mmap (1.6.0-x86_64-linux-musl)
416
- base64
417
- bigdecimal
418
- logger
419
- rb_sys (~> 0.9.128)
420
100
  pry (0.14.2)
421
101
  coderay (~> 1.1)
422
102
  method_source (~> 1.0)
423
103
  public_suffix (7.0.5)
424
104
  racc (1.8.1)
425
- rack (3.2.6)
426
- rack-session (2.1.2)
427
- base64 (>= 0.1.0)
428
- rack (>= 3.0.0)
429
- rack-test (2.2.0)
430
- rack (>= 1.3)
431
- rails-dom-testing (2.3.0)
432
- activesupport (>= 5.0.0)
433
- minitest
434
- nokogiri (>= 1.6)
435
- rails-html-sanitizer (1.7.1)
436
- loofah (~> 2.25, >= 2.25.2)
437
- nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
438
105
  rainbow (3.1.1)
439
106
  rake (13.4.2)
440
- rake-compiler-dock (1.12.0)
441
- rb_sys (0.9.128)
442
- rake-compiler-dock (= 1.12.0)
443
- redis (5.4.1)
444
- redis-client (>= 0.22.0)
445
- redis-client (0.30.1)
446
- connection_pool
447
107
  regexp_parser (2.12.0)
448
108
  retriable (3.1.2)
449
109
  rexml (3.4.4)
@@ -490,12 +150,9 @@ GEM
490
150
  prism (~> 1.7)
491
151
  ruby-progressbar (1.13.0)
492
152
  securerandom (0.4.1)
493
- simpleidn (0.2.3)
494
153
  strscan (3.1.8)
495
154
  terminal-table (4.0.0)
496
155
  unicode-display_width (>= 1.1.1, < 4)
497
- thrift (0.24.0)
498
- logger
499
156
  timecop (0.9.11)
500
157
  tzinfo (2.0.6)
501
158
  concurrent-ruby (~> 1.0)
@@ -507,7 +164,6 @@ GEM
507
164
  parser (>= 3.3.0)
508
165
  prism (>= 1.5.1)
509
166
  uri (1.1.1)
510
- useragent (0.16.11)
511
167
  vcr (6.2.0)
512
168
  version_sorter (2.3.0)
513
169
  webmock (3.18.1)
@@ -542,4 +198,4 @@ DEPENDENCIES
542
198
  webmock (~> 3.18.0)
543
199
 
544
200
  BUNDLED WITH
545
- 4.0.17
201
+ 4.0.17
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "time"
5
+
6
+ module GitlabReleases
7
+ # A minimal, dependency-free JSON log formatter for use with Ruby's
8
+ # stdlib Logger. Produces one JSON object per line:
9
+ #
10
+ # {"severity":"INFO","time":"2026-08-11T13:54:37.123Z","message":"GET https://example.com -> 200 (142ms)"}
11
+ #
12
+ # This intentionally mirrors the field names Labkit::Logging::JsonLogger
13
+ # uses (severity/time/message) so existing log consumers built against gitlab-releases'
14
+ # previous log output keep working without changes.
15
+ class JsonLogFormatter
16
+ def call(severity, time, _progname, msg)
17
+ entry = {
18
+ severity: severity,
19
+ time: time.utc.iso8601(3)
20
+ }.merge(extra_fields(msg)) { |_key, computed_value, _user_value| computed_value }
21
+
22
+ "#{entry.to_json}\n"
23
+ end
24
+
25
+ private
26
+
27
+ # Accepts either a plain string message, or a Hash for consumers that
28
+ # want to attach structured fields, e.g.:
29
+ # logger.info(message: "request completed", status: 200, duration_ms: 142)
30
+ def extra_fields(msg)
31
+ case msg
32
+ when Hash
33
+ msg = msg.transform_keys { |key| key.respond_to?(:to_sym) ? key.to_sym : key }
34
+
35
+ msg.key?(:message) ? msg : msg.merge(message: "")
36
+ when Exception
37
+ { message: msg.message, error_class: msg.class.name, backtrace: msg.backtrace&.first(10) }
38
+ else
39
+ { message: msg.to_s }
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,42 +1,107 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gitlab-labkit'
3
+ require "logger"
4
+ require "http"
5
+ require "http/features/logging"
6
+ require_relative "json_log_formatter"
4
7
 
5
8
  module GitlabReleases
6
- class << self
7
- def configure
8
- yield self
9
- end
9
+ # Module-level logging configuration for the gem. A stdlib
10
+ # Logger and hand it our own GitlabReleases::JsonLogFormatter, producing
11
+ # a severity/time/message JSON shape
12
+ #
13
+ # # Log JSON to stdout (e.g. in a release-tools initializer)
14
+ # GitlabReleases.configure do |config|
15
+ # config.log_output = $stdout
16
+ # end
17
+ #
18
+ # # Or set log output directly
19
+ # GitlabReleases.log_output = $stdout
20
+ #
21
+ # # Or replace the entire logger, any object responding to the
22
+ # # standard Logger interface (#info, #warn, #error, etc.) works here
23
+ # GitlabReleases.logger = Labkit::Logging::JsonLogger.new($stdout)
24
+ module Logging
25
+ class Configuration
26
+ DEFAULT_LOG_OUTPUT = File::NULL
27
+
28
+ attr_reader :log_output, :log_level
10
29
 
11
- def logger
12
- @logger ||= begin
13
- l = Labkit::Logging::JsonLogger.new(log_output)
14
- l.level = ::Logger::INFO
15
- configure_http_logging(l)
16
- l
30
+ def initialize
31
+ @log_level = ::Logger::INFO
32
+ @log_output = DEFAULT_LOG_OUTPUT
33
+ @logger = nil
34
+ @custom_logger = false
17
35
  end
18
- end
19
36
 
20
- def logger=(new_logger)
21
- @logger = new_logger
22
- configure_http_logging(new_logger) if new_logger
23
- end
37
+ def log_output=(io)
38
+ @log_output = io || DEFAULT_LOG_OUTPUT
39
+ @custom_logger = false
40
+ @logger = build_json_logger(@log_output)
24
41
 
25
- def log_output
26
- @log_output ||= File::NULL
27
- end
42
+ wire_up!
43
+ end
44
+
45
+ def log_level=(level)
46
+ @log_level = level
47
+ return if @custom_logger
48
+
49
+ @logger = build_json_logger(log_output)
50
+ wire_up!
51
+ end
52
+
53
+ def logger
54
+ @logger ||= build_json_logger(log_output)
55
+ end
56
+
57
+ def logger=(custom_logger)
58
+ @custom_logger = !custom_logger.nil?
59
+ @logger = custom_logger
60
+ wire_up!
61
+ end
62
+
63
+ private
28
64
 
29
- def log_output=(output)
30
- @log_output = output
31
- @logger = nil
32
- logger
65
+ def build_json_logger(io)
66
+ new_logger = ::Logger.new(io)
67
+ new_logger.level = log_level
68
+ new_logger.formatter = JsonLogFormatter.new
69
+ new_logger
70
+ end
71
+
72
+ def wire_up!
73
+ HTTP.default_options = HTTP.default_options.with_features([{ logging: { logger: logger } }])
74
+
75
+ ReleaseVersionClient.default_options.update(logger: logger) if defined?(ReleaseVersionClient)
76
+ end
33
77
  end
34
78
 
35
- private
79
+ class << self
80
+ def configuration
81
+ @configuration ||= Configuration.new
82
+ end
83
+
84
+ # Entry point for consumer configuration, e.g.:
85
+ # GitlabReleases.configure { |config| config.log_output = $stdout }
86
+ def configure
87
+ yield(configuration)
88
+ end
89
+
90
+ def logger
91
+ configuration.logger
92
+ end
93
+
94
+ def logger=(custom_logger)
95
+ configuration.logger = custom_logger
96
+ end
36
97
 
37
- def configure_http_logging(logger)
38
- HTTP.default_options = HTTP::Options.new(features: { logging: { logger: logger } })
39
- ReleaseVersionClient.default_options.update(logger: logger, log_level: :info)
98
+ def log_output
99
+ configuration.log_output
100
+ end
101
+
102
+ def log_output=(io)
103
+ configuration.log_output = io
104
+ end
40
105
  end
41
106
  end
42
107
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'gitlab/request'
4
4
  require 'gitlab'
5
- require_relative 'logger'
6
5
 
7
6
  class ReleaseVersionClient < Gitlab::Request
8
7
  base_uri 'https://version.gitlab.com'
@@ -4,7 +4,6 @@ require 'version_sorter'
4
4
  require 'retriable'
5
5
  require 'http'
6
6
  require_relative 'release_version_client'
7
- require_relative 'logger'
8
7
 
9
8
  # Wrapper to interact with GitLab release versions. Versions are fetched
10
9
  # from two sources:
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitlabReleases
4
- VERSION = "2.1.1"
4
+ VERSION = "2.2.0"
5
5
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'gitlab_releases/errors'
4
+ require_relative 'gitlab_releases/logger'
4
5
  require_relative 'gitlab_releases/version'
5
6
  require_relative 'gitlab_releases/release_version'
6
7
  require_relative 'gitlab_releases/release_versions'
@@ -8,6 +9,35 @@ require_relative 'gitlab_releases/release_calculator'
8
9
  require_relative 'gitlab_releases/patch_date_calculator'
9
10
 
10
11
  module GitlabReleases
12
+ class << self
13
+ # Delegate module-level logger configuration to GitlabReleases::Logging,
14
+ # so consumer-facing usage is unchanged from the labkit-based version:
15
+ #
16
+ # GitlabReleases.configure { |c| c.log_output = $stdout }
17
+ # GitlabReleases.log_output = $stdout
18
+ # GitlabReleases.logger = SomeCustomLogger.new
19
+ # GitlabReleases.logger #=> current logger instance
20
+ def configure(&block)
21
+ Logging.configure(&block)
22
+ end
23
+
24
+ def logger
25
+ Logging.logger
26
+ end
27
+
28
+ def logger=(custom_logger)
29
+ Logging.logger = custom_logger
30
+ end
31
+
32
+ def log_output
33
+ Logging.log_output
34
+ end
35
+
36
+ def log_output=(io)
37
+ Logging.log_output = io
38
+ end
39
+ end
40
+
11
41
  def self.upcoming_releases
12
42
  ReleaseCalculator.new(
13
43
  current_version: current_version,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-releases
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mayra Cabrera
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '5.1'
33
33
  - - "<"
34
34
  - !ruby/object:Gem::Version
35
- version: 7.x
35
+ version: '7'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,47 +42,41 @@ dependencies:
42
42
  version: '5.1'
43
43
  - - "<"
44
44
  - !ruby/object:Gem::Version
45
- version: 7.x
45
+ version: '7'
46
46
  - !ruby/object:Gem::Dependency
47
- name: gitlab-labkit
47
+ name: http
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - ">="
50
+ - - "~>"
51
51
  - !ruby/object:Gem::Version
52
- version: 1.5.1
53
- - - "<"
52
+ version: '5.2'
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '5.0'
55
+ version: 5.2.0
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.5.1
63
- - - "<"
62
+ version: '5.2'
63
+ - - "~>"
64
64
  - !ruby/object:Gem::Version
65
- version: '5.0'
65
+ version: 5.2.0
66
66
  - !ruby/object:Gem::Dependency
67
- name: http
67
+ name: logger
68
68
  requirement: !ruby/object:Gem::Requirement
69
69
  requirements:
70
70
  - - "~>"
71
71
  - !ruby/object:Gem::Version
72
- version: '5.2'
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 5.2.0
72
+ version: '1.6'
76
73
  type: :runtime
77
74
  prerelease: false
78
75
  version_requirements: !ruby/object:Gem::Requirement
79
76
  requirements:
80
77
  - - "~>"
81
78
  - !ruby/object:Gem::Version
82
- version: '5.2'
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: 5.2.0
79
+ version: '1.6'
86
80
  - !ruby/object:Gem::Dependency
87
81
  name: retriable
88
82
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +125,7 @@ files:
131
125
  - lib/gitlab_releases.rb
132
126
  - lib/gitlab_releases/date_calculator.rb
133
127
  - lib/gitlab_releases/errors.rb
128
+ - lib/gitlab_releases/json_log_formatter.rb
134
129
  - lib/gitlab_releases/logger.rb
135
130
  - lib/gitlab_releases/patch_date_calculator.rb
136
131
  - lib/gitlab_releases/release_calculator.rb