-
Notifications
You must be signed in to change notification settings - Fork 0
119 lines (100 loc) · 4.09 KB
/
commit.yml
File metadata and controls
119 lines (100 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
name: sentinel-v1
on:
schedule:
- cron: "*/7 * * * *"
push:
branches: [main, master]
workflow_dispatch:
jobs:
update_repository:
runs-on: ubuntu-latest
permissions:
contents: write
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Update repository data
run: |
# Create timestamp variables
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
RUN_NUMBER=${{ github.run_number }}
RUN_ATTEMPT=${{ github.run_attempt }}
# === FILE 1: Update single rotating metrics file (always changes) ===
mkdir -p metrics
cat > metrics/current.json << EOF
{
"timestamp": "$TIMESTAMP",
"run_number": $RUN_NUMBER,
"run_attempt": $RUN_ATTEMPT,
"random": $((RANDOM % 10000)),
"nano": $(date +%s%N)
}
EOF
# === FILE 2: Update README badge section (always changes) ===
if [ -f "README.md" ]; then
# Remove old timestamp line
sed -i '/<!-- TIMESTAMP -->/d' README.md 2>/dev/null || true
# Insert new timestamp with unique marker
sed -i '1s/^/<!-- TIMESTAMP -->\n/' README.md 2>/dev/null || echo "<!-- TIMESTAMP -->" > README.md
fi
# === FILE 3: Update single activity log (append + rotate) ===
mkdir -p .github/logs
echo "$TIMESTAMP,$RUN_NUMBER,$RUN_ATTEMPT,$RANDOM" >> .github/logs/current.csv
# Keep only last 100 lines to prevent growth
tail -n 100 .github/logs/current.csv > .github/logs/current.csv.tmp
mv .github/logs/current.csv.tmp .github/logs/current.csv
# === FILE 4: Update counter file (always increments) ===
mkdir -p .github/counter
if [ -f ".github/counter/run-counter.txt" ]; then
COUNT=$(cat .github/counter/run-counter.txt)
echo $((COUNT + 1)) > .github/counter/run-counter.txt
else
echo "1" > .github/counter/run-counter.txt
fi
# === FILE 5: Update timestamp in LAST_UPDATED ===
echo "$TIMESTAMP - Run #$RUN_NUMBER (Attempt $RUN_ATTEMPT)" > LAST_UPDATED
# === FILE 6: Update CHANGELOG_AUTO.md (single entry) ===
# Keep only last 10 entries
if [ -f "CHANGELOG_AUTO.md" ]; then
head -n 20 CHANGELOG_AUTO.md > CHANGELOG_AUTO.md.tmp 2>/dev/null || true
mv CHANGELOG_AUTO.md.tmp CHANGELOG_AUTO.md 2>/dev/null || true
fi
echo "- $TIMESTAMP: Run #$RUN_NUMBER" >> CHANGELOG_AUTO.md
# === FILE 7: Update random seed file ===
echo "RANDOM_SEED=$RANDOM-$RANDOM-$RANDOM" > .github/random.txt
# === FILE 8: Update status file ===
cat > .github/status.json << EOF
{
"last_run": "$TIMESTAMP",
"run_number": $RUN_NUMBER,
"attempt": $RUN_ATTEMPT,
"healthy": true
}
EOF
- name: Create and push commit
run: |
# Configure Git
git config --local user.email "[email protected]"
git config --local user.name "zuck30"
# Add all changes (all tracked files)
git add -A
# This will ALWAYS have changes because we update existing files
RUN_NUMBER=${{ github.run_number }}
# Create commit message
COMMIT_MSG="chore: auto-update #$RUN_NUMBER [$(date +%H:%M)]"
# Commit
git commit -m "$COMMIT_MSG"
# Push with retry
MAX_RETRIES=3
RETRY=0
until [ $RETRY -ge $MAX_RETRIES ]
do
git pull --rebase origin HEAD && git push origin HEAD && break
RETRY=$((RETRY+1))
echo "Push failed, retry $RETRY/$MAX_RETRIES in 5 seconds..."
sleep 5
done