Use Visitor Counter Logic #48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Use Visitor Counter Logic | |
on: | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: '0 0 * * *' # Runs daily at midnight | |
workflow_dispatch: # Allows manual triggering | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
update-visitor-count: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Shallow clone visitor counter logic | |
run: git clone --depth=1 https://github.com/brown9804/github-visitor-counter.git | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- name: Install dependencies for github-visitor-counter | |
run: | | |
cd github-visitor-counter | |
npm ci | |
- name: Run visitor counter logic (updates markdown badges and metrics.json) | |
run: node github-visitor-counter/update_repo_views_counter.js | |
env: | |
TRAFFIC_TOKEN: ${{ secrets.TRAFFIC_TOKEN }} | |
REPO: ${{ github.repository }} | |
- name: Move generated metrics.json to root | |
run: mv github-visitor-counter/metrics.json . | |
- name: List files for debugging | |
run: | | |
ls -l | |
ls -l github-visitor-counter | |
- name: Clean up visitor counter logic | |
run: rm -rf github-visitor-counter | |
- name: Configure Git author | |
run: | | |
git config --global user.name "github-actions[bot]" | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
# Commit and push logic for PR events | |
- name: Commit and push changes (PR) | |
if: github.event_name == 'pull_request' | |
env: | |
TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git fetch origin | |
git checkout ${{ github.head_ref }} | |
git add "*.md" metrics.json | |
git commit -m "Update visitor count" || echo "No changes to commit" | |
git remote set-url origin https://x-access-token:${TOKEN}@github.com/${{ github.repository }} | |
git pull --rebase origin ${{ github.head_ref }} || echo "No rebase needed" | |
git push origin HEAD:${{ github.head_ref }} | |
# Commit and push logic for non-PR events (schedule, workflow_dispatch) | |
- name: Commit and push changes (non-PR) | |
if: github.event_name != 'pull_request' | |
env: | |
TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git fetch origin | |
git checkout ${{ github.ref_name }} || git checkout -b ${{ github.ref_name }} origin/${{ github.ref_name }} | |
git add "*.md" metrics.json | |
git commit -m "Update visitor count" || echo "No changes to commit" | |
git remote set-url origin https://x-access-token:${TOKEN}@github.com/${{ github.repository }} | |
git pull --rebase origin ${{ github.ref_name }} || echo "No rebase needed" | |
git push origin HEAD:${{ github.ref_name }} | |
- name: Create Pull Request (non-PR) | |
if: github.event_name != 'pull_request' | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
branch: update-visitor-count | |
title: "Update visitor count" | |
body: "Automated update of visitor count" | |
base: main |