CloudFoundry staging error exec:" git":在$ PATH中找不到可执行文件

时间:2016-07-21 14:08:21

标签: git cloudfoundry swisscomdev

在我的6个Swisscom CloudFoundry空间中的3个中,在使用相同(自定义)构建包部署时出现以下错误。

Starting app my-app-name in org my-org /               space my-space as user@company.com...
Creating container
Successfully created container
Downloading app package...
Downloaded app package (26M)
Staging...
exec: "git": executable file not found in $PATH
Exit status 1
Staging failed: Exited with status 1

FAILED
StagingError

我在manifest.yml中使用以下buildpack:

---
buildpack: https://github.com/shiftcode/java-buildpack-mongodb
domain: scapp.io
path: target/my-app-name.zip
disk_quota: 1024M
domains:
  - scapp.io
services:
 - my-service-one
 - my-service-two
 ...

env:
   JBP_CONFIG_OPEN_JDK_JRE : '[jre: {version: 1.8.0_+}, memory_calculator: {memory_heuristics: {heap: 35, metaspace: 30, stack: 5, native: 30}}]'
   MONGO_DB_VERSION : '3.2.0'
   MONGODB_CMD_PATH : '.mongo/bin/'
   MONGODB_MAX_POOLSIZE : '1'
   MALLOC_ARENA_MAX : '2'
   MALLOC_MMAP_THRESHOLD_ : '131072'
   MALLOC_TRIM_THRESHOLD_ : '131072'
   MALLOC_TOP_PAD_ : '131072'
   MALLOC_MMAP_MAX_ : '65536'

# app specific configuration
applications:
- name: my-app-name-development
  memory: 512M
  instances: 2
  host: my-app-name-development

- name: my-app-name-staging
  memory: 512M
  instances: 2
  host: my-app-name-staging

这个buildpack通过添加mongodb安装来扩展普通的java-buildpack(我们使用mongodump命令进行备份)。具有相同代码和相同manifest.yml设置的相同buildpack适用于某些空间但不适用于其他空间。我尝试删除应用程序之前再次推动没有成功。我在所有空间和应用程序上启用了ssh access(diego)。

关于为什么git可执行文件在登台时无法使用以及如何修复或修复它的任何想法?我想避免删除空格并重新创建它们的麻烦(和成本)。

4 个答案:

答案 0 :(得分:2)

这是Cloud Foundry 0.7.0及更早版本中的garden-runc容器化技术的问题。正如接受的答案推测的那样,如果env变量包含字符串“PATH”,Garden中就会出现错误设置PATH的错误。

自Garden-runc发布0.8.0以来,这已得到解决。你可以在这里找到相关的故事:

https://www.pivotaltracker.com/story/show/129773615

以及解决此问题的提交:

https://github.com/cloudfoundry/guardian/commit/e191b2ca8365f44c812cb8feb70c722391886063

此问题的解决方法是为您的应用设置另一个env变量:

PATH: /usr/local/bin:/usr/bin:/bin

答案 1 :(得分:1)

这是最近登录的错误。见https://www.pivotaltracker.com/n/projects/1158420/stories/129773615

目前,您必须使用变通方法来删除或修改*PATH个条目。

答案 2 :(得分:0)

经过大量的env变量摆弄后,我发现问题出在我MONGODB_CMD_PATH的{​​{1}} env变量上。似乎任何以manifest.yml结尾的env变量都会影响/覆盖导致登台过程失败的PATH env,因为所需的可执行文件不再位于系统路径上。

答案 3 :(得分:0)

我遇到了同样的问题,接受的答案对我有用。以下是Google员工的利益:

我在清单中设置了PYTHONPATH变量。 CloudFoundry正确设置了PYTHONPATH env var,但它也用它来覆盖PATH变量。我的解决方法是将PYTHONPATH设置为$PATH:/my/python/path。虽然这会为PATH PYTHONPATH添加无关的目录,但它会按预期运行。