name: Deploy Website on: push: branches: [master] schedule: - cron: "0 0 * * *" permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: false jobs: deploy: if: github.repository == 'vinta/awesome-python' runs-on: ubuntu-latest environment: name: github-pages url: https://awesome-python.com/ steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Install dependencies run: uv sync --group build - name: Run tests if: github.event_name == 'schedule' run: make test - name: Get date id: date run: echo "today=$(date -u +%Y-%m-%d)" >> "$GITHUB_OUTPUT" - name: Restore star data cache id: cache-stars uses: actions/cache/restore@v4 with: path: website/data/github_stars.json key: github-stars-${{ steps.date.outputs.today }} restore-keys: github-stars- - name: Fetch GitHub stars id: fetch-stars continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: make fetch_github_stars - name: Save star data cache if: steps.fetch-stars.outcome == 'success' uses: actions/cache/save@v4 with: path: website/data/github_stars.json key: github-stars-${{ steps.date.outputs.today }} - name: Verify star data exists run: | if [ ! -f website/data/github_stars.json ]; then echo "::error::github_stars.json not found. No cache and fetch failed or was skipped." exit 1 fi python -m json.tool website/data/github_stars.json > /dev/null - name: Build website run: make build - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: path: website/output/ - name: Deploy to GitHub Pages uses: actions/deploy-pages@v4