Contributor Updates #22
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: Contributor Updates | |
on: | |
schedule: | |
- cron: '30 22 * * *' # Daily at 5:30 PM EST | |
- cron: '0 22 * * 5' # Weekly on Friday at 5:00 PM EST | |
- cron: '0 22 4 * *' # Monthly on 4th at 5:00 PM EST | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
update-contributors: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
cache: 'npm' | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Install Node dependencies | |
run: npm ci | |
- name: Set date variables | |
run: | | |
echo "TIMESTAMP=$(date +'%Y_%m_%d')" >> $GITHUB_ENV | |
echo "IS_MONTH_START=$(date +'%d')" >> $GITHUB_ENV | |
echo "IS_FRIDAY=$(date +'%u')" >> $GITHUB_ENV | |
- name: Fetch daily data | |
if: github.event.schedule != '0 19 * * 5' && github.event.schedule != '0 19 4 * *' | |
env: | |
GH_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
run: | | |
# Create directories | |
mkdir -p data/daily data/daily/history | |
# Fetch current data with timestamp | |
bash scripts/fetch_github.sh ai16z eliza --type prs --days 1 | tee data/daily/prs.json data/daily/history/prs_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type issues --days 1 | tee data/daily/issues.json data/daily/history/issues_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type commits --days 1 | tee data/daily/commits.json data/daily/history/commits_${TIMESTAMP}.json | |
- name: Fetch weekly data | |
if: github.event.schedule == '0 19 * * 5' | |
env: | |
GH_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
run: | | |
# Create directories | |
mkdir -p data/weekly data/weekly/history | |
# Fetch current data with timestamp | |
bash scripts/fetch_github.sh ai16z eliza --type prs --days 7 | tee data/weekly/prs.json data/weekly/history/prs_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type issues --days 7 | tee data/weekly/issues.json data/weekly/history/issues_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type commits --days 7 | tee data/weekly/commits.json data/weekly/history/commits_${TIMESTAMP}.json | |
- name: Fetch monthly data | |
if: github.event.schedule == '0 19 4 * *' | |
env: | |
GH_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
run: | | |
# Create directories | |
mkdir -p data/monthly data/monthly/history | |
# Fetch current data with timestamp | |
bash scripts/fetch_github.sh ai16z eliza --type prs --days 30 | tee data/monthly/prs.json data/monthly/history/prs_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type issues --days 30 | tee data/monthly/issues.json data/monthly/history/issues_${TIMESTAMP}.json | |
bash scripts/fetch_github.sh ai16z eliza --type commits --days 30 | tee data/monthly/commits.json data/monthly/history/commits_${TIMESTAMP}.json | |
- name: Process daily data | |
if: github.event.schedule != '0 19 * * 5' && github.event.schedule != '0 19 4 * *' | |
env: | |
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
run: | | |
[ -f data/daily/contributors.json ] && mv data/daily/contributors.json data/daily/history/contributors_${TIMESTAMP}.json || true | |
[ -f data/daily/summary.json ] && mv data/daily/summary.json data/daily/history/summary_${TIMESTAMP}.json || true | |
[ -f data/daily/summary.md ] && mv data/daily/summary.md data/daily/history/summary_${TIMESTAMP}.md || true | |
python scripts/combine.py -p data/daily/prs.json -i data/daily/issues.json -c data/daily/commits.json -o data/daily/combined.json | |
python scripts/calculate_scores.py data/daily/combined.json data/daily/scored.json | |
python scripts/summarize.py data/daily/scored.json data/daily/contributors.json --model openai | |
python scripts/summarize_daily.py data/daily/contributors.json -t json data/daily/summary.json --model openai | |
python scripts/summarize_daily.py data/daily/contributors.json -t md data/daily/summary.md --model openai | |
- name: Process weekly data | |
if: github.event.schedule == '0 19 * * 5' | |
env: | |
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
run: | | |
[ -f data/weekly/contributors.json ] && mv data/weekly/contributors.json data/weekly/history/contributors_${TIMESTAMP}.json || true | |
python scripts/combine.py -p data/weekly/prs.json -i data/weekly/issues.json -c data/weekly/commits.json -o data/weekly/combined.json | |
python scripts/calculate_scores.py data/weekly/combined.json data/weekly/scored.json | |
python scripts/summarize.py data/weekly/scored.json data/weekly/contributors.json --model openai | |
- name: Process monthly data | |
if: github.event.schedule == '0 19 4 * *' | |
env: | |
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
run: | | |
[ -f data/monthly/contributors.json ] && mv data/monthly/contributors.json data/monthly/history/contributors_${TIMESTAMP}.json || true | |
python scripts/combine.py -p data/monthly/prs.json -i data/monthly/issues.json -c data/monthly/commits.json -o data/monthly/combined.json | |
python scripts/calculate_scores.py data/monthly/combined.json data/monthly/scored.json | |
python scripts/summarize.py data/monthly/scored.json data/monthly/contributors.json --model openai | |
- name: Build and generate site | |
run: | | |
npm run build | |
npm run generate | |
- name: Commit and push if changed | |
run: | | |
git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
git config --local user.name "github-actions[bot]" | |
git add data/ profiles/ data/reports/ issues_prs/prs_with_files.json | |
git diff --staged --quiet || (git commit -m "Update contributor data and reports [skip ci]" && git push) | |
env: | |
GITHUB_TOKEN: ${{ github.token }} |