3

我正在开发一个在前端运行 Rails 后端和 Angularjs Web 应用程序的项目。这两个应用程序都在一个主项目文件夹中作为子目录来检查这两个,我一直在使用 git subtree push 将 Rails 应用程序从根文件夹部署到 Heroku。

我现在正在寻找使用 CircleCI 并且在使用这个项目结构和让 CircleCI 运行正确的测试并且只将 Rails 应用程序部署到 Heroku 时遇到了困难。

我在 circle.yml 中尝试了以下操作

general:
  build_dir: server
deployment:
  staging:
    branch: staging
    commands:
      - git subtree push --prefix server git@heroku.com:app-name-staging.git master

此配置允许我运行 Rails 应用程序中的测试,但不会部署,返回错误“您需要从工作树的顶层运行此命令”。

general:
  build_dir: server
deployment:
  staging:
    branch: staging
    commands:
      - git push git@heroku.com:app-name-staging.git master

这给了我错误“推送被拒绝,没有检测到 Cedar 支持的应用程序”,因为 Heroku 没有检测到 Rails 的 buildpack。

我还尝试在根文件夹中放置一个简单的 shell 脚本测试并从 circle.yml 中删除 build_dir,它将通过测试并将 Rails 应用程序的子树推送到 Heroku,但不会在轨道应用程序。

我有两种选择,一种是运行 Rails 应用程序的测试,但不会只将 Rails 应用程序部署到 Heroku,第二种是在根目录中运行测试,但不在实际的 Rails 应用程序上运行,但会正确部署。我正在寻找一种方法来结合这两个选项,以便我能够运行 Rails 应用程序的测试,然后只将 Rails 应用程序部署到 Heroku。

4

1 回答 1

2

在联系了 CircleCi 的人后,他们帮助我找出了正确的命令,即

general:
  build_dir: server
deployment:
  staging:
    branch: staging
    commands:
      - cd .. && git push git@heroku.com:app-name-staging.git master

这就像一个魅力,测试 Rails 服务器应用程序,然后只部署这个应用程序到 Heroku

于 2015-05-13T15:21:30.983 回答