首页 > 解决方案 > 仅为草稿预览部署 Netlify 站点

问题描述

我正在使用 Travis CI 从这个bookdownGitHub 存储库构建一个站点并部署到gh-pages分支。这种方法最有效,但我也想使用 Netlify 显示拉取请求的草稿预览。到目前为止,Netlify 部署通知正在对传入的源文件做出反应,而不是 Travis 正在构建的 HTML 文件。Netlify 预览版来得太早,页面是空白的。

在此处输入图像描述

编辑:工作流程

在这个特定的项目中,我们有一堆源文件,它们最终会为网站生成 HTML 文件。master分支只有源代码,分支gh-pages只有 HTML。我正在使用 Travis 使用源代码编译 HTML master,然后将其推送到gh-pages. 这对我自己的开发非常有用,因为它可以自动化 10 分钟的站点生成过程。

我希望使用 Netlify 为来自开源社区的合作者和外部志愿者的拉取请求启用站点预览。我画的东西如下。

  1. 外部开发人员从https://github.com/ropenscilabs/drake-manual的主分支分叉源并进行一些更改。
  2. 然后,开发人员提交一个拉取请求,将更改的源文件合并到上游主分支中。在此过程中不一定会生成 HTML。
  3. Travis CI 从 fork 构建 HTML 文件,但由于拉取请求尚未获得批准,它不会提交gh-pages或推送到 GitHub。相反,它将 HTML 文件直接发送到 Netlify。
  4. Netlify 接收 HTML,生成预览,并使用 incominb webhook 通知 GitHub 拉取请求。

我意识到对 Travis 环境变量的安全限制使部分原因变得不可能,这是正确的。但这是我最终希望实现的那种自动化部署。

标签: rbookdownnetlify

解决方案


免责声明:我为 Netlify 工作

Netlify 的构建通知只能反映 Netlify 的构建 - 如果其他构建并行运行,我们将无法在我们的通知中考虑 Travis 的状态。也许您可以重新配置我们的 CI,而不是使用 github 的基于提交的 webhook 来通知 Netlify 进行构建,而是使用来自 Travis 的一个在 Netlify 上启动构建?然后 Netlify 的构建将在他们的构建结束后开始。为此,您可以从 GitHub 中删除构建钩子,而是使用传入的 webhook,您可以为每个分支配置一个,尽管您可能需要 Travis 的一些逻辑来决定如果您使用多个分支时通知哪个。您可以通过 API 以编程方式配置它们(https://open-api.netlify.com/#!/default/createHookBySiteId) 但我们很乐意在帮助台中提供有关更逐步 API 使用的建议

如果这很麻烦(例如,您有很多短期使用的分支),那么我知道这可能不是一个很好的解决方案。在这种情况下,我可能会在社交上解决问题,只是训练我的开发团队在 Travis 检查完成之前不要查看部署预览:)

由于用例的发展,我在评论中给出了更好的答案,我将在这里描述:

您可以选择部署 Travis 使用我们的命令行实用程序netlifyctl构建的文件。这会获取您网站的副本并将文件发送给我们,并且是可编写脚本的。您可以选择立即发布这些结果(“通过 Travis 的测试,我们已准备好上线”)netlifyctl deploy或选择发布一个草稿部署,您可以在部署预览 URL ( https://hash--sitename ) 上浏览该部署草稿.netlify.com)使用netlifyctl deploy -d.

这并没有解决关于提交状态通知的最初担忧,因为我们只发送那些用于我们构建的 git 支持的部署,但它确实允许您发布已知良好的部署并netlifyctl deploy输出该 URL ( https://hash- -sitename.netlify.com)运行时,这样您就可以用它“做某事”,例如制作一个通知,该通知也是从构建+发送到 netlify 的过程中生成的,例如 slack 或电子邮件。


推荐阅读