CircleCI Heroku Git 子树测试难题

CircleCI Heroku Git subtree testing conundrum

我正在开发一个 运行 后端 Rails 和前端 Angularjs 网络应用程序的项目。这两个应用程序都作为子目录位于主项目文件夹中,以保持对两者的检查,我一直在使用 git 子树推送将 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 应用程序中的测试,但不会部署,返回错误 "You need to run this command from the toplevel of the working tree."

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

这给了我错误 "Push rejected, no Cedar-supported app detected",因为 Heroku 没有检测到 Rails.

的构建包

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

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

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

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

这很有效,测试 rails 服务器应用程序,然后仅将此应用程序部署到 Heroku