【问题标题】:Deploy Netlify site for draft previews only仅为草稿预览部署 Netlify 站点
【发布时间】:2019-01-07 23:01:16
【问题描述】:

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

编辑:工作流程

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

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

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

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

【问题讨论】:

    标签: r bookdown netlify


    【解决方案1】:

    免责声明:我为 Netlify 工作

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

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

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

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

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

    【讨论】:

    • 感谢您的建议。传入的 webhook 看起来更有希望,尽管看起来为站点构建的 HTML 文件需要位于 GitHub 上的 git 分支中,以便 Netlify 部署它们。对于这个特定项目的拉取请求,我希望 Travis 可以构建这些 HTML 文件并将它们部署到 Netlify,而无需在任何地方提交或推送它们。
    • 另外,请参阅我的编辑详细说明构建工作流程。我不是专业的 Web 开发人员或开发运维专家,所以我可能会误解反馈,除非我准确地说出我的意思。
    • 啊,您也可以这样做,@landau - 来自 travis,您可以使用 netlifyctl 向我们发送预建站点。如果您将其用作netliftctl deploy -d,那么您可以使它们“草稿”部署仅用于预览,然后您可以在验证后选择其中一个来启用。这消除了将部署通知直接从 netlify 放入 github 的能力。该过程也不是“即时”的(必须传输和处理文件,尽管完成后,部署是几秒钟后)
    • 这更接近我的想法。我想下次有时间再试一次。
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2018-11-21
    • 2019-10-18
    相关资源
    最近更新 更多