主题
本指南展示如何构建一个 Flet 静态 Web 应用,并通过 GitHub Actions 把它部署到 GitHub Pages。
配置
- 打开你的仓库根目录。
- 如果不存在,创建此文件夹:
.github/workflows/ - 在该文件夹中创建一个工作流文件,例如:
.github/workflows/build-deploy.yml—— 必须使用.yml或.yaml文件扩展名。 - 把下方的 工作流配置 复制进该文件,并根据你的需要调整。
- 提交并推送到 GitHub。
- 打开 Actions 标签页来监控构建/部署进度。
::: dangerRepository settings 在 GitHub 中,打开 Settings → Pages,确保部署来源为 GitHub Actions。 :::
工作流
yaml
name: Web Build + Deploy to GitHub Pages [^1]
on: [^2]
push: [^3]
pull_request: [^4]
workflow_dispatch: [^5]
concurrency: [^6]
group: "pages" [^7]
cancel-in-progress: false [^8]
env: [^9]
UV_PYTHON: 3.12 [^10]
# https://flet.dev/docs/reference/environment-variables
FLET_CLI_NO_RICH_OUTPUT: 1 [^11]
jobs:
build:
name: Build web app
runs-on: ubuntu-latest [^12]
steps:
- name: Checkout repository
uses: actions/checkout@v4 [^13]
- name: Setup uv
uses: astral-sh/setup-uv@v6 [^14]
- name: Build app
shell: bash
run: | [^15]
uv run flet build web --yes --verbose --base-url ${GITHUB_REPOSITORY#*/} --route-url-strategy hash
- name: Upload Pages Artifact
uses: actions/upload-pages-artifact@v4.0.0 [^16]
with:
path: build/web [^17]
name: web-build-artifact [^18]
retention-days: 20 [^19]
deploy:
name: Deploy to GitHub Pages
if: github.event_name == 'push' && github.ref == 'refs/heads/main' [^20]
needs: build [^21]
runs-on: ubuntu-latest
permissions: [^22]
pages: write
id-token: write
environment: [^23]
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Setup Pages
uses: actions/configure-pages@v5 [^24]
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4.0.5 [^25]
with:
artifact_name: web-build-artifact [^26]- Actions 列表中显示的工作流名称。
- 工作流的触发块。
- 每次推送都会构建。
- pull request 更新时会构建。
- 允许从 Actions 标签页手动运行。
- GitHub Pages 部署的并发设置。
- 把部署放入同一个
pages并发组。 - 保留当前正在运行的部署,而不是取消它。
- 对所有 job 可用的环境变量。
uv使用的 Python 版本。- 通过禁用富文本输出,产生更干净的 CI 日志。
- 在 GitHub 托管的 Ubuntu 上运行构建 job。
- 检出仓库代码。文档见此处。
- 安装
uv。文档见此处。 - 构建静态 Web 输出并设置:
- 把静态文件作为 Pages 产物上传。文档见此处。
- 使用
build/web作为产物来源。 - 随后由部署步骤使用的产物名称。
- 保留产物 20 天。
- 仅在推送到
main时部署。PR 只构建不部署。按需调整。 - 部署前等待构建 job 成功。
- Pages 部署所需的权限。
- 把部署输出 URL 连接到 GitHub 环境。
- 配置 Pages 运行时。文档见此处。
- 把产物部署到 GitHub Pages。文档见此处。
- 必须与上传的产物名称一致。
可在此 处 查看实际效果。