源代码管理

从您已在使用的代码库中部署 — 九个可供放置的位置

连接您工作的 GitHub 或 GitLab 帐户,并直接从分支进行部署:部署至 Cloudflare Pages、GitHub Pages、GitLab Pages、Netlify、Vercel、Render、Azure Static Web Apps 或 AWS Amplify — 或者部署到我们自己的托管服务上,在其中代码仓库和网站文件将在双向保持同步。每个连接都会显示其所需的权限,在存储之前会根据提供商的 API 进行检查,并保存在 Vault 中。您也可以使用 GitHub 或 GitLab 登录。

从代码仓库沿流水线移至正式上线网站的提交。
  • GitHub + GitLab关联您已有的账户
  • 9 个目的地八个边缘主机,加上我们自己的集群
  • 双向同步每个站点,每行
  • 已存储在 Vault在输入时已验证,绝不记录在日志中
  • 令牌在存储前已检查权限过大的令牌绝不会合入
  • 推送以部署签名已校验,且可选
  • 您的分支,您的构建发布目录或运行您自己的 CI
  • 完全断开连接我们准确地移除了所创建的钩子

连接一次,了解您同意的内容

连接是您交给其他人的一种凭据。我们的系统会在您建立连接之前说明所需的内容,在存储之前验证其能够正常运行,并且可以从任意一端将其撤回。

特权,预先明确说明

在您创建令牌之前,我们会告知您它需要具备哪些功能以及原因。不会因为更容易申请而设置宽泛的权限范围,也不会在事后才发现我们要的比工作所需的更多。

经服务商核实,而非轻信接纳

在存储您的令牌之前,我们会使用它调用提供商自己的 API。错误、过期或作用域不正确的令牌会在表单处被拒绝,而不是被接受、显示为正常状态,却在第一次实际部署时失败。

存储在 Vault 中,别无他处

不在我们的代码中,不在环境文件中,不在日志中,也不在命令行中。在使用它的瞬间由使用它的工作负载解析。

多个账户,按网站选择

连接一个个人账户和一个组织账户,或两个组织账户。每个站点可选择从哪一个账户进行部署,因此客户的代码仓库与您自己的代码仓库绝不会共用凭据。

仓库可以落脚的九个地方

八个受管边缘主机以及我们自己的设备集群。目的地是网站的属性,而非连接的属性,因此同一个代码仓库可以将一个分支发布到 Pages 主机,而另一个网站可以在我们的硬件上运行。

Cloudflare Pages

无限制带宽,允许商业用途,且可在通常托管您 DNS 区域的同一提供商处处理顶端域名(apex domain)。正是出于这些原因,它是我们的首选目的地。

Cloudflare Pages 托管 →

GitHub Pages

直接从代码现有的代码库中发布。在 Footprint-Free 行中进行了标记,因为共享的 github.io 基础架构本身就是一种痕迹。

GitHub Pages 托管 →

GitLab Pages、Netlify、Vercel 及其他

GitLab Pages、Netlify、Vercel、Render、Azure Static Web Apps 和 AWS Amplify 都是您可以将站点指向的目的地,并且具有相同的连接和相同的部署历史记录。

静态网站托管 →

我们自己的托管式主机

一个完整的应用程序,而非构建好的包——WordPress、PHP、Node。这是获得双向同步的目标位置,使服务器与分支上的文件保持一致。

托管型主机 →

位于他人边缘网络上的站点

发布到非我们所有的主机上的网站仍然会消耗配额,并且仍会与您运行的其他所有内容一起,显示在其仪表板中,包含其部署、正常运行时间和 SEO 数据。

外部站点配额 →

或在此处编辑

浏览器内编辑器所处理的文件与双向同步推送的文件相同,因此从仪表板进行的快速修复会成为您分支上的提交,而不会变成日后无人能找到的更改。

网页编辑器 →

双向同步

您的代码仓库与线上网站,步调一致

开启此功能后,网站自身的文件将被提交回您的分支,而该分支上的提交也会同步回网站。它适用于我们托管的每个网站以及每条产线——唯一的要求是底层机器能够针对其文件运行 Git,这是直接向服务器查询确认的,而非根据套餐方案推断。

