80 lines
3.1 KiB
YAML
80 lines
3.1 KiB
YAML
name: Deploy to Cloudflare
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
deployments: write
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
name: Deploy to Cloudflare Pages
|
|
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '24'
|
|
cache: 'pnpm'
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Build for Cloudflare
|
|
run: pnpm run build:cloudflare
|
|
env:
|
|
BUILD_TARGET: cloudflare
|
|
NODE_ENV: production
|
|
# NEXT_PUBLIC_ 前缀的变量需要在构建时设置
|
|
NEXT_PUBLIC_STORAGE_TYPE: ${{ secrets.NEXT_PUBLIC_STORAGE_TYPE }}
|
|
NEXT_PUBLIC_SITE_NAME: ${{ secrets.NEXT_PUBLIC_SITE_NAME }}
|
|
NEXT_PUBLIC_SEARCH_MAX_PAGE: ${{ secrets.NEXT_PUBLIC_SEARCH_MAX_PAGE }}
|
|
NEXT_PUBLIC_DOUBAN_PROXY_TYPE: ${{ secrets.NEXT_PUBLIC_DOUBAN_PROXY_TYPE }}
|
|
NEXT_PUBLIC_DOUBAN_PROXY: ${{ secrets.NEXT_PUBLIC_DOUBAN_PROXY }}
|
|
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE: ${{ secrets.NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE }}
|
|
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY: ${{ secrets.NEXT_PUBLIC_DOUBAN_IMAGE_PROXY }}
|
|
NEXT_PUBLIC_DISABLE_YELLOW_FILTER: ${{ secrets.NEXT_PUBLIC_DISABLE_YELLOW_FILTER }}
|
|
NEXT_PUBLIC_FLUID_SEARCH: ${{ secrets.NEXT_PUBLIC_FLUID_SEARCH }}
|
|
NEXT_PUBLIC_PROXY_M3U8_TOKEN: ${{ secrets.NEXT_PUBLIC_PROXY_M3U8_TOKEN }}
|
|
NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES: ${{ secrets.NEXT_PUBLIC_DANMAKU_CACHE_EXPIRE_MINUTES }}
|
|
NEXT_PUBLIC_VOICE_CHAT_STRATEGY: ${{ secrets.NEXT_PUBLIC_VOICE_CHAT_STRATEGY }}
|
|
NEXT_PUBLIC_ENABLE_OFFLINE_DOWNLOAD: ${{ secrets.NEXT_PUBLIC_ENABLE_OFFLINE_DOWNLOAD }}
|
|
NEXT_PUBLIC_ENABLE_SOURCE_SEARCH: ${{ secrets.NEXT_PUBLIC_ENABLE_SOURCE_SEARCH }}
|
|
# 运行时环境变量
|
|
USERNAME: ${{ secrets.USERNAME }}
|
|
PASSWORD: ${{ secrets.PASSWORD }}
|
|
UPSTASH_URL: ${{ secrets.UPSTASH_URL }}
|
|
UPSTASH_TOKEN: ${{ secrets.UPSTASH_TOKEN }}
|
|
TMDB_API_KEY: ${{ secrets.TMDB_API_KEY }}
|
|
TMDB_PROXY: ${{ secrets.TMDB_PROXY }}
|
|
TMDB_REVERSE_PROXY: ${{ secrets.TMDB_REVERSE_PROXY }}
|
|
DANMAKU_API_BASE: ${{ secrets.DANMAKU_API_BASE }}
|
|
DANMAKU_API_TOKEN: ${{ secrets.DANMAKU_API_TOKEN }}
|
|
ANNOUNCEMENT: ${{ secrets.ANNOUNCEMENT }}
|
|
CRON_PASSWORD: ${{ secrets.CRON_PASSWORD }}
|
|
SITE_BASE: ${{ secrets.SITE_BASE }}
|
|
REDIS_URL: ${{ secrets.REDIS_URL }}
|
|
KVROCKS_URL: ${{ secrets.KVROCKS_URL }}
|
|
INIT_CONFIG: ${{ secrets.INIT_CONFIG }}
|
|
CONFIG_SUBSCRIPTION_URL: ${{ secrets.CONFIG_SUBSCRIPTION_URL }}
|
|
|
|
- name: Deploy to Cloudflare
|
|
uses: cloudflare/wrangler-action@v3
|
|
with:
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
command: deploy
|
|
packageManager: pnpm
|