Fetch GitHub Traffic Data - taylanu (2024.03.25) #36
This file contains 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: Fetch GitHub Traffic Data - taylanu (2024.03.25) | |
on: | |
schedule: | |
# - cron: '0 0 * * *' # Runs every day at midnight UTC | |
- cron: "0 0 * * 0" # Runs every Sunday at midnight UTC | |
push: | |
branches: | |
- main | |
jobs: | |
fetch-traffic: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
repo_name: [ | |
"taylauna/ArboretumID", | |
# "aws-samples/amazon-q-in-connect-s3-integration-template", | |
] # Add more repositories as needed | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Fetch traffic data for each Repo | |
id: traffic | |
run: | | |
AUTH_HEADER="Authorization: token ${{ secrets.PAT }}" | |
for repo in ${{ matrix.repo_name }}; do | |
mkdir -p "$repo" | |
cd "$repo" | |
for i in {0..13}; do | |
DATE=$(date -d "$i days ago" +%Y-%m-%d) | |
API_URL_CLONES="https://api.github.com/repos/$repo/traffic/clones?per=day×tamp=${DATE}" | |
API_URL_TOP_PATHS="https://api.github.com/repos/$repo/traffic/popular/paths?per=day×tamp=${DATE}" | |
API_URL_TOP_REFERRERS="https://api.github.com/repos/$repo/traffic/popular/referrers?per=day×tamp=${DATE}" | |
API_URL_VIEWS="https://api.github.com/repos/$repo/traffic/views?per=day×tamp=${DATE}" | |
curl -sSL -H "${AUTH_HEADER}" "${API_URL_CLONES}" > "clones_${DATE}.json" | |
curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_PATHS}" > "top_paths_${DATE}.json" | |
curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_REFERRERS}" > "top_referrers_${DATE}.json" | |
curl -sSL -H "${AUTH_HEADER}" "${API_URL_VIEWS}" > "views_${DATE}.json" | |
done | |
cd .. | |
done | |
- name: Debug - Check contents of current directory | |
run: | | |
ls -lR | |
- name: GIT commit and push docs | |
if: success() # Only run if previous steps are successful | |
env: | |
CI_COMMIT_MESSAGE: "Add Traffic Data for ${{ matrix.repo_name }} on $(date +%Y-%m-%d)" | |
CI_COMMIT_AUTHOR: taylanu | |
run: | | |
git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}" | |
git config --global user.email "${{ env.CI_COMMIT_AUTHOR }}@users.noreply.github.com" | |
git config --global advice.addIgnoredFile false # Ensure untracked files are added | |
# Pull Latest Remote | |
git pull origin main | |
# Check if there are changes | |
if git status --porcelain | grep .; then | |
git add . | |
git commit -m "${{ env.CI_COMMIT_MESSAGE }}" | |
git push origin main # push to remote | |
else | |
echo "No changes to commit." | |
fi | |
# name: Fetch GitHub Traffic Data - taylanu (Self + Repo) | |
# on: | |
# schedule: | |
# # - cron: '0 0 * * *' # Runs every day at midnight UTC | |
# - cron: '0 0 * * 0' # Runs every Sunday at midnight UTC | |
# push: | |
# branches: | |
# - main | |
# jobs: | |
# fetch-traffic: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Checkout repository | |
# uses: actions/checkout@v4 | |
# - name: Check contents of current directory | |
# run: ls | |
# - name: Fetch traffic data | |
# id: traffic | |
# run: | | |
# API_URL_CLONES="https://api.github.com/repos/${{ github.repository }}/traffic/clones" | |
# API_URL_TOP_PATHS="https://api.github.com/repos/${{ github.repository }}/traffic/popular/paths" | |
# API_URL_TOP_REFERRERS="https://api.github.com/repos/${{ github.repository }}/traffic/popular/referrers" | |
# API_URL_VIEWS="https://api.github.com/repos/${{ github.repository }}/traffic/views" | |
# AUTH_HEADER="Authorization: token ${{ secrets.PAT }}" | |
# mkdir -p traffic_data | |
# # curl -sSL -H "${AUTH_HEADER}" "${API_URL_CLONES}" > traffic_data/clones.json | |
# # curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_PATHS}" > traffic_data/top_paths.json | |
# # curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_REFERRERS}" > traffic_data/top_referrers.json | |
# # curl -sSL -H "${AUTH_HEADER}" "${API_URL_VIEWS}" > traffic_data/views.json | |
# # For the past 14 days, write a file with Date Timestamp | |
# for i in {0..13}; do | |
# DATE=$(date -d "$i days ago" +%Y-%m-%d) | |
# curl -sSL -H "${AUTH_HEADER}" "${API_URL_CLONES}?per=day×tamp=${DATE}" > "traffic_data/clones_${DATE}.json" | |
# curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_PATHS}?per=day×tamp=${DATE}" > "traffic_data/top_paths_${DATE}.json" | |
# curl -sSL -H "${AUTH_HEADER}" "${API_URL_TOP_REFERRERS}?per=day×tamp=${DATE}" > "traffic_data/top_referrers_${DATE}.json" | |
# curl -sSL -H "${AUTH_HEADER}" "${API_URL_VIEWS}?per=day×tamp=${DATE}" > "traffic_data/views_${DATE}.json" | |
# done | |
# - name: Debug - Check contents of traffic_data directory | |
# run: | | |
# ls | |
# ls -l traffic_data | |
# # cat traffic_data/*.json # Very Verbose. Keep commented unless debugging. | |
# # Github Commit Changed Files | |
# # https://joht.github.io/johtizen/build/2022/01/20/github-actions-push-into-repository.html#git-commands | |
# - name: GIT commit and push docs | |
# env: | |
# CI_COMMIT_MESSAGE: "Add Traffic Data on $(date +%Y-%m-%d)" | |
# CI_COMMIT_AUTHOR: taylanu | |
# run: | | |
# git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}" | |
# git config --global user.email "${{ env.CI_COMMIT_AUTHOR }}@users.noreply.github.com" | |
# # Check if there are changes | |
# if git diff --quiet; then | |
# echo "No changes to commit." | |
# else | |
# git add traffic_data | |
# git commit -m "${{ env.CI_COMMIT_MESSAGE }}" | |
# git push | |
# fi | |
# - name: Commit and push changes | |
# uses: ad-m/[email protected] | |
# with: | |
# # Valid Inputs: ['github_token', 'github_url', 'ssh', 'repository', 'branch', 'force', 'force_with_lease', 'atomic', 'tags', 'directory'] | |
# github_token: ${{ secrets.PAT }} | |
# repository: ${{ github.repository }} | |
# branch: main | |
# directory: traffic_data |