Skip to content

Commit abaf4a8

Browse files
committed
[CI] Add char escapes in README accuracy updates and make push more robust
1 parent 246cb69 commit abaf4a8

1 file changed

Lines changed: 22 additions & 9 deletions

File tree

.github/workflows/ci.yml

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -303,21 +303,28 @@ jobs:
303303
- name: Update README (main only)
304304
if: github.ref == 'refs/heads/main'
305305
run: |
306-
ACCURACY=$(cat accuracy_value.txt | sed 's/%//g')
306+
ACCURACY=$(sed 's/%//g' accuracy_value.txt)
307307
DATE=$(date '+%Y-%m-%d')
308-
sed -i "s/<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->/<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->/" README.md
308+
UPDATE_TEXT="<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->"
309+
ESCAPED_UPDATE_TEXT=$(printf '%s\n' "$UPDATE_TEXT" | sed 's/[&|\\]/\\&/g')
310+
sed -i "s|<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->|${ESCAPED_UPDATE_TEXT}|" README.md
309311
310312
- name: Commit and push changes (main only)
311313
if: github.ref == 'refs/heads/main'
312314
run: |
313315
git config --global user.name "GitHub Actions"
314316
git config --global user.email "actions@github.com"
315317
git add README.md
316-
if git diff-index --quiet HEAD --; then
318+
if git diff --cached --quiet; then
317319
echo "No changes to commit"
318320
else
319321
git commit -m "[CI] Update accuracy: $(cat accuracy_value.txt)"
320-
git push origin main
322+
for attempt in 1 2 3 4 5; do
323+
git pull --rebase origin main && git push origin HEAD:main && break
324+
git rebase --abort || true
325+
[ "$attempt" -eq 5 ] && { echo "Failed to push README update after ${attempt} attempts"; exit 1; }
326+
sleep 5
327+
done
321328
fi
322329
323330
download-dataset:
@@ -509,11 +516,12 @@ jobs:
509516
cat accuracy_${{ matrix.model }}.txt
510517
exit 1
511518
fi
512-
519+
513520
UPDATE_TEXT="<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->Accuracy: Top-1: ${TOP1_ACC}% | Top-5: ${TOP5_ACC}% (updated: ${DATE})<!--END_ACCURACY_${{ matrix.model }}-->"
514-
521+
ESCAPED_UPDATE_TEXT=$(printf '%s\n' "$UPDATE_TEXT" | sed 's/[&|\\]/\\&/g')
522+
515523
if grep -q "<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->" README.md; then
516-
sed -i "s|<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->.*<!--END_ACCURACY_${{ matrix.model }}-->|${UPDATE_TEXT}|" README.md
524+
sed -i "s|<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->.*<!--END_ACCURACY_${{ matrix.model }}-->|${ESCAPED_UPDATE_TEXT}|" README.md
517525
else
518526
echo "Ошибка: Плейсхолдер <!--ACCURACY_${{ matrix.model }}_PLACEHOLDER--> не найден в README.md"
519527
echo "Содержимое README.md:"
@@ -527,9 +535,14 @@ jobs:
527535
git config --global user.name "GitHub Actions"
528536
git config --global user.email "actions@github.com"
529537
git add README.md
530-
if git diff-index --quiet HEAD --; then
538+
if git diff --cached --quiet; then
531539
echo "No changes to commit"
532540
else
533541
git commit -m "[CI] Update accuracy for ${{ matrix.model }}: $(cat accuracy_value_${{ matrix.model }}.txt)"
534-
git push origin main
542+
for attempt in 1 2 3 4 5; do
543+
git pull --rebase origin main && git push origin HEAD:main && break
544+
git rebase --abort || true
545+
[ "$attempt" -eq 5 ] && { echo "Failed to push README update after ${attempt} attempts"; exit 1; }
546+
sleep 5
547+
done
535548
fi

0 commit comments

Comments
 (0)