Travis CI部署Pull请求

时间:2017-12-08 22:02:33

标签: continuous-integration travis-ci

在找到这方面的信息时遇到一些麻烦,不确定我是如何搜索它的,所以我想在这里提出一个问题...

对Travis的GitHub拉取请求已经准备好开箱即用,但是......我有兴趣将每个PR部署到一个独立的URL(staging.example.com/pull-request-01或类似的东西......)。这可能是超级简单的,并在Travis' docs,但我找不到它。

有人有这样的CI设置吗?

3 个答案:

答案 0 :(得分:0)

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

https://gist.github.com/ChristopherJohnson25/7350169203a2ecfa9193785bede52bd3

答案 1 :(得分:0)

Heroku Review AppsGitlab Review Apps也可以这样做。如果您使用的是Docker,则还可以使用我构建的this tool

答案 2 :(得分:0)

我可以发现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: ".... encrypted data ....")的输出复制到项目的_travis.yml文件中。


对于DigitalOcean,我什么都没看到,但是并没有阻止任何人编写自己的脚本来进行此类事情,对于S3部署来说,Travis CI看起来已经有一些现成的 magics 要阅读的内容(上面的第三个链接)...

deploy:
  provider: s3
  access_key_id: "YOUR AWS ACCESS KEY"
  secret_access_key: "YOUR AWS SECRET KEY"
  bucket: "S3 Bucket"
  skip_cleanup: true
  on:
    branch: release
    condition: $MY_ENV = super_awesome

您的问题没有更多的答案

  
    

有人有这样的CI设置吗?

  

我还没有。但是一段时间以来,我一直在浏览Travis CI文档,并且将来可能会编辑此答案以包含更多参考。

  
    

我有兴趣将每个PR部署到一个独立的URL(staging.example.com/pull-request-01之类的东西。)这可能是非常简单的,并在Travis的文档中进行了概述,但是我找不到它。

  

除了先前建议的阅读材料之外,您可能还想在run_on_pull_requests脚本中进行一些自定义操作。

我现在可以想到的最简单的方法是解析提交哈希,以使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。


考虑让所有人知道您是被卡住还是完全解决。