您可以选择同步哪个目录,因为 WordPress 客户希望跟踪的是其主题,而不是四万个核心文件。在您开启之前,它一直处于关闭状态:启用同步是对他人仓库所做的决定,迁移绝不能替您做出该决定。

  • 我们硬件上的编辑会成为您分支上的提交
  • 您分支上的提交会返回到站点
  • 仅同步单个目录(主题、插件),而非整个文档根目录
  • 默认处于关闭状态,包括每个已存在的站点
在编辑器中打开的文件,同时该文件在代码库中显示为一次提交。

发布目录,或让您自己的 CI 构建它

共有两种模式,区别在于构建运行的位置。两者最终殊途同归:我们提取并发布一个引用,同时将提交记录在相应的部署中。

  • 发布模式按原样获取您的分支,并发布您指定的目录——留空表示存储库根目录。
  • CI 模式会在您的提供商专属流水线中运行您的构建命令,并将输出提交到一个单独的发布分支,我们像获取任何其他 ref 一样获取该分支。
  • 部署所发布的来源分支始终会明确命名,绝非“默认分支”——默认分支可能会在您不知情的情况下发生更改,而无法说明发布了哪个分支的历史记录根本算不上历史记录。
  • 自动部署默认处于开启状态,并且可以在不移除 Webhook 的情况下关闭,以便您可以在允许其生效之前观察交付的到达情况。
  • 每次部署都会记录其提交、结果和时间,并在后台运行 — 构建完成后页面将自动更新。
  • 断开连接只会根据其 ID 准确删除我们创建的 Webhook,不会删除您存储库中的其他任何内容。

从代码库到上线网站

  1. 关联账户

    GitHub 或 GitLab,位于“连接”下。权限会在您生成令牌之前列出,并在存储之前与提供商进行核对。

  2. 将站点指向代码库

    所有者、代码库、分支,以及我们是发布目录还是获取您的 CI 构建的内容。在此过程中,我们会注册推送 Webhook。

  3. 推,或按下按钮

    推送到指定分支将启动部署,或者您也可以从站点的“部署”标签页按需进行部署。构建将在后台运行。

  4. 观看它,如果您愿意,可以重新同步

    部署历史记录会显示发布的内容和时间。开启双向同步后,您在此处所做的编辑将作为提交返回到您的分支中。

出现问题时

“已连接但从未送达”是我们确实会告知您的状态

一个看似正常却接收不到任何内容的代码仓库连接是典型的静默故障——权限范围错误的令牌、在服务商处被拦截的推送,或是被人为移除的 Webhook。这在其他任何界面上都是不可见的,因此代码仓库卡片直接呈现了此信息:服务商最近一次向我们推送的时间,以及返回的具体内容。

在对其进行处理之前,交付内容会经过签名检查,使用的是每个提供商自有的机制,而非我们预想中适用于所有提供商的通用方案。未通过验证的交付将被拒绝并予以记录,而不会被悄无声息地忽略。

  • 卡片上的最后投递时间和消息
  • 显示为“从未送达”,而非留空
  • 在运行任何内容之前,已按提供商验证签名
  • 我们创建的钩子会在您断开连接时根据 ID 移除
Webhook 投递正在到达,并在触发任何操作前接受检查。

身份

通过 GitHub 或 GitLab 登录 — 或 Google,或 Microsoft

除了电子邮件地址和密码之外,您还可以使用 GitHub、GitLab、Google 或 Microsoft 登录您的 Zinn Digital® 账户。身份验证层负责握手流程;我们绝不会看到您的第三方提供商密码,而且将社交账户关联到现有的 Zinn® 账户仍须通过电子邮件进行确认。

使用 GitHub 登录与关联 GitHub 进行部署是独立的决定,也是不同的凭据。执行其中一项不会执行另一项,移除其中一项也不会移除另一项。

  • 通过 GitHub、GitLab、Google 和 Microsoft 登录
  • 同一账户上的通行密钥和双重认证
  • 登录凭据与部署凭据相互独立
面向您团队的委派访问权限
多个人通过不同的提供商登录同一个帐户。

常见问题

我可以连接哪些源代码管理提供商?

GitHub 和 GitLab。连接您已在使用的账户,我们即可从其代码库进行部署、为其注册推送 Webhook,并且 — 如果您需要 — 还可以将您网站的文件反向同步回去。两者均通过相同的关联账户接口运行,因此以下内容对两者皆适用。

我可以使用 GitHub 或 GitLab 登录吗?

