1
0
mirror of https://github.com/one-among-us/data.git synced 2025-02-23 14:48:46 +08:00
one-among-us-data/.github/workflows/preview.yml

76 lines
2.5 KiB
YAML
Raw Normal View History

2025-01-02 18:29:22 +08:00
name: PR Preview
on:
2025-02-10 05:20:51 +08:00
pull_request_target:
2025-01-02 18:29:22 +08:00
types: [opened, synchronize, reopened]
2025-02-10 05:20:51 +08:00
branches: [main]
2025-01-02 18:29:22 +08:00
jobs:
build:
runs-on: ubuntu-latest
permissions:
2025-01-02 19:01:06 +08:00
contents: write
2025-01-02 18:29:22 +08:00
deployments: write
2025-01-02 19:01:06 +08:00
pull-requests: write
2025-01-02 18:29:22 +08:00
steps:
2025-02-10 05:20:51 +08:00
- name: Checkout PR branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
2025-01-02 18:29:22 +08:00
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'yarn'
- name: Build
run: |
yarn install --production --frozen-lockfile
yarn build-preview
2025-01-02 18:57:45 +08:00
rm -rf dist/web.tgz
2025-01-02 18:29:22 +08:00
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
2025-01-02 18:50:45 +08:00
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
2025-01-02 18:29:22 +08:00
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
command: pages deploy dist --project-name=data-preview --branch=pr-${{ github.event.pull_request.number }}
2025-02-10 05:20:51 +08:00
2025-01-02 18:29:22 +08:00
- name: Pull request comment
uses: actions/github-script@v6
with:
script: |
const prNumber = context.payload.pull_request.number;
2025-01-02 19:08:29 +08:00
const now = new Date().toISOString().substring(0, 19).replace('T', ' ');
const reviewBody = `🐱 感谢贡献!\n\n部署了预览在这里哦: https://pr-${prNumber}.data-preview.pages.dev\n\n🕒 最后更新: ${now} (UTC)`;
2025-01-02 18:29:22 +08:00
2025-02-10 05:20:51 +08:00
// Look for an existing review comment containing the preview message.
2025-01-02 18:29:22 +08:00
const { data: reviews } = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
});
const existingReview = reviews.find(review => review.body.includes('部署了预览'));
if (existingReview) {
2025-02-10 05:20:51 +08:00
// Update the existing review comment.
2025-01-02 18:29:22 +08:00
await github.rest.pulls.updateReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
review_id: existingReview.id,
body: reviewBody,
});
} else {
2025-02-10 05:20:51 +08:00
// Create a new review comment.
2025-01-02 18:29:22 +08:00
await github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
body: reviewBody,
event: "COMMENT",
});
}