kettle-dev 2.5.24 → 2.5.25

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: 119fe7d1c6923ff7b6346227be82824749480eb1213c26ccaf1f98beee0abffa
4
- data.tar.gz: 073cc235f8e053b5026695bcdc6bbe868f535390ca43c6af21c36ce4bf7e40e2
3
+ metadata.gz: 56ce68001beed714f8b15c44336ffe111f1509dfffd9a7063b1bb50f0580fc08
4
+ data.tar.gz: 3088a81db9f6327c55fe9113f45be1768f734d2c8b05cfd0c5a55080450de63f
5
5
  SHA512:
6
- metadata.gz: 80fc5404d8bb8c63decd50c47b15fa25643c254c97f6d2b9ac85ac30b6b1f1363243e3c1596736d14025e5fd29bb8c82962cd0e57afb0971de056ef4f2fed0a8
7
- data.tar.gz: 0f0c44cbeabdc6071b567d27781e04371100f0af28dfe09e02c7b1810d76d088eabf23441345f8df90434ca2bd0f79bf7470abee0988e328d470dfae955fd923
6
+ metadata.gz: e9ad45713716d0583fc83e302ea574a67a7855757efc7abf9de24764abd5d66388056677a74a6fbf67a6d05894b4e7edb813c8e9919ddcdb61b03ed694bd70e2
7
+ data.tar.gz: 7aa96f4e87ddb6e6b0d41b19e43c56229cca35dbf470313b50f15c6a35124e4e171383c666766ad6a9a937bf3cc6d496df9be5dd71213647ebb2768937852b8f
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.5.25] - 2026-08-07
34
+
35
+ - TAG: [v2.5.25][2.5.25t]
36
+ - COVERAGE: 91.48% -- 5465/5974 lines in 47 files
37
+ - BRANCH COVERAGE: 75.95% -- 2059/2711 branches in 47 files
38
+ - 50.90% documented
39
+
40
+ ### Fixed
41
+
42
+ - Select the most recent GitHub Actions build when multiple runs exist for the same commit.
43
+
33
44
  ## [2.5.24] - 2026-08-07
34
45
 
35
46
  - TAG: [v2.5.24][2.5.24t]
@@ -3324,7 +3335,9 @@ Please file a bug if you notice a violation of semantic versioning.
3324
3335
  - Selecting will run the selected workflow via `act`
3325
3336
  - This may move to its own gem in the future.
3326
3337
 
3327
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.24...HEAD
3338
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.25...HEAD
3339
+ [2.5.25]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.24...v2.5.25
3340
+ [2.5.25t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.25
3328
3341
  [2.5.24]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.23...v2.5.24
3329
3342
  [2.5.24t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.5.24
3330
3343
  [2.5.23]: https://github.com/kettle-dev/kettle-dev/compare/v2.5.22...v2.5.23
data/README.md CHANGED
@@ -1007,7 +1007,7 @@ Thanks for RTFM. ☺️
1007
1007
  [📌gitmoji]: https://gitmoji.dev
1008
1008
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1009
1009
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1010
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.970-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1010
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.974-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1011
1011
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1012
1012
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1013
1013
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -106,14 +106,14 @@ module Kettle
106
106
  # Scope to the exact commit SHA when available to avoid picking up a previous run on the same branch.
107
107
  sha = head_sha || current_head_sha
108
108
  data = github_get_json(
109
- "https://api.github.com/repos/#{owner}/#{repo}/actions/workflows/#{workflow_file}/runs?branch=#{URI.encode_www_form_component(b)}&per_page=5",
109
+ "https://api.github.com/repos/#{owner}/#{repo}/actions/workflows/#{workflow_file}/runs?branch=#{URI.encode_www_form_component(b)}&per_page=100",
110
110
  token: token
111
111
  )
112
112
  return unless data
113
113
 
114
114
  runs = Array(data["workflow_runs"]) || []
115
- # Try to match by head_sha first; GitHub may return a cancelled duplicate
116
- # before the replacement run created by workflow concurrency.
115
+ # Match by head_sha first. There may be multiple builds for one commit;
116
+ # always select the most recent build rather than trusting API order.
117
117
  run = if sha
118
118
  match = preferred_head_run(runs.select { |r| r["head_sha"] == sha })
119
119
  match ||= latest_repository_workflow_run(owner: owner, repo: repo, workflow_file: workflow_file, branch: b, head_sha: sha, token: token)
@@ -150,11 +150,17 @@ module Kettle
150
150
  )
151
151
  end
152
152
 
153
- # Concurrency cancellation can leave an older run for the exact same
154
- # commit ahead of its replacement in GitHub's API response. Prefer the
155
- # replacement so a cancelled duplicate cannot mask a valid run.
153
+ # GitHub can return multiple builds for the same commit, including an
154
+ # older failed run before a later retry. Select by run recency so an old
155
+ # conclusion cannot mask the newest build. `updated_at` also matters for
156
+ # reruns, which retain the original run's creation timestamp.
156
157
  def preferred_head_run(runs)
157
- runs.find { |run| run["conclusion"] != "cancelled" } || runs.first
158
+ runs.max_by do |run|
159
+ created_at = run["created_at"].to_s
160
+ updated_at = run["updated_at"].to_s
161
+ effective_at = [created_at, updated_at].max
162
+ [effective_at, run["run_number"].to_i, run["run_attempt"].to_i, run["id"].to_i]
163
+ end
158
164
  end
159
165
 
160
166
  def github_get_json(url, token:)
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "2.5.24"
8
+ VERSION = "2.5.25"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.24
4
+ version: 2.5.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -402,10 +402,10 @@ licenses:
402
402
  - AGPL-3.0-only
403
403
  metadata:
404
404
  homepage_uri: https://kettle-dev.galtzo.com
405
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.24
406
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.24/CHANGELOG.md
405
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.5.25
406
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.5.25/CHANGELOG.md
407
407
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
408
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.24
408
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.5.25
409
409
  funding_uri: https://github.com/sponsors/pboling
410
410
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
411
411
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file