是的,也可以使用 Google 或 Microsoft。除了电子邮件地址和密码之外,您还可以使用这四种方式中的任何一种登录您的 Zinn Digital® 帐户。身份层负责处理握手,我们绝不会看到您的提供商密码。使用 GitHub 登录与连接 GitHub 进行部署是两回事——您可以选择其中之一、两者都选,或两者都不选。

我可以在哪里部署代码仓库?

部署至 Cloudflare Pages、GitHub Pages、GitLab Pages、Netlify、Vercel、Render、Azure Static Web Apps 或 AWS Amplify 以构建静态或已构建的网站 — 亦可部署至我们自有的托管服务,代码仓库与网站文件将在双向保持同步。由您选择网站的目标平台;无论哪种方式,代码仓库的连接都是相同的。

您可以帮我建站吗,还是必须已经提前建好?

两者皆可。在发布模式下,我们直接采用该分支并发布您指定的目录。在 CI 模式下,您的提供商自带的流水线会运行您的构建命令,并将输出提交到一个单独的发布分支,随后我们会像提取任何其他 ref 一样提取该分支。第二种方式将您的构建保留在您自己的 CI 中,您的机密信息和缓存也已妥善保存于此。

推送会自动部署吗?

默认情况下是的——我们在代码仓库中注册一个网络钩子(webhook),向您指定分支的推送会启动一次部署。您可以关闭该功能但保留网络钩子,这比听起来更有用:发送记录仍会被记录下来,因此您可以在允许我们对其采取行动之前观察推送的到达情况。

什么是双向同步?

在我们硬件上所做的修改将成为您分支上的提交,而您分支上的提交会同步回网站。在您将其开启之前,该功能始终处于关闭状态,因为开启它属于涉及他人代码库的决定,我们不会替您做主。您可以选择同步哪个目录——通常是主题或插件,而不是四万个 WordPress 核心文件。

如果双方都发生了更改会怎样?

没有任何内容会被覆盖,也没有任何内容会被推送。同步会停止,通知您该分支已推进并超过了我们所基于的提交,并询问您希望保留哪一边——保留代码仓库,还是保留网站。一个从未同步过且指向已有提交的分支的网站也是一种独立的状态,系统会主动询问,而不是去猜测哪一边才是正确的事实。

我的访问令牌是如何受到保护的?

我们会在您创建连接之前向您显示该连接所需的权限,在输入时根据提供商自有的 API 检查令牌 — 因此无效或权限范围错误的令牌绝不会被存储 — 然后才会将其写入 Vault。它绝不会接触我们的代码、日志、环境文件或命令行。您可以随时在提供商处撤销它,或在此处移除连接。

我如何判断您是否确实收到了我的推送?

代码库卡片会显示提供商上次向我们传送的时间及其内容。“从未传送”是该屏幕上最有用的单项诊断信息,因为“已连接但从未传送”正是作用域错误的令牌或被阻止的传送所呈现的状态——且在其他任何地方都不可见。在根据传送内容采取行动之前,每次传送均会经过签名检查。

我可以在 Footprint-Free 系列上使用 Pages 部署吗?

该功能已被提供且已被标记。GitHub Pages 和 GitLab Pages 共享提供商的基础设施以及公共的 github.io 和 gitlab.io 主机名,而这构成了足迹(footprint)——这正是该产品线所要规避的问题。为了建立零足迹网络,请改用隔离的主机进行部署。在其他所有场景下,Pages 都是一流的选择。

为什么我必须明确选择 Vercel?

因为其免费套餐仅授权用于非商业用途。在安全的情况下,我们会根据您已关联的账户推断目标位置,而 Vercel 被特意排除在此推断之外——关联账户绝不能悄悄地将商业网站放置在其许可不允许的地方。选择它,它的工作方式与其他服务完全相同。

我可以查看部署了哪些内容以及部署时间吗?

是的。每次部署都会记录其发布的提交、运行时间以及完成情况,站点的“部署”选项卡会在其实时网址旁显示历史记录。部署在后台运行,因此页面会在构建完成时自动更新,无需您对着加载图标苦苦等待。

从您的代码库部署

开启无需信用卡的 14 天免费试用,连接 GitHub 或 GitLab,并将站点指向分支。发布到边缘主机,或发布到我们自己的主机上,文件可双向同步。

免费开始