continuous-integration/drone/push Build is passing
- 新增 purge-cache 步骤,在 deploy-pages 完成后自动调用 API 刷新全站缓存 - 彻底解决新版发布后,由于 CDN 强缓存导致浏览器请求旧 JS 文件报 404(Failed to fetch dynamically imported module)的版本偏差问题 - 优化流水线执行顺序,将缓存清理与 Telegram 成功通知配置为并行执行,避免增加构建耗时 - 更新失败通知的依赖项,并优化了发布成功的通知文案
167 lines
3.9 KiB
YAML
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
|