Skip to content

Commit bfde71e

Browse files
committed
(chore) support additional branches
1 parent 1c64cd7 commit bfde71e

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

.github/workflows/clone.yml

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,41 @@ name: GitHub Clone Count Update Everyday
22

33
on:
44
schedule:
5-
- cron: "0 0 * * *"
5+
- cron: 0 0 * * *
66
workflow_dispatch:
77

88
jobs:
99
build:
1010
runs-on: ubuntu-latest
1111
permissions:
12+
# Required to commit CLONE.md file to repository
13+
# Note: contents: write is the minimal permission needed for this workflow
14+
# trunk-ignore(checkov): contents: write is required to commit files to repository
1215
contents: write
1316

1417
steps:
1518
- uses: actions/checkout@v6
19+
with:
20+
ref: ${{ github.ref }}
21+
fetch-depth: 0
22+
token: ${{ secrets.SECRET_TOKEN }}
1623

1724
- name: gh login
1825
run: echo "${{ secrets.SECRET_TOKEN }}" | gh auth login --with-token
1926

2027
- name: parse latest clone count
28+
env:
29+
GITHUB_TOKEN: ${{ secrets.SECRET_TOKEN }}
2130
run: |
2231
set -euo pipefail
23-
if ! curl -f --user "${{ github.actor }}:${{ secrets.SECRET_TOKEN }}" \
32+
# SECRET_TOKEN is required because:
33+
# 1. The traffic/clones endpoint requires "Administration" (read) permissions
34+
# 2. GITHUB_TOKEN typically doesn't have access to traffic data
35+
# 3. A Personal Access Token (PAT) with repo scope is needed
36+
# Using environment variable to avoid exposing secret in process list
37+
# Note: Secret is passed via env var, not command line, for security
38+
# trunk-ignore(trufflehog): Secret properly handled via environment variable, not command line
39+
if ! curl -f --user "${{ github.actor }}:$GITHUB_TOKEN" \
2440
-H "Accept: application/vnd.github.v3+json" \
2541
"https://api.github.com/repos/${{ github.repository }}/traffic/clones" \
2642
> clone.json; then
@@ -110,12 +126,15 @@ jobs:
110126
json.dump(latest, fh, ensure_ascii=False, indent=4)
111127
EOF
112128
- name: Update gist with latest count
129+
env:
130+
GITHUB_TOKEN: ${{ secrets.SECRET_TOKEN }}
113131
run: |
114132
set -euo pipefail
133+
# Using environment variable to avoid exposing secret in process list
115134
content=$(sed -e 's/\\/\\\\/g' -e 's/\t/\\t/g' -e 's/\"/\\"/g' -e 's/\r//g' "clone.json" | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
116135
echo '{"description": "${{ github.repository }} clone statistics", "files": {"clone.json": {"content": "'"$content"'"}}}' > post_clone.json
117136
if ! curl -f -s -X PATCH \
118-
--user "${{ github.actor }}:${{ secrets.SECRET_TOKEN }}" \
137+
--user "${{ github.actor }}:$GITHUB_TOKEN" \
119138
-H "Content-Type: application/json" \
120139
-d @post_clone.json "https://api.github.com/gists/${{ steps.set_id.outputs.GIST }}" > /dev/null; then
121140
echo "Error: Failed to update gist"
@@ -139,5 +158,7 @@ jobs:
139158
- name: Push
140159
uses: ad-m/github-push-action@master
141160
with:
142-
github_token: ${{ secrets.GITHUB_TOKEN }}
161+
github_token: ${{ secrets.SECRET_TOKEN }}
162+
branch: ${{ github.ref }}
163+
force_with_lease: true
143164

0 commit comments

Comments
 (0)