Files
blogflare/.drone.yml
T
seahi be0ba73edf
continuous-integration/drone/push Build is passing
ci: 部署完毕后自动清理 Cloudflare 边缘缓存
- 新增 purge-cache 步骤,在 deploy-pages 完成后自动调用 API 刷新全站缓存
- 彻底解决新版发布后,由于 CDN 强缓存导致浏览器请求旧 JS 文件报 404(Failed to fetch dynamically imported module)的版本偏差问题
- 优化流水线执行顺序,将缓存清理与 Telegram 成功通知配置为并行执行,避免增加构建耗时
- 更新失败通知的依赖项,并优化了发布成功的通知文案
2026-09-26 15:15:22 +08:00

167 lines
3.9 KiB
YAML

kind: pipeline
type: docker
name: default
node:
name: pve
trigger:
branch:
- main
event:
- push
- custom
steps:
- name: install
image: node:22-slim
volumes:
- name: pnpm-store
path: /root/.local/share/pnpm/store
commands:
- corepack enable
- pnpm install --frozen-lockfile --prefer-offline
- name: lint
image: node:22-slim
depends_on:
- install
commands:
- corepack enable
- pnpm run lint
- name: check
image: node:22-slim
depends_on:
- install
volumes:
- name: svelte-cache
path: /drone/src/.svelte-kit
commands:
- corepack enable
- pnpm run check
- name: test
image: node:22-slim
depends_on:
- install
commands:
- corepack enable
- pnpm run test
- name: build
image: node:22-slim
depends_on:
- lint
- check
- test
volumes:
- name: svelte-cache
path: /drone/src/.svelte-kit
commands:
- corepack enable
- pnpm run build
- name: deploy-db
image: node:22-slim
depends_on:
- build
environment:
CLOUDFLARE_ACCOUNT_ID:
from_secret: CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_API_TOKEN:
from_secret: CLOUDFLARE_API_TOKEN
commands:
- corepack enable
- pnpm exec wrangler d1 migrations apply blogflare-db --remote
- name: deploy-pages
image: node:22-slim
depends_on:
- deploy-db
environment:
CLOUDFLARE_ACCOUNT_ID:
from_secret: CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_API_TOKEN:
from_secret: CLOUDFLARE_API_TOKEN
volumes:
- name: svelte-cache
path: /drone/src/.svelte-kit
commands:
- corepack enable
- pnpm exec wrangler pages deploy .svelte-kit/cloudflare --project-name=blogflare --branch=main
- name: purge-cache
image: curlimages/curl:8.1.2
depends_on:
- deploy-pages
environment:
CLOUDFLARE_API_TOKEN:
from_secret: CLOUDFLARE_API_TOKEN
CLOUDFLARE_ZONE_ID:
from_secret: CLOUDFLARE_ZONE_ID
commands:
- |
curl -s -S -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
- name: notify-success
image: appleboy/drone-telegram
depends_on:
- deploy-pages
settings:
token:
from_secret: TELEGRAM_BOT_TOKEN
to:
from_secret: TELEGRAM_CHAT_ID
format: html
message: |
🎉 <b>BlogFlare 自动化部署成功!</b>
📦 <b>提交变动说明:</b>
<code>{{ commit.message }}</code>
🔗 <b>构建详情:</b> <a href="{{ build.link }}">查看 Drone 运行记录</a>
🚀 全套改动现已全网完成发布部署!(缓存清理已在后台同步执行)
when:
status:
- success
- name: notify-failure
image: appleboy/drone-telegram
depends_on:
- deploy-db
- deploy-pages
- purge-cache
settings:
token:
from_secret: TELEGRAM_BOT_TOKEN
to:
from_secret: TELEGRAM_CHAT_ID
format: html
message: |
❌ <b>BlogFlare 构建与发布遭遇失败中断!</b>
📦 <b>提交变动说明:</b>
<code>{{ commit.message }}</code>
💥 <b>失败步骤:</b> <code>{{ build.failed_step }}</code>
👤 <b>提交作者:</b> {{ commit.author }}
🔗 <b>详细报错日志:</b> <a href="{{ build.link }}">点击直达 Drone 报错现场记录</a>
⚠️ 请立刻点击上述日志链接查看完整运行记录,扫清排查代码层或通讯网络上的潜在卡塞问题。
when:
status:
- failure
volumes:
- name: pnpm-store
host:
path: /tmp/drone/pnpm-store
- name: svelte-cache
host:
path: /tmp/drone/blogflare-svelte-cache