部署Netlify网站仅用于草稿预览

时间:2018-07-31 14:01:57

标签: r bookdown netlify

我正在使用Travis CI从this bookdown GitHub repo建立站点并部署到gh-pages分支。这种方法通常可行,但是我也想使用Netlify来显示拉取请求的预览草稿。到目前为止,Netlify部署通知正在响应传入的源文件,而不是Travis正在构建的HTML文件。 Netlify预览版为时过早,页面空白。

enter image description here

编辑:工作流程

在此specific project中,我们有一堆源文件,这些源文件最终为站点生成HTML文件。 master分支仅具有源,而gh-pages分支仅具有HTML。我正在使用Travis使用master上的源代码编译HTML,然后将其推送到gh-pages。这对我自己的开发非常有用,因为它可以自动完成10分钟的网站生成过程。

我希望使用Netlify来使来自协作者和开放源社区的外部志愿者的拉动请求的站点预览成为可能。我看到了类似下面的图片。

  1. 外部开发人员从https://github.com/ropenscilabs/drake-manual的master分支派生源代码并进行一些更改。
  2. 然后,开发人员提交请求请求,以将更改后的源文件合并到上游master分支中。 HTML不一定是在此过程中生成的。
  3. Travis CI从fork生成HTML文件,但是由于请求尚未获得批准,因此它不会提交到gh-pages或推送到GitHub。而是将HTML文件直接发送到Netlify。
  4. Netlify接收HTML,生成预览并通过incominb Webhook通知GitHub pull请求。

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

1 个答案:

答案 0 :(得分:2)

免责声明:我为Netlify工作

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

中的API逐步使用提供建议

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

由于用例不断发展,并且我在注释中给出了更好的答案,因此我将在此处进行描述:

您可以选择使用命令行实用程序netlifyctl部署Travis构建的文件。这将获取您网站的副本并将文件发送给我们,并且可以编写脚本。您可以选择以netlifyctl deploy的形式立即发布这些结果(“测试已通过Travis,我们已经准备就绪,可以上线了”),也可以选择发布可以在部署预览URL({{3 }})使用netlifyctl deploy -d

这并没有解决最初关于提交状态通知的问题,因为我们仅发送那些针对我们构建的git支持的部署的通知,但是它确实允许您发布已知良好的部署,并且netlifyctl deploy确实输出了运行时的URL(https://hash--sitename.netlify.com),以便您可以“执行某项操作”,例如制作通知,该通知也是从构建+发送到netlify的过程中生成的,例如松弛或电子邮件。