From d8703b75c85a01d8e51a737c8cd60ac261f8953a Mon Sep 17 00:00:00 2001 From: Brian Beck Date: Thu, 9 Apr 2026 08:24:38 -0700 Subject: [PATCH] split assets to R2 bucket in cloudflare --- .github/workflows/deploy-cloudflare.yml | 12 ++++++++++++ package.json | 1 - src/loaders.ts | 2 +- vite.config.ts | 19 +++++++++++++------ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-cloudflare.yml b/.github/workflows/deploy-cloudflare.yml index df7830db..a76e1a77 100644 --- a/.github/workflows/deploy-cloudflare.yml +++ b/.github/workflows/deploy-cloudflare.yml @@ -22,9 +22,21 @@ jobs: - run: npm run build env: + BASE_PATH: / + GAME_ASSETS_BASE_URL: https://assets.tribes2.online/game/base/ RELAY_URL: ${{ secrets.RELAY_URL }} LOG_LEVEL: ${{ secrets.LOG_LEVEL }} + - name: Sync game assets to R2 + run: aws s3 sync docs/base/ s3://t2-assets/game/base/ --follow-symlinks --delete + env: + AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} + AWS_ENDPOINT_URL: https://${{ secrets.CF_ACCOUNT_ID }}.r2.cloudflarestorage.com + + - name: Remove game assets from Pages deploy + run: rm -rf docs/base + - uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} diff --git a/package.json b/package.json index 8ec5ab91..ee9f8406 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "build:manifest": "tsx --tsconfig tsconfig.node.json scripts/generate-manifest.ts -o src/manifest.json", "build:parser": "peggy TorqueScript.pegjs -o generated/TorqueScript.js --format es", "build": "vite build", - "build:gh-pages": "BASE_PATH=/t2-mapper/ npm run build", "copy-public": "cpy --dot 'public/*' '!(public/docs)' docs", "format": "prettier --write .", "lint": "eslint .", diff --git a/src/loaders.ts b/src/loaders.ts index f02d35e2..90959674 100644 --- a/src/loaders.ts +++ b/src/loaders.ts @@ -14,7 +14,7 @@ const log = createLogger("loaders"); export type { TerrainFile }; -export const RESOURCE_ROOT_URL = `${process.env.BASE_PATH}base/`; +export const RESOURCE_ROOT_URL = process.env.GAME_ASSETS_BASE_URL; export const FALLBACK_TEXTURE_URL = `${process.env.BASE_PATH}white.png`; export function getUrlForPath(resourcePath: string, fallbackUrl?: string) { diff --git a/vite.config.ts b/vite.config.ts index 946e4251..3b8266b1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,15 +7,22 @@ export default defineConfig(({ mode }) => { // Only expose specific env vars to the client bundle — loadEnv requires a // prefix, so we load with each var's own prefix and pick the value out. const allEnv = loadEnv(mode, process.cwd(), ""); - const basePath = allEnv.BASE_PATH || "/"; - const publicEnvKeys = ["LOG_LEVEL", "RELAY_URL"]; + + const publicEnv: Record = { + LOG_LEVEL: allEnv.LOG_LEVEL || "info", + RELAY_URL: allEnv.RELAY_URL || "wss://t2-relay.fly.dev", + BASE_PATH: allEnv.BASE_PATH || "/", + GAME_ASSETS_BASE_URL: + allEnv.GAME_ASSETS_BASE_URL || `${allEnv.BASE_PATH || "/"}base/`, + }; + const define: Record = {}; - for (const key of publicEnvKeys) { - define[`process.env.${key}`] = JSON.stringify(allEnv[key] ?? ""); + for (const key in publicEnv) { + define[`process.env.${key}`] = JSON.stringify(publicEnv[key]); } - define["process.env.BASE_PATH"] = JSON.stringify(basePath); + return { - base: basePath, + base: publicEnv.BASE_PATH, server: { port: 3000 }, define, build: {