Skip to content

Commit 16a35a4

Browse files
authored
Update renew.yml
1 parent 4814cb5 commit 16a35a4

File tree

1 file changed

+71
-1
lines changed

1 file changed

+71
-1
lines changed

.github/workflows/renew.yml

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches:
66
- main
77
schedule:
8-
- cron: '0 0 1 * *'
8+
- cron: '0 0 1 * *' # chạy đầu tháng
99
workflow_dispatch:
1010

1111
jobs:
@@ -16,6 +16,76 @@ jobs:
1616
- name: Checkout source
1717
uses: actions/checkout@v4
1818

19+
- name: Check and build Packages
20+
shell: bash
21+
run: |
22+
set -euo pipefail
23+
rm -f Packages Packages.gz scan.log tmp.log removed.list
24+
25+
echo "🔎 Pre-check: remove .deb that dpkg-deb cannot read"
26+
# dùng find -print0 để an toàn với tên có dấu cách
27+
while IFS= read -r -d '' f; do
28+
echo "Checking $f ..."
29+
if ! dpkg-deb -I "$f" >/dev/null 2>&1; then
30+
echo "❌ dpkg-deb failed: removing $f"
31+
rm -f -- "$f"
32+
else
33+
echo "✅ OK: $f"
34+
fi
35+
done < <(find . -maxdepth 1 -type f -name "*.deb" -print0)
36+
37+
echo "📦 Build Packages with iterative per-file checks (safe)"
38+
MAX_ROUNDS=10
39+
round=0
40+
41+
while true; do
42+
round=$((round+1))
43+
echo "Attempt #$round: running dpkg-scanpackages..."
44+
# thử build toàn bộ
45+
if dpkg-scanpackages -m . /dev/null > Packages 2> scan.log; then
46+
echo "✅ dpkg-scanpackages succeeded"
47+
break
48+
fi
49+
50+
echo "⚠️ dpkg-scanpackages failed on attempt #$round. Inspecting packages to find culprits..."
51+
# nếu vượt quá giới hạn vòng lặp -> in log và fail để debug
52+
if [ "$round" -gt "$MAX_ROUNDS" ]; then
53+
echo "❌ Reached max rounds ($MAX_ROUNDS). Dumping scan.log and failing."
54+
sed -n '1,200p' scan.log || true
55+
exit 1
56+
fi
57+
58+
# tìm từng .deb gây lỗi bằng cách thử dpkg-scanpackages trên từng file riêng
59+
# => sẽ catch chính xác file gây lỗi (với tên có space vẫn ok)
60+
removed_any=0
61+
while IFS= read -r -d '' debfile; do
62+
# chạy dpkg-scanpackages trên 1 file (stdout ignore). Nếu fail => xóa file
63+
if ! dpkg-scanpackages -m "$debfile" /dev/null > /dev/null 2> tmp.log; then
64+
echo "❌ Removing broken package: $debfile"
65+
rm -f -- "$debfile"
66+
echo "$debfile" >> removed.list
67+
removed_any=1
68+
fi
69+
done < <(find . -maxdepth 1 -type f -name "*.deb" -print0)
70+
71+
if [ "$removed_any" -eq 0 ]; then
72+
echo "❌ No broken package detected by per-file check, but dpkg-scanpackages still fails."
73+
echo "---- scan.log ----"
74+
sed -n '1,200p' scan.log || true
75+
echo "---- tmp.log (last per-file test) ----"
76+
sed -n '1,200p' tmp.log || true
77+
exit 1
78+
fi
79+
80+
echo "Removed packages listed in removed.list:"
81+
sed -n '1,200p' removed.list || true
82+
echo "Retrying dpkg-scanpackages..."
83+
done
84+
85+
# nén Packages cho apt
86+
gzip -c9 Packages > Packages.gz
87+
echo "✅ Packages.gz created"
88+
1989
- name: Upload GitHub Pages artifact
2090
uses: actions/upload-pages-artifact@v3
2191
with:

0 commit comments

Comments
 (0)