Generate OSRS Tiles #16
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: Generate OSRS Tiles | |
| on: | |
| schedule: | |
| # Run on the 1st of every month at 2:00 AM UTC | |
| - cron: '0 2 1 * *' | |
| workflow_dispatch: # Allow manual triggering | |
| jobs: | |
| generate-tiles: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install Node.js dependencies | |
| run: npm ci | |
| - name: Install Python dependencies for transparency processing | |
| run: pip3 install Pillow numpy | |
| - name: Generate tiles | |
| run: | | |
| npm run clean | |
| npm run build:with-tiles | |
| env: | |
| NODE_OPTIONS: '--max-old-space-size=4096' | |
| CI: 'true' | |
| - name: Migrate markers if dimensions changed | |
| run: | | |
| echo "๐ Checking if marker migration is needed..." | |
| npm run migrate-markers -- --auto-detect || echo "โ ๏ธ Migration skipped (no dimension changes or error)" | |
| continue-on-error: true | |
| - name: Extract worldmap data from cache | |
| run: | | |
| echo "๐บ๏ธ Extracting worldmap labels and intermap links..." | |
| npm run explore-worldmap || echo "โ ๏ธ Worldmap extraction failed" | |
| continue-on-error: true | |
| - name: Commit and push changes | |
| run: | | |
| git config --local user.email "action@github.com" | |
| git config --local user.name "GitHub Action" | |
| # Add tiles, metadata, markers, and worldmap data | |
| git add public/tiles/ | |
| git add public/tile_metadata.json | |
| git add public/map_data.json | |
| git add public/worldmap_data_full.json | |
| git add backups/ | |
| if ! git diff --staged --quiet; then | |
| TILE_COUNT=$(find public/tiles -name "*.png" | wc -l) | |
| # Check if metadata changed (dimension update) | |
| if git diff --staged --name-only | grep -q "tile_metadata.json"; then | |
| echo "๐ Tile dimensions changed - markers migrated" | |
| COMMIT_MSG="๐บ๏ธ Auto-update OSRS tiles & migrate markers (${TILE_COUNT} files) - $(date '+%Y-%m-%d')" | |
| else | |
| COMMIT_MSG="๐บ๏ธ Auto-update OSRS tiles (${TILE_COUNT} files) - $(date '+%Y-%m-%d')" | |
| fi | |
| git commit -m "${COMMIT_MSG}" | |
| git push | |
| echo "โ Changes pushed - Vercel deployment will be triggered automatically" | |
| else | |
| echo "No changes to commit - Vercel deployment will still be triggered" | |
| fi | |
| - name: Generate workflow summary | |
| if: always() | |
| run: | | |
| echo "# ๐บ๏ธ OSRS Tile Generation Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # Tile statistics | |
| TILE_COUNT=$(find public/tiles -name "*.png" 2>/dev/null | wc -l || echo "0") | |
| echo "## ๐ Tile Statistics" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Total tiles generated**: ${TILE_COUNT}" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Planes**: 4 (0-3)" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Zoom levels**: 7 (0-6)" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # Tile dimensions | |
| if [ -f "public/tile_metadata.json" ]; then | |
| TILES_X=$(grep -o '"tilesX": [0-9]*' public/tile_metadata.json | head -1 | grep -o '[0-9]*') | |
| TILES_Y=$(grep -o '"tilesY": [0-9]*' public/tile_metadata.json | head -1 | grep -o '[0-9]*') | |
| echo "## ๐ Map Dimensions" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Width**: ${TILES_X} tiles" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Height**: ${TILES_Y} tiles" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Reference zoom**: Level 5" >> $GITHUB_STEP_SUMMARY | |
| # Check for dimension changes in history | |
| HISTORY_COUNT=$(grep -c '"date":' public/tile_metadata.json || echo "0") | |
| if [ "$HISTORY_COUNT" -gt 1 ]; then | |
| echo "- **History**: ${HISTORY_COUNT} dimension changes recorded" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| # Check if markers were migrated | |
| if git log -1 --pretty=%B | grep -q "migrate markers"; then | |
| MARKER_COUNT=$(grep -o '"id":' public/map_data.json 2>/dev/null | wc -l || echo "0") | |
| BACKUP_COUNT=$(ls -1 backups/*.json 2>/dev/null | wc -l || echo "0") | |
| echo "## โ Marker Migration" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Status**: Migrated successfully" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Markers updated**: ${MARKER_COUNT}" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Backups created**: ${BACKUP_COUNT}" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Reason**: Map dimensions changed" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "## โน๏ธ Marker Migration" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Status**: Not needed (dimensions unchanged)" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # Cache information (if available from tile generation logs) | |
| echo "## ๐ฎ OSRS Cache" >> $GITHUB_STEP_SUMMARY | |
| if [ -f "cache_info.txt" ]; then | |
| cat cache_info.txt >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "- **Source**: Latest from archive.openrs2.org" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Generated**: $(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| # Deployment info | |
| echo "## ๐ Deployment" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Status**: Ready for deployment" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Platform**: Vercel (auto-triggered)" >> $GITHUB_STEP_SUMMARY | |
| echo "- **Commit**: \`$(git rev-parse --short HEAD)\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "---" >> $GITHUB_STEP_SUMMARY | |
| echo "*Workflow completed at $(date '+%Y-%m-%d %H:%M:%S UTC')*" >> $GITHUB_STEP_SUMMARY | |
| - name: Trigger Vercel deployment | |
| run: | | |
| echo "๐ Tile generation completed successfully" | |
| echo "๐ก Vercel deployment will be triggered via workflow_run event" | |
| echo "๐ฏ New tiles are ready for production deployment" |