zz.Pages 是 zz.NIC 官方提供的静态网页托管平台,对标 GitHub Pages。zz.NIC 很早就对外提供代码托管服务 zz.Git。但 zz.Git 没有接入默认 Pipeline Runner,也就无法自动执行构建任务。考虑到 zz.NIC 很多项目会在 zz.Git 上发布,而且项目需要自己的主页;同时,zz.NIC 也愿意为社区提供更加简便的 Web 托管平台,所以就推出了 zz.Pages 服务。
✏️Notezz.Pages 官网也是通过 zz.Pages 来发布的😄
在 GitHub Pages, 你需要创建一个yourname.github.io仓库,所以静态网页只能放在该仓库下面。开始你可以通过子域名yourname.github.io访问,也可以设置自己的域名。但一个仓库不能指定多个域名。如果你有多个项目,只能放在不同的目录或者分支,然后通过 yourname.github.io/project-name来访问。
这对普通用户来说不算是什么限制。每个人一个域名,所有相关项目都挂在自己的域名下。但如果你想给每个项目设置独立品牌就比较麻烦了。我想到的方案是注册多个 GitHub 账号🤦♂️
所以,在设计 zz.Pages 的时候,我就把域名跟个人身份解绑了。每个仓库都可以指定自己的个性域名!但是 zz.Pages 目前限制只能绑定 zz.ac 后缀的域名!
注册好 zz.ID 之后就可以登录 zz.Git。创建你的网站仓库,比如 zz.Pages 的仓库就是 https://git.zz.ac/zz/pages。
然后在仓库里添加网站内容同时设置 workflow。
假如你的仓库里已经有 index.html 了,对应最简单的 workflow 为路径推荐为 .forgejo/workflow/pages.yml):
name: Publish documentation
on:
push:
branches:
- main # 可选,指定仅对 main 分支开启构建
jobs:
publish:
runs-on: zz-pages # 必须指定为 zz-pages 来匹配专用 runner
steps:
# 必须:同步代码,也可以简写为 uses: actions/checkout@v6
- uses: https://data.forgejo.org/actions/checkout@v6
- name: Build and publish documentation
# 必须引用 pages action
uses: https://git.zz.ac/zz/pages@main
with:
# 必须指定个性域名
domain: example.zz.ac
# 必须指定构建命令
build-command: |
# 必须将构建结果输出到 ${ZZ_PAGES_OUTPUT} 指定的目录
cp index.html ${ZZ_PAGES_OUTPUT}/在推送代码到远端之前,你还需要设置两条 DNS 记录。
第一条,将个性域名指向git.zz.ac:
example.zz.ac. CNAME git.zz.ac.
第二条,授权 zz.Pages 为你的域名构建网站:
_zz-pages.example.zz.ac TXT "repo=alice/website"
这里的repo=alice/website表示将example.zz.ac域名跟 zz.Git 的仓库 alice/website 相关联。防止别人把自己的仓库绑定到你的域名上去!
域名生效后再推送代码。推送之后可以到 Actions 查看运行情况。workflow 执行完成之后就可以通过 https://example.zz.ac 访问你的网站了。
zz.Pages 使用 Nginx + ngx_http_acme_module 来自动签发 SSL 证书并提供 Web 服务。
我们以 zz.Pages 为例跟大家说明。
再给一个更加复杂但也更完整的示例,这也是 zz.Pages 自己的构建 workflow:
name: Publish documentation
on:
push:
branches:
- main # 可选,指定仅对 main 分支开启构建
paths: # 可选,只有符合下面规则的文件有变化才构建
- '**/*.md'
- '.forgejo/workflows/pages.yml'
jobs:
publish:
runs-on: zz-pages # 必须指定为 zz-pages 来匹配专用 runner
steps:
# 必须:同步代码,也可以简写为 uses: actions/checkout@v6
- uses: https://data.forgejo.org/actions/checkout@v6
# 可选,安装构建工具,默认构建镜像中装有 node 和 python,其他需要自已安装
- name: Install Pandoc
run: |
apt-get update
apt-get install --yes --no-install-recommends pandoc
# 开始构建网站
- name: Build and publish documentation
# 必须引用 pages action
uses: https://git.zz.ac/zz/pages@main
with:
# 必须指定绑定的域名
domain: pages.zz.ac
# 必须指定构建命令
# pages 使用 pandoc 将 md 转成 html
build-command: |
render() {
source_file="$1"
page_title="$2"
output_file="$3"
pandoc "$source_file" \
--from=gfm \
--to=html5 \
--standalone \
--template=.forgejo/pages/template.html \
--metadata "title=${page_title}" \
# 必须将构建结果输出到 ${ZZ_PAGES_OUTPUT} 指定的目录
--output="${ZZ_PAGES_OUTPUT}/${output_file}"
}
render README.md 'zz.Pages' index.html
render DEPLOYMENT.md 'zz.Pages deployment' deployment.htmlzz.Pages 是第一个使用该服务发页网页的项目。第一个外部用户是https://jonah.zz.ac/。快来发布你的网页吧🤗













