summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-08-30 17:10:02 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-08-31 18:31:01 +0900
commit266393d333490fc5ab4055a48947a638673ed655 (patch)
treec5354f145f7ed799428189237d7d5f2e17cf55dc
parent5c7dfe85a1dc49334e2828791f0ade42eee662db (diff)
CI: Adjust time frame before the release
-rw-r--r--.github/workflows/bundled_gems.yml47
1 files changed, 24 insertions, 23 deletions
diff --git a/.github/workflows/bundled_gems.yml b/.github/workflows/bundled_gems.yml
index 6a39f670a9..0c3ed9b0d7 100644
--- a/.github/workflows/bundled_gems.yml
+++ b/.github/workflows/bundled_gems.yml
@@ -100,48 +100,49 @@ jobs:
gems: ${{ steps.diff.outputs.gems }}
if: ${{ steps.diff.outputs.update }}
- - name: Fetch more logs
- id: logs
- run: |
- file=gems/bundled_gems days=30
- { echo days=$days; echo file=$file; } >> $GITHUB_OUTPUT
- since=$(date --date=-$[days * 2 + 10]day +'%F')
- set -x
- git sparse-checkout set --no-cone /$file
- git fetch --shallow-since="$since" --no-tags origin ${GITHUB_REF}
-
- name: Development revision of bundled gems
run: |
#!ruby
- file = ENV["file"]
- days = ENV["days"].to_i
- today = Time.new("#{ENV['TODAY']}T00:00:00Z").to_i
- limit = today - days * 86400
+ file = "gems/bundled_gems"
+
+ SECONDS_IN_DAY = 86400
+ today = Time.new("#{ENV['TODAY']}Z")
+ if !(december = today.month == 12)
+ days = 30
+ elsif (days = 26 - today.day).positive?
+ days += 4
+ else
+ puts "::info:: just after released"
+ exit
+ end
- ok = true
+ since = "#{today.year-1}-12-26"
+ ref = ENV['GITHUB_REF']
+ puts "::group::\e[94mfetching \e[1m#{file}\e[22m since \e[1m#{since}\e[22m from \e[1m#{ref}\e[m"
+ system(*%W[git fetch --shallow-since=#{since} --no-tags origin #{ref}], exception: true)
+ puts "::endgroup::"
+
+ puts "\e[94mchecking development version bundled gems older than \e[1m#{days}\e[22m days\e[m"
+ limit = today.to_i - days * SECONDS_IN_DAY
+ old = 0
IO.popen(%W"git blame --line-porcelain -- #{file}") do |blame|
while head = blame.gets("\n\t") and s = blame.gets
next unless (gem = s.split(/\s+|#.*/)).size > 3
time = head[/^committer-time \K\d+/].to_i
next if (d = limit - time) <= 0
- d /= 86400
+ d /= SECONDS_IN_DAY
line = head[/\A\h+ \d+ \K\d+/].to_i
- level = if d < days; 'warning'; else ok = false; 'error'; end
+ level = if d < days; 'warning'; else old += 1; 'error'; end
d += days
puts "::#{level} file=#{file},line=#{line},title=Older than #{d} days::#{gem[0]} #{gem[3]}"
end
end
- # exit ok
+ abort "::error title=Too long-standing gems::The release comes soon." if december and old.nonzero?
shell: ruby {0}
env:
file: ${{ steps.logs.outputs.file }}
days: ${{ steps.logs.outputs.days }}
- - name: Restore sparse checkout
- run: |
- git sparse-checkout disable
- if: always()
-
- name: Install libraries
uses: ./.github/actions/setup/ubuntu
if: ${{ steps.diff.outputs.gems }}