mirror of
https://github.com/afoim/fuwari.git
synced 2026-01-31 09:03:18 +08:00
67 lines
2.1 KiB
YAML
67 lines
2.1 KiB
YAML
name: PR Preview Deploy
|
||
|
||
on:
|
||
pull_request:
|
||
types: [opened, synchronize, reopened]
|
||
|
||
jobs:
|
||
build-and-deploy:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
# 1. 拉取 PR 分支代码(支持 fork)
|
||
- name: Checkout PR branch
|
||
uses: actions/checkout@v4
|
||
with:
|
||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||
ref: ${{ github.event.pull_request.head.ref }}
|
||
token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
||
# 2. 安装 Node.js
|
||
- name: Setup Node.js
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: 20
|
||
|
||
# 3. 安装依赖
|
||
- name: Install dependencies
|
||
run: npm install
|
||
|
||
# 4. 本地构建项目(生成 dist)
|
||
- name: Build site
|
||
run: npm run build
|
||
|
||
# 5. 安装 Wrangler CLI(用于上传 dist)
|
||
- name: Install Wrangler CLI
|
||
run: npm install -g wrangler
|
||
|
||
# 6. 上传 dist 目录到 Cloudflare Pages
|
||
- name: Deploy dist to Cloudflare Pages
|
||
env:
|
||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||
CLOUDFLARE_PROJECT_NAME: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
|
||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||
run: |
|
||
BRANCH_NAME=pr-${PR_NUMBER}
|
||
wrangler pages deploy ./dist \
|
||
--project-name=$CLOUDFLARE_PROJECT_NAME \
|
||
--branch=$BRANCH_NAME \
|
||
--account-id=$CLOUDFLARE_ACCOUNT_ID \
|
||
--api-token=$CLOUDFLARE_API_TOKEN
|
||
|
||
# 7. 在 PR 评论区发布预览链接
|
||
- name: Comment preview URL on PR
|
||
uses: actions/github-script@v7
|
||
with:
|
||
script: |
|
||
const prNumber = context.payload.pull_request.number;
|
||
const project = process.env.CLOUDFLARE_PROJECT_NAME;
|
||
const url = `https://${project}--pr-${prNumber}.pages.dev`;
|
||
await github.rest.issues.createComment({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
issue_number: prNumber,
|
||
body: `✅ 预览已部署:${url}`
|
||
});
|