json - 推送到 openShift git 时找不到 metadata.json

标签 json node.js git deployment openshift

我正在尝试将我的应用程序(nodeJS + MongoDB)的第二个版本推送到我的 OpenShift 帐户中。它第一次工作,但现在失败并出现此错误:

Erics-MacBook-Air:rippleRating ericg$ git push openShift master
Counting objects: 129, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (129/129), done.
Writing objects: 100% (129/129), 28.09 KiB | 0 bytes/s, done.
Total 129 (delta 94), reused 0 (delta 0)
remote: Stopping NodeJS cartridge
remote: Mon Apr 13 2015 07:53:08 GMT-0400 (EDT): Stopping application 'ripplerating' ...
remote: Mon Apr 13 2015 07:53:09 GMT-0400 (EDT): Stopped Node application 'ripplerating'
remote: Stopping MongoDB cartridge
remote: No such file or directory - /var/lib/openshift/xxxxxxxxxxxxxxxxf8000090/app-deployments/2015-04-13_07-53-10.382/metadata.json
To ssh://xxxxxxxxxxxxxxxxf8000090@ripplerating-<domain>.rhcloud.com/~/git/ripplerating.git/
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://xxxxxxxxxxxxxxxxf8000090@ripplerating-<domain>.rhcloud.com/~/git/ripplerating.git/'

如果我 rhc ssh 到我的应用程序,我看不到目录 2015-04-13_07-53-19.382,我只有 app- filescurrentby-id(app-filesmetadata.json)。

顺便说一句,添加一些我不想放入 git 存储库但可由 nodeJS 应用程序使用的文件 (secret.json) 的最佳位置是什么?

谢谢!

最佳答案

我最近自己遇到了这个问题,想分享一下我是如何找到解决方案的。

首先,我的/app-deployments 目录包含以下内容:

by-id  current redis-cli

使用 ls -l 显示 current 实际上是指向当前运行构建的软链接(soft link)。

current -> 2015-07-10_22-45-22.964

但是,使用命令 file current 还显示:

current: broken symbolic link to `2015-07-12_22-45-22.964'

这看起来很奇怪,但这与/app-deployments 目录中没有以最新构建的时间戳 (2015-07-10_22-45-22.964) 命名的文件夹这一事实是一致的。我删除了 current 并尝试推送。然而,与 OP 相同的结果,缺少内部包含 metadata.json 的新构建的文件夹或目录。

by-idredis-cli 中查找后,我发现 redis-cli 包含它自己的 metadata.json 文件其中有很多空值('git_sha1' 和 'id' 都是空值)。我使用 git_sha1 字段来匹配我之前和新的提交,但没有任何改变。另一个文件夹 by-id 也有一个指向 redis-cli 文件夹的软链接(soft link)。

此时我已经备份了我想要的所有内容,我试图通过删除其中的所有内容并推送来强制刷新到/app-deployments 目录的默认值。令人惊讶的是,它奏效了!现在我的/app-deployments 目录如下所示:

2015-07-10_22-45-22.964  by-id  current

这是我通常希望在那里看到的内容。希望这会对某人有所帮助!

作为旁注,我后来决定启用 openshift 对多个回滚版本的支持,which you can read about here .它允许您指定要保留多少回滚,这在其他类似情况下可能非常有值(value)。

关于json - 推送到 openShift git 时找不到 metadata.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29605267/

相关文章:

php - REST、PHP - 处理客户端的 POST 数据字符编码

javascript - 如何修复异步 forEach 推送?

git - 从 Vim 保存 Git 消息时 : e32 No File Name

git - 有没有办法在 Github README.md 中添加指向当前 repo 的链接?

javascript - Backbone 集合 toJSON 返回集合对象

ios - 如何访问在我的应用程序中的函数中创建的 json 数组?

javascript - Cypress - addContext() 保留之前的失败计数并将其添加到 mochawesome 报告中的每个 'it' 场景中

javascript - 在 JavaScript 中使用数组循环调用函数

git - 我应该如何构建我的 git 提交?

java - 将 java.util.ArrayList 转换为 gson.JsonElement