GitHub页面 - 预发布站点

8
我有一个GitHub Pages网站。 我想在另一个分支上实现一些临时环境。
所以基本上,我想将临时环境分支托管在由GitHub Pages构建的另一个DNS上。
有没有方法可以在不在本地进行构建的情况下完成此操作?
我曾经看到过这里那里的评论提到gh-pages分支,但是没有找到任何相关的文档。

这个回答解决了你的问题吗?在Github Pages上创建网站的暂存和生产版本 - Diogo Rocha
2个回答

4

我在一个独立的GitHub仓库中进行暂存,而不是在单独的分支中进行。

在同一个仓库内维护具有单独的暂存配置、 暂存 CNAME 和DNS文件以及专门针对暂存的功能的单独分支会比较麻烦。独立的仓库是一个更简单的解决方案,因为它保持开发和暂存是不同的环境的理念。

所以有两个GitHub仓库:一个主要仓库和一个暂存仓库。GitHub Pages设置允许单独的DNS设置。由于我有一个自定义域名,主要仓库设置为www.customDomain.com,而暂存仓库设置为staging.customDomain.com

这是我的设置,使用 MainStaging 仓库名称。 Staging 被设置为 Main 的远程,而 StagingMain 的精确副本(除了配置、 CNAME、暂存特定功能等)。

GitHub Pages 使用 Main 中的 master 分支构建站点。我在 Main 中使用一个 dev 分支来存储新代码和功能。开发工作是在从 dev 衍生的特性分支中进行的,并合并回到 dev 中。当我想要在 Staging 中测试功能时,我会进入 Staging 并拉取 Main:dev 分支的最新版本。在 Staging 中完成测试后,我将把 Main:dev 拉到 Main:master

如果这有助于您理解设置,请查看以下图表。希望这回答了您的问题。

 Main        Staging
  |   |       |
  |   |       |
  |\  |       |
  | \ |       |
  |  \|       |
  |   |       |
  |   |       |
  |   |\      |
  |   | \     |
  |   |  \    |
  |   |   \   |
  |   |    \  |
  |   |     \ |
  |   |      \|
  |   |       |
  |   |       |
  |   |      /|
  |   |     / |
  |   |    /  |
  |   |   /   |
  |   |  /    |
  |   | /     |
  |   |/      |
  |   |      Staging:master
  |   |\
  |   | \
  |   |  \
  |   |   |
  |   |   |
  |   |  /feature
  |   | /
  |   |/
  |   |
  |  /dev
  | /
  |/ 
  |
Main:master

嘿,谢谢你的回答DC!我想后续问题是“如何让GitHub Pages构建另一个存储库/分支”? 我的理解是它只能构建<用户名>.github.io... - Vincent-Philippe Lauzon
1
任何仓库都可以使用GitHub Pages。我有一个名为UserName.github.io的主要仓库和一个名为Staging的暂存仓库。两者都是从该仓库的master分支构建的。 - DC.Azndj

0

我的回答仅适用于您说您正在使用单独的DNS并拥有自己的托管服务(我正在使用Hostinger)。

据我所知,如果不使用外部DNS,则维护多个环境(dev、staing等)的唯一方法是保持单独的存储库,并可能使用env名称后缀进行命名。我不喜欢这种方法,但我认为这是偏好而不是性能\可维护性问题。

以下是我的做法:

  1. 按照惯例,GitHub 页面域名是我的“测试”阶段,托管域名是我的“生产”阶段。
  2. 对于“测试”,设置一个由推送到分支 dev 触发的 GitHub Action 工作流。该工作流的输出 部署到分支 gh-pages,遵循 GitHub Pages 惯例。记得将你的 index.htmlbasehref 设置为与你的仓库名称相匹配。
  3. 对于“生产”,克隆上述工作流。将触发事件设置为从 master 推送。接下来,创建第三个输出分支,我称之为 domain。最后,我使用我的托管服务的“自动部署”功能,这只是他们提供的一个 Web 钩子,触发从 GitHub 复制文件到托管服务自己的存储。在幕后,它只是一个工作流步骤,触发一个 curl 命令到 webhooks.hostinger.com/deploy/{some-random-guid}

祝好运 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接