---
title: Chào AIVO — pipeline deploy của tusgino
description: "Bài mẫu kiểm chứng layout AIVO: pipeline deploy Astro lên Cloudflare Pages với diagram, callout, code block, chart và FAQ đầy đủ cho tusgino trên blog AIVO."
pubDate: 2026-09-10
author: tusgino
tags: [deploy, astro]
cover: /images/covers/pipeline-deploy.svg
coverAlt: "Sơ đồ kiến trúc pipeline deploy Astro lên Cloudflare Pages"
hidden: true
faq:
  - q: Deploy mất bao lâu?
    a: Khoảng 90 giây từ push main tới production.
  - q: Preview deploy xem ở đâu?
    a: Mỗi PR có preview URL riêng trên Cloudflare Pages.
---

<TLDR>Bài mẫu kiểm chứng toàn bộ component Tier 1 của AIVO.</TLDR>

## Luồng deploy

```diagram
type: flowchart
title: Luồng deploy
nodes:
  - id: push
    label: push main
  - id: build
    label: Action build
    focal: true
  - id: cf
    label: Cloudflare Pages
edges:
  - [push, build]
  - [build, cf]
```

<Callout type="warn" title="Chú ý">Frontmatter sai thì build fail ồn ào.</Callout>

```chart title="Traffic 7 ngày" type="bar"
{"labels": ["T2","T3","T4"], "series": [{"name": "views", "values": [120, 200, 160]}]}
```

## Cài đặt

```term title="Deploy"
$ pnpm build
dist/ built trong 12s
```

```ts title="astro.config.mjs"
export default { output: 'static' };
```

## Các bước

<Steps>
<Step title="Viết bài">Tạo file `.mdx` trong `content/posts/`.</Step>
<Step title="Mở PR">Preview deploy tự động cho mọi PR.</Step>
<Step title="Merge main">Action build rồi deploy production.</Step>
</Steps>

## Kiến trúc phân phối

<Image src="/images/posts/deploy-architecture.svg" alt="Mô hình kiến trúc phân phối nội dung tĩnh và edge caching của Cloudflare Pages" caption="Hình 1: Mô hình phân phối nội dung tĩnh của AIVO trên hạ tầng Cloudflare Pages" />

## Số liệu

| Bước | Thời gian |
|------|-----------|
| Build | 12s |
| Deploy | 90s |

<Quote cite="tusgino">Deploy tĩnh là deploy ít bất ngờ nhất.</Quote>

<KeyTakeaways>
- Pipeline: push main → build → Cloudflare Pages.
- Frontmatter sai thì build fail ngay.
</KeyTakeaways>
