|
| 1 | +name: Leaderboard Scheduler |
| 2 | + |
| 3 | +on: |
| 4 | + schedule: |
| 5 | + - cron: "0 17 * * *" |
| 6 | + workflow_dispatch: |
| 7 | + |
| 8 | +permissions: |
| 9 | + contents: read |
| 10 | + |
| 11 | +concurrency: |
| 12 | + group: leaderboard-scheduler |
| 13 | + cancel-in-progress: false |
| 14 | + |
| 15 | +jobs: |
| 16 | + calculate-next-country: |
| 17 | + name: Calculate next country leaderboard |
| 18 | + runs-on: ubuntu-latest |
| 19 | + timeout-minutes: 30 |
| 20 | + env: |
| 21 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN_DEVIMPACT }} |
| 22 | + DATABASE_URL: ${{ secrets.DATABASE_URL }} |
| 23 | + LEADERBOARD_SOURCE_URL_TEMPLATE: ${{ vars.LEADERBOARD_SOURCE_URL_TEMPLATE || 'https://raw.githubusercontent.com/ashkulz/committers.top/gh-pages/_data/locations/{country}.yml' }} |
| 24 | + GITHUB_REPO_COUNT: ${{ vars.GITHUB_REPO_COUNT || '50' }} |
| 25 | + GITHUB_PR_COUNT: ${{ vars.GITHUB_PR_COUNT || '300' }} |
| 26 | + GITHUB_ISSUE_COUNT: ${{ vars.GITHUB_ISSUE_COUNT || '100' }} |
| 27 | + GITHUB_DISCUSSION_COUNT: ${{ vars.GITHUB_DISCUSSION_COUNT || '50' }} |
| 28 | + REDIS_URL: ${{ secrets.REDIS_URL }} |
| 29 | + REDIS_ENABLED: ${{ vars.REDIS_ENABLED || 'false' }} |
| 30 | + REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }} |
| 31 | + REDIS_CACHE_NAMESPACE: ${{ vars.REDIS_CACHE_NAMESPACE || 'devimpact:v1' }} |
| 32 | + REDIS_CACHE_TTL_SECONDS: ${{ vars.REDIS_CACHE_TTL_SECONDS || '604800' }} |
| 33 | + REDIS_CONNECT_TIMEOUT_MS: ${{ vars.REDIS_CONNECT_TIMEOUT_MS || '1500' }} |
| 34 | + LEADERBOARD_SEED_LIMIT: ${{ vars.LEADERBOARD_SEED_LIMIT || '256' }} |
| 35 | + LEADERBOARD_REFRESH_LIMIT: ${{ vars.LEADERBOARD_REFRESH_LIMIT || '500' }} |
| 36 | + LEADERBOARD_USER_STALE_DAYS: ${{ vars.LEADERBOARD_USER_STALE_DAYS || '30' }} |
| 37 | + GITHUB_USER_STALE_DAYS: ${{ vars.GITHUB_USER_STALE_DAYS || '14' }} |
| 38 | + |
| 39 | + steps: |
| 40 | + - name: Checkout |
| 41 | + uses: actions/checkout@v4 |
| 42 | + |
| 43 | + - name: Setup pnpm |
| 44 | + uses: pnpm/action-setup@v4 |
| 45 | + with: |
| 46 | + version: 10.29.2 |
| 47 | + run_install: false |
| 48 | + |
| 49 | + - name: Setup Node.js |
| 50 | + uses: actions/setup-node@v4 |
| 51 | + with: |
| 52 | + node-version: 24.x |
| 53 | + cache: pnpm |
| 54 | + |
| 55 | + - name: Install dependencies |
| 56 | + run: pnpm install --frozen-lockfile |
| 57 | + |
| 58 | + - name: Calculate next country |
| 59 | + run: pnpm leaderboard:calculate |
0 commit comments