Skip to content

Commit a3b49c4

Browse files
authored
Merge pull request #40 from corbado/weekly-clone-stats
Weekly clone stats
2 parents 22cbd0b + e832012 commit a3b49c4

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Weekly Clone Stats Email
2+
3+
on:
4+
schedule:
5+
- cron: '0 8 * * 1' # Every Monday at 08:00 UTC
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
fetch-clone-stats:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Check out code
15+
uses: actions/checkout@v3
16+
17+
- name: Fetch Clone Stats
18+
env:
19+
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
20+
run: |
21+
REPO="${{ github.repository }}"
22+
curl -L \
23+
-H "Accept: application/vnd.github+json" \
24+
-H "Authorization: Bearer $GITHUB_TOKEN" \
25+
-H "X-GitHub-Api-Version: 2022-11-28" \
26+
https://api.github.com/repos/$REPO/traffic/clones > clone_stats.json
27+
28+
- name: Upload Clone Stats
29+
uses: actions/upload-artifact@v4
30+
with:
31+
name: clone-stats
32+
path: clone_stats.json
33+
34+
downloading-and-sending-stats:
35+
needs: fetch-clone-stats
36+
runs-on: ubuntu-latest
37+
steps:
38+
- name: Check out code
39+
uses: actions/checkout@v3
40+
41+
- name: Download Clone Stats
42+
uses: actions/download-artifact@v4
43+
with:
44+
name: clone-stats
45+
path: .
46+
47+
- name: Parse clone stats
48+
id: parse
49+
run: |
50+
COUNT=$(jq '.count' clone_stats.json)
51+
UNIQUES=$(jq '.uniques' clone_stats.json)
52+
echo "count=$COUNT" >> "$GITHUB_OUTPUT"
53+
echo "uniques=$UNIQUES" >> "$GITHUB_OUTPUT"
54+
55+
- name: Send custom email
56+
run: |
57+
ENCODED_AUTH=${{ secrets.SENDGRID_KEY }}
58+
FROM=${{ vars.EMAIL_FROM }}
59+
TO=${{ vars.EMAIL_TO }}
60+
COUNT=${{ steps.parse.outputs.count }}
61+
REPOSITORY=${{ github.repository }}
62+
UNIQUES=${{ steps.parse.outputs.uniques }}
63+
64+
curl -X POST https://api.sendgrid.com/v3/mail/send \
65+
-H "Authorization: Bearer $ENCODED_AUTH" \
66+
-H "Content-Type: application/json" \
67+
-d "{
68+
\"personalizations\": [{
69+
\"to\": [{\"email\": \"${TO}\"}],
70+
\"subject\": \"Weekly GitHub Clone Stats for ${REPOSITORY}\"
71+
}],
72+
\"from\": {\"email\": \"${FROM}\"},
73+
\"content\": [{
74+
\"type\": \"text/plain\",
75+
\"value\": \"Hi there! Here are the clone stats for ${REPOSITORY} this week:\n\n🔁 Total Clones: ${COUNT}\n👤 Unique Cloners: ${UNIQUES}\"
76+
}]
77+
}"

0 commit comments

Comments
 (0)