Skip to content

Generate OSRS Tiles #16

Generate OSRS Tiles

Generate OSRS Tiles #16

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"