name: Deploy GitHub Pages # Deploy dashboard to GitHub Pages on: push: branches: - main paths: - 'docs/**' - '.github/workflows/deploy-pages.yml' schedule: - cron: '0 */6 * * *' # Every 6 hours workflow_dispatch: # Manual trigger # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow only one concurrent deployment concurrency: group: "pages" cancel-in-progress: false jobs: generate-data: runs-on: ubuntu-latest name: Generate dashboard data steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Dependencies run: npm ci - name: Generate Dashboard Data env: GITHUB_TOKEN: ${{ secrets.GH_PROJECT_TOKEN || secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_PROJECT_NUMBER: ${{ vars.GITHUB_PROJECT_NUMBER || '1' }} run: | npx tsx scripts/generate-dashboard-data.ts - name: Upload Dashboard Data uses: actions/upload-artifact@v4 with: name: dashboard-data path: docs/dashboard-data.json deploy: needs: generate-data runs-on: ubuntu-latest name: Deploy to GitHub Pages environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Checkout uses: actions/checkout@v4 - name: Download Dashboard Data uses: actions/download-artifact@v4 with: name: dashboard-data path: docs/ - name: Setup Pages uses: actions/configure-pages@v4 - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: 'docs' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 - name: Summary run: | echo "### 🚀 Dashboard Deployed" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "✓ Dashboard successfully deployed to GitHub Pages" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**URL**: ${{ steps.deployment.outputs.page_url }}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "_Dashboard data will auto-update every 6 hours_" >> $GITHUB_STEP_SUMMARY