Continuous integration Travis CI部署拉请求

Continuous integration Travis CI部署拉请求,continuous-integration,travis-ci,Continuous Integration,Travis Ci,在寻找这方面的信息时遇到了一些困难,不确定我会如何搜索它,所以我想我会在这里抛出一个问题 Travis上的GitHub pull请求已经准备就绪,但是……我对将每个PR部署到一个独立的URL(staging.example.com/pull-request-01或类似的东西)感兴趣。这可能是非常简单的,并且在特拉维斯的文档中有概述,但我很难找到它 有人有这样的CI设置吗 想出了一个很酷的方法!这里有一个非常自解释的要点,可以帮助尝试在Ember项目中执行此操作的人,它也可能会通知任何其他代码堆栈

在寻找这方面的信息时遇到了一些困难,不确定我会如何搜索它,所以我想我会在这里抛出一个问题

Travis上的GitHub pull请求已经准备就绪,但是……我对将每个PR部署到一个独立的URL(staging.example.com/pull-request-01或类似的东西)感兴趣。这可能是非常简单的,并且在特拉维斯的文档中有概述,但我很难找到它


有人有这样的CI设置吗

想出了一个很酷的方法!这里有一个非常自解释的要点,可以帮助尝试在Ember项目中执行此操作的人,它也可能会通知任何其他代码堆栈


使用和也可以这样做。如果您使用的是Docker,那么您也可以使用我创建的Docker。

Travis CI的一些文档,我发现这些文档可能有助于整理完整答案

TLD 加密变量仅可用于从同一存储库发出的请求。需要测试触发Travis CI的环境变量和Git交互

script:
  - if [ "$TRAVIS_PULL_REQUEST" == true ]; then bash ./travis/run_on_pull_requests; fi

一旦登录到Travis CI命令行界面,加密环境变量看起来有点像

travis encrypt -r owner/project --pro SOMEVAR="secretvalue"
。。。然后将上面的输出(
secure:“……加密数据……”
)复制到项目的
\u travis.yml
文件中


我没有看到任何关于DigitalOcean的东西,但是没有多少东西可以阻止任何人为这些东西编写自己的脚本,而且对于S3部署来说,Travis CI似乎有一些现成的魔法可以用来阅读(上面的第三个链接)


你的问题没有更多的答案了 有人有这样的CI设置吗

我不。。。然而但我已经研究了Travis CI文档一段时间,将来可能会编辑此答案,以包含更多参考资料

我对将每个PR部署到一个独立的URL(staging.example.com/pull-request-01或类似的东西)很感兴趣。这可能非常简单,并且在Travis的文档中有概述,但我很难找到它

除了前面建议的阅读材料之外,您可能还需要在
运行on\u pull\u请求
脚本中做一些定制工作

此时我能想到的最简单的方法是解析提交散列,这样URL看起来有点像
staging.example.com/pull-request-4d3adbe3f

关于如何在Bash脚本中构造这样一个字符串的提示

printf 'pull-request-%s' "$(git rev-parse --short HEAD)"


_url="staging.example.com/pull-request-$(git rev-parse --short HEAD)"
我建议使用提交散列路由,因为这样一来,任何有权打开请求(来自给定存储库)的人都有一个可预测的路由来在其端构建URL



考虑让我们都知道您是否陷入困境或完全解决问题。

您打算使用哪个部署提供商?最有可能是Digital Ocean或s3。可能是s3,因为它看起来比它好一点(容易一点)。但是,可以使用类似Heroku的东西作为临时服务器。。。
printf 'pull-request-%s' "$(git rev-parse --short HEAD)"


_url="staging.example.com/pull-request-$(git rev-parse --short HEAD)"