CloudFoundry 暂存错误 exec: "git": 在 $PATH 中找不到可执行文件
CloudFoundry staging error exec: "git": executable file not found in $PATH
在我的 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: 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 设置的相同构建包适用于某些空间,但不适用于其他空间。我曾尝试删除该应用程序,然后再次推送但未成功。我在所有空间和应用程序上启用了 ssh 访问 (diego)。
关于为什么 git 可执行文件在暂存期间不可用以及如何修复或修复它有什么想法吗?我想避免删除空格并重新创建它们的麻烦(和成本)。
经过大量摆弄环境变量后,我发现问题出在我的 manifest.yml
中的 MONGODB_CMD_PATH
环境变量上。似乎任何以 PATH
influences/overrides 结尾的环境变量都会导致暂存过程失败,因为所需的可执行文件不再位于系统路径上。
我遇到了同样的问题,接受的答案对我有用。以下内容是为了 Google 员工的利益:
我在清单中设置了 PYTHONPATH
变量。 CloudFoundry 正确设置了 PYTHONPATH
env var,但它也使用它来覆盖 PATH
变量。我的解决方法是将 PYTHONPATH
设置为 $PATH:/my/python/path
。虽然这会向 PATH
和 PYTHONPATH
添加无关的目录,但它会按预期运行。
这是 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
解决此问题的方法是为您的应用设置另一个环境变量:
PATH: /usr/local/bin:/usr/bin:/bin
这是最近记录的错误。参见 https://www.pivotaltracker.com/n/projects/1158420/stories/129773615
目前,您必须使用变通方法来删除或破坏 *PATH
个条目。
在我的 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: 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 设置的相同构建包适用于某些空间,但不适用于其他空间。我曾尝试删除该应用程序,然后再次推送但未成功。我在所有空间和应用程序上启用了 ssh 访问 (diego)。
关于为什么 git 可执行文件在暂存期间不可用以及如何修复或修复它有什么想法吗?我想避免删除空格并重新创建它们的麻烦(和成本)。
经过大量摆弄环境变量后,我发现问题出在我的 manifest.yml
中的 MONGODB_CMD_PATH
环境变量上。似乎任何以 PATH
influences/overrides 结尾的环境变量都会导致暂存过程失败,因为所需的可执行文件不再位于系统路径上。
我遇到了同样的问题,接受的答案对我有用。以下内容是为了 Google 员工的利益:
我在清单中设置了 PYTHONPATH
变量。 CloudFoundry 正确设置了 PYTHONPATH
env var,但它也使用它来覆盖 PATH
变量。我的解决方法是将 PYTHONPATH
设置为 $PATH:/my/python/path
。虽然这会向 PATH
和 PYTHONPATH
添加无关的目录,但它会按预期运行。
这是 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
解决此问题的方法是为您的应用设置另一个环境变量:
PATH: /usr/local/bin:/usr/bin:/bin
这是最近记录的错误。参见 https://www.pivotaltracker.com/n/projects/1158420/stories/129773615
目前,您必须使用变通方法来删除或破坏 *PATH
个条目。