Skip to content

Commit 01a57bd

Browse files
committed
CI: Warn longstanding development revision of bundled gems
1 parent d94e0a7 commit 01a57bd

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

.github/workflows/bundled_gems.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,48 @@ jobs:
100100
gems: ${{ steps.diff.outputs.gems }}
101101
if: ${{ steps.diff.outputs.update }}
102102

103+
- name: Fetch more logs
104+
id: logs
105+
run: |
106+
file=gems/bundled_gems days=30
107+
{ echo days=$days; echo file=$file; } >> $GITHUB_OUTPUT
108+
since=$(date --date=-$[days * 2 + 10]day +'%F')
109+
set -x
110+
git sparse-checkout set --no-cone /$file
111+
git fetch --shallow-since="$since" --no-tags origin ${GITHUB_REF}
112+
113+
- name: Development revision of bundled gems
114+
run: |
115+
#!ruby
116+
file = ENV["file"]
117+
days = ENV["days"].to_i
118+
today = Time.new("#{ENV['TODAY']}T00:00:00Z").to_i
119+
limit = today - days * 86400
120+
121+
ok = true
122+
IO.popen(%W"git blame --line-porcelain -- #{file}") do |blame|
123+
while head = blame.gets("\n\t") and s = blame.gets
124+
next unless (gem = s.split(/\s+|#.*/)).size > 3
125+
time = head[/^committer-time \K\d+/].to_i
126+
next if (d = limit - time) <= 0
127+
d /= 86400
128+
line = head[/\A\h+ \d+ \K\d+/].to_i
129+
level = if d < days; 'warning'; else ok = false; 'error'; end
130+
d += days
131+
puts "::#{level} file=#{file},line=#{line},title=Older than #{d} days::#{gem[0]} #{gem[3]}"
132+
end
133+
end
134+
# exit ok
135+
shell: ruby {0}
136+
env:
137+
file: ${{ steps.logs.outputs.file }}
138+
days: ${{ steps.logs.outputs.days }}
139+
140+
- name: Restore sparse checkout
141+
run: |
142+
git sparse-checkout disable
143+
if: always()
144+
103145
- name: Install libraries
104146
uses: ./.github/actions/setup/ubuntu
105147
if: ${{ steps.diff.outputs.gems }}

0 commit comments

Comments
 (0)