diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..82c3d4c --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,93 @@ +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