【问题标题】:CloudFoundry staging error exec: "git": executable file not found in $PATHCloudFoundry 暂存错误 exec:“git”:$PATH 中找不到可执行文件
【发布时间】:2016-07-21 14:08:20
【问题描述】:

在我的 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 访问 (diego)。

关于为什么 git 可执行文件在暂存时不可用以及如何修复或修复此问题的任何想法?我想避免删除空间并重新创建它们的麻烦(和成本)。

【问题讨论】:

  • 请使用您的Manifest.yml 编辑您的帖子。 Cloud Foundry 似乎认为您使用的是 GO buildpack 而不是 Java buildpack。同样在开发者门户中,它显示 GO 标志。错误 exec: "git": executable file not found in $PATH 来自 GO buildpack。
  • 我已经更新了 manifest.yml。但是,即使 cloudfoundry 认为我正在使用 GO buildpacks,怎么可能完全相同的东西在其他空间也能工作呢?当我使用来自https://github.com/cloudfoundry/java-buildpack 的构建包或提供的java_buildpack 导致exec: "tar": executable file not found in $PATH 的构建包时,“坏”空间也会发生同样的事情。

标签: git cloud-foundry swisscomdev


【解决方案1】:

这是 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在大量摆弄 env 变量之后,我发现问题出在我的 manifest.yml 中的 MONGODB_CMD_PATH env 变量上。似乎任何以PATH 结尾的环境变量都会影响/覆盖$PATH 环境,从而导致暂存过程失败,因为所需的可执行文件不再位于系统路径上。

      【讨论】:

        【解决方案4】:

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

        我在清单中设置了PYTHONPATH 变量。 CloudFoundry 正确设置了 PYTHONPATH 环境变量,但它也使用它来覆盖 PATH 变量。我的解决方法是将PYTHONPATH 设置为$PATH:/my/python/path。虽然这会将无关目录添加到PATH PYTHONPATH,但它的功能与预期相同。

        【讨论】:

          猜你喜欢
          • 2020-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-25
          相关资源
          最近更新 更多