fix: update scoped CSS reference and rename Collector to Triage CLI #98
This file contains hidden or 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: Sync Data Cache | |
| on: | |
| schedule: | |
| - cron: '0 * * * *' # Every hour | |
| push: | |
| branches: [docs-dashboard] | |
| workflow_dispatch: | |
| inputs: | |
| source: | |
| description: 'Data source to sync' | |
| type: choice | |
| options: | |
| - all | |
| - github | |
| - nuget | |
| default: all | |
| repo: | |
| description: 'Repository to sync (blank for all)' | |
| type: choice | |
| options: | |
| - all | |
| - mono/SkiaSharp | |
| - mono/SkiaSharp.Extended | |
| default: all | |
| reset: | |
| description: 'Reset cache (delete all data and start fresh)' | |
| type: boolean | |
| default: false | |
| engagement_count: | |
| description: 'Items per engagement checkpoint' | |
| type: number | |
| default: 100 | |
| page_count: | |
| description: 'Pages per items checkpoint (100 items/page)' | |
| type: number | |
| default: 5 | |
| concurrency: | |
| group: data-cache-sync | |
| cancel-in-progress: false | |
| env: | |
| DOTNET_VERSION: '10.0.x' | |
| jobs: | |
| # ============================================================ | |
| # Sync SkiaSharp (main repo) | |
| # ============================================================ | |
| sync-skiasharp: | |
| if: inputs.repo != 'mono/SkiaSharp.Extended' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout docs-dashboard (for CLI code) | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: docs-dashboard | |
| - name: Checkout docs-data-cache | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: docs-data-cache | |
| path: .data-cache | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{ env.DOTNET_VERSION }} | |
| - name: Configure git | |
| working-directory: .data-cache | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| # NuGet (every 6 hours: 0, 6, 12, 18 UTC) | |
| - name: Check if NuGet sync needed | |
| id: nuget-check | |
| run: | | |
| HOUR=$(date -u +%H) | |
| SOURCE="${{ inputs.source || 'all' }}" | |
| if [[ "$SOURCE" == "nuget" ]] || [[ "$SOURCE" == "all" && ("${{ github.event_name }}" != "schedule" || "$HOUR" == "00" || "$HOUR" == "06" || "$HOUR" == "12" || "$HOUR" == "18") ]]; then | |
| echo "run=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "run=false" >> $GITHUB_OUTPUT | |
| echo "Skipping NuGet sync (only runs at 0, 6, 12, 18 UTC)" | |
| fi | |
| - name: Sync NuGet | |
| if: steps.nuget-check.outputs.run == 'true' | |
| run: | | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync nuget \ | |
| --repo mono/SkiaSharp \ | |
| --cache-path .data-cache | |
| - name: Sync Community | |
| if: steps.nuget-check.outputs.run == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync community \ | |
| --repo mono/SkiaSharp \ | |
| --cache-path .data-cache | |
| - name: Push NuGet + Community | |
| if: steps.nuget-check.outputs.run == 'true' | |
| working-directory: .data-cache | |
| run: | | |
| git add -A | |
| if git diff --staged --quiet; then | |
| echo "No NuGet/Community changes to commit" | |
| else | |
| git commit -m "Sync: SkiaSharp NuGet+Community $(date -u +%Y-%m-%dT%H:%M:%SZ)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| echo "Push failed, rebasing (attempt $i)..." | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| # GitHub items (Layer 1 - checkpoint loop) | |
| - name: Sync GitHub items (checkpoint loop) | |
| if: inputs.source != 'nuget' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| PAGE_COUNT="${{ inputs.page_count || '5' }}" | |
| BATCH=1 | |
| RESET_DONE=false | |
| while true; do | |
| echo "" | |
| echo "========================================" | |
| echo " SkiaSharp Items checkpoint $BATCH" | |
| echo "========================================" | |
| # First batch only: use --reset if requested | |
| if [ "${{ inputs.reset }}" == "true" ] && [ "$RESET_DONE" == "false" ]; then | |
| SYNC_FLAG="--reset" | |
| RESET_DONE=true | |
| else | |
| SYNC_FLAG="" | |
| fi | |
| set +e | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync github \ | |
| --repo mono/SkiaSharp \ | |
| --cache-path .data-cache \ | |
| --items-only \ | |
| --page-count $PAGE_COUNT \ | |
| $SYNC_FLAG | |
| EXIT_CODE=$? | |
| set -e | |
| # Always commit changes before checking exit code | |
| cd .data-cache | |
| git add -A | |
| if git diff --staged --quiet; then | |
| echo "No changes" | |
| cd .. | |
| if [ $EXIT_CODE -ne 0 ]; then | |
| [ $EXIT_CODE -eq 2 ] && echo "All items synced!" | |
| [ $EXIT_CODE -eq 1 ] && echo "Rate limit hit - will resume next run" | |
| break | |
| fi | |
| echo "No changes and exit 0 - done!" | |
| break | |
| else | |
| git commit -m "Sync: SkiaSharp items checkpoint $BATCH $(date -u +%H:%M)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| echo "Push failed, rebasing (attempt $i)..." | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| cd .. | |
| if [ $EXIT_CODE -eq 2 ]; then | |
| echo "All items synced!" | |
| break | |
| fi | |
| if [ $EXIT_CODE -eq 1 ]; then | |
| echo "Rate limit hit - will resume next run" | |
| break | |
| fi | |
| BATCH=$((BATCH + 1)) | |
| done | |
| # GitHub engagement (Layer 2 - checkpoint loop) | |
| - name: Sync GitHub engagement (checkpoint loop) | |
| if: inputs.source != 'nuget' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| ENGAGEMENT_COUNT="${{ inputs.engagement_count || '100' }}" | |
| BATCH=1 | |
| while true; do | |
| echo "" | |
| echo "========================================" | |
| echo " SkiaSharp Engagement checkpoint $BATCH" | |
| echo "========================================" | |
| set +e | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync github \ | |
| --repo mono/SkiaSharp \ | |
| --cache-path .data-cache \ | |
| --engagement-only \ | |
| --engagement-count $ENGAGEMENT_COUNT | |
| EXIT_CODE=$? | |
| set -e | |
| # Always commit changes before checking exit code | |
| cd .data-cache | |
| git add -A | |
| if git diff --staged --quiet; then | |
| echo "No changes" | |
| cd .. | |
| if [ $EXIT_CODE -ne 0 ]; then | |
| [ $EXIT_CODE -eq 2 ] && echo "All engagement synced!" | |
| [ $EXIT_CODE -eq 1 ] && echo "Rate limit hit - will resume next run" | |
| break | |
| fi | |
| echo "No changes and exit 0 - done!" | |
| break | |
| else | |
| git commit -m "Sync: SkiaSharp engagement checkpoint $BATCH $(date -u +%H:%M)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| echo "Push failed, rebasing (attempt $i)..." | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| cd .. | |
| if [ $EXIT_CODE -eq 2 ]; then | |
| echo "All engagement synced!" | |
| break | |
| fi | |
| if [ $EXIT_CODE -eq 1 ]; then | |
| echo "Rate limit hit - will resume next run" | |
| break | |
| fi | |
| BATCH=$((BATCH + 1)) | |
| done | |
| # ============================================================ | |
| # Sync SkiaSharp.Extended (parallel job) | |
| # ============================================================ | |
| sync-extended: | |
| if: inputs.repo != 'mono/SkiaSharp' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout docs-dashboard | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: docs-dashboard | |
| - name: Checkout docs-data-cache | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: docs-data-cache | |
| path: .data-cache | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{ env.DOTNET_VERSION }} | |
| - name: Configure git | |
| working-directory: .data-cache | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| # NuGet (every 6 hours) | |
| - name: Check if NuGet sync needed | |
| id: nuget-check | |
| run: | | |
| HOUR=$(date -u +%H) | |
| SOURCE="${{ inputs.source || 'all' }}" | |
| if [[ "$SOURCE" == "nuget" ]] || [[ "$SOURCE" == "all" && ("${{ github.event_name }}" != "schedule" || "$HOUR" == "00" || "$HOUR" == "06" || "$HOUR" == "12" || "$HOUR" == "18") ]]; then | |
| echo "run=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "run=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Sync NuGet | |
| if: steps.nuget-check.outputs.run == 'true' | |
| run: | | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync nuget \ | |
| --repo mono/SkiaSharp.Extended \ | |
| --cache-path .data-cache | |
| - name: Sync Community | |
| if: steps.nuget-check.outputs.run == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync community \ | |
| --repo mono/SkiaSharp.Extended \ | |
| --cache-path .data-cache | |
| - name: Push NuGet + Community | |
| if: steps.nuget-check.outputs.run == 'true' | |
| working-directory: .data-cache | |
| run: | | |
| git add -A | |
| if git diff --staged --quiet; then | |
| echo "No changes" | |
| else | |
| git commit -m "Sync: Extended NuGet+Community $(date -u +%Y-%m-%dT%H:%M:%SZ)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| # GitHub items (checkpoint loop - Extended is small so usually completes in 1 batch) | |
| - name: Sync GitHub items | |
| if: inputs.source != 'nuget' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| PAGE_COUNT="${{ inputs.page_count || '5' }}" | |
| BATCH=1 | |
| RESET_DONE=false | |
| while true; do | |
| echo "Extended items checkpoint $BATCH" | |
| # First batch only: use --reset if requested | |
| if [ "${{ inputs.reset }}" == "true" ] && [ "$RESET_DONE" == "false" ]; then | |
| SYNC_FLAG="--reset" | |
| RESET_DONE=true | |
| else | |
| SYNC_FLAG="" | |
| fi | |
| set +e | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync github \ | |
| --repo mono/SkiaSharp.Extended \ | |
| --cache-path .data-cache \ | |
| --items-only \ | |
| --page-count $PAGE_COUNT \ | |
| $SYNC_FLAG | |
| EXIT_CODE=$? | |
| set -e | |
| cd .data-cache | |
| git add -A | |
| if git diff --staged --quiet; then | |
| cd .. | |
| if [ $EXIT_CODE -ne 0 ]; then | |
| [ $EXIT_CODE -eq 2 ] && echo "All done!" | |
| break | |
| fi | |
| break | |
| else | |
| git commit -m "Sync: Extended items $BATCH $(date -u +%H:%M)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| cd .. | |
| if [ $EXIT_CODE -eq 2 ] || [ $EXIT_CODE -eq 1 ]; then | |
| break | |
| fi | |
| BATCH=$((BATCH + 1)) | |
| done | |
| # GitHub engagement (checkpoint loop - Extended is small, should finish quickly) | |
| - name: Sync GitHub engagement | |
| if: inputs.source != 'nuget' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| ENGAGEMENT_COUNT="${{ inputs.engagement_count || '100' }}" | |
| BATCH=1 | |
| while true; do | |
| echo "Extended engagement checkpoint $BATCH" | |
| set +e | |
| dotnet run --project src/SkiaSharp.Triage.Cli -- sync github \ | |
| --repo mono/SkiaSharp.Extended \ | |
| --cache-path .data-cache \ | |
| --engagement-only \ | |
| --engagement-count $ENGAGEMENT_COUNT | |
| EXIT_CODE=$? | |
| set -e | |
| cd .data-cache | |
| git add -A | |
| if git diff --staged --quiet; then | |
| cd .. | |
| if [ $EXIT_CODE -ne 0 ]; then | |
| [ $EXIT_CODE -eq 2 ] && echo "All done!" | |
| break | |
| fi | |
| break | |
| else | |
| git commit -m "Sync: Extended engagement $BATCH $(date -u +%H:%M)" | |
| for i in 1 2 3 4 5; do | |
| git push && break | |
| git pull --rebase | |
| sleep $((i * 2)) | |
| done | |
| fi | |
| cd .. | |
| if [ $EXIT_CODE -eq 2 ] || [ $EXIT_CODE -eq 1 ]; then | |
| break | |
| fi | |
| BATCH=$((BATCH + 1)) | |
| done |