github action deploy
This commit is contained in:
119
.github/workflows/cloudflare-deploy.yml
vendored
Normal file
119
.github/workflows/cloudflare-deploy.yml
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
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
|
||||
with:
|
||||
version: 9
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
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 }}
|
||||
|
||||
- name: Set Cloudflare environment variables
|
||||
run: |
|
||||
# 设置运行时环境变量到 Cloudflare
|
||||
if [ -n "${{ secrets.USERNAME }}" ]; then
|
||||
echo "${{ secrets.USERNAME }}" | pnpm wrangler secret put USERNAME
|
||||
fi
|
||||
if [ -n "${{ secrets.PASSWORD }}" ]; then
|
||||
echo "${{ secrets.PASSWORD }}" | pnpm wrangler secret put PASSWORD
|
||||
fi
|
||||
if [ -n "${{ secrets.UPSTASH_URL }}" ]; then
|
||||
echo "${{ secrets.UPSTASH_URL }}" | pnpm wrangler secret put UPSTASH_URL
|
||||
fi
|
||||
if [ -n "${{ secrets.UPSTASH_TOKEN }}" ]; then
|
||||
echo "${{ secrets.UPSTASH_TOKEN }}" | pnpm wrangler secret put UPSTASH_TOKEN
|
||||
fi
|
||||
if [ -n "${{ secrets.TMDB_API_KEY }}" ]; then
|
||||
echo "${{ secrets.TMDB_API_KEY }}" | pnpm wrangler secret put TMDB_API_KEY
|
||||
fi
|
||||
if [ -n "${{ secrets.TMDB_PROXY }}" ]; then
|
||||
echo "${{ secrets.TMDB_PROXY }}" | pnpm wrangler secret put TMDB_PROXY
|
||||
fi
|
||||
if [ -n "${{ secrets.TMDB_REVERSE_PROXY }}" ]; then
|
||||
echo "${{ secrets.TMDB_REVERSE_PROXY }}" | pnpm wrangler secret put TMDB_REVERSE_PROXY
|
||||
fi
|
||||
if [ -n "${{ secrets.DANMAKU_API_BASE }}" ]; then
|
||||
echo "${{ secrets.DANMAKU_API_BASE }}" | pnpm wrangler secret put DANMAKU_API_BASE
|
||||
fi
|
||||
if [ -n "${{ secrets.DANMAKU_API_TOKEN }}" ]; then
|
||||
echo "${{ secrets.DANMAKU_API_TOKEN }}" | pnpm wrangler secret put DANMAKU_API_TOKEN
|
||||
fi
|
||||
if [ -n "${{ secrets.ANNOUNCEMENT }}" ]; then
|
||||
echo "${{ secrets.ANNOUNCEMENT }}" | pnpm wrangler secret put ANNOUNCEMENT
|
||||
fi
|
||||
if [ -n "${{ secrets.CRON_PASSWORD }}" ]; then
|
||||
echo "${{ secrets.CRON_PASSWORD }}" | pnpm wrangler secret put CRON_PASSWORD
|
||||
fi
|
||||
if [ -n "${{ secrets.SITE_BASE }}" ]; then
|
||||
echo "${{ secrets.SITE_BASE }}" | pnpm wrangler secret put SITE_BASE
|
||||
fi
|
||||
if [ -n "${{ secrets.REDIS_URL }}" ]; then
|
||||
echo "${{ secrets.REDIS_URL }}" | pnpm wrangler secret put REDIS_URL
|
||||
fi
|
||||
if [ -n "${{ secrets.KVROCKS_URL }}" ]; then
|
||||
echo "${{ secrets.KVROCKS_URL }}" | pnpm wrangler secret put KVROCKS_URL
|
||||
fi
|
||||
if [ -n "${{ secrets.INIT_CONFIG }}" ]; then
|
||||
echo "${{ secrets.INIT_CONFIG }}" | pnpm wrangler secret put INIT_CONFIG
|
||||
fi
|
||||
if [ -n "${{ secrets.CONFIG_SUBSCRIPTION_URL }}" ]; then
|
||||
echo "${{ secrets.CONFIG_SUBSCRIPTION_URL }}" | pnpm wrangler secret put CONFIG_SUBSCRIPTION_URL
|
||||
fi
|
||||
env:
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
|
||||
- name: Deploy to Cloudflare
|
||||
uses: cloudflare/wrangler-action@v3
|
||||
with:
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
command: deploy
|
||||
packageManager: pnpm
|
||||
Reference in New Issue
Block a user