0

我在网上搜索了几个小时并尝试错误,但我不明白:

如何将 composer.json 中的私有 BitBucket 存储库用于推送到云代工环境的应用程序?

"repositories": [
  {
    "type": "git",
    "url": "git@bitbucket.org:blabla/blabla.git",
    "reference": "package"
  }
]

问题是,我需要在云代工厂启动中的作曲家启动之前设置公共身份验证(ssh 密钥)。

.ssh 文件夹必须是 $HOME/../.ssh ,它不在 app 文件夹中,所以我不能直接按下按键。我发现,使用 .profile.d 中的 bash 脚本,我可以执行一些“mv”命令,但这些 bash 脚本是在 composer 之后运行的。

mkdir ./../.ssh
mv ./preprocess/ssh/id_rsa ./../.ssh/id_rsa
mv ./preprocess/ssh/id_rsa.pub ./../.ssh/id_rsa.pub
mv ./preprocess/ssh/known_hosts ./../.ssh/known_hosts
chmod 600 ./../.ssh/id_rsa
chmod 600 ./../.ssh/id_rsa.pub
chmod 644 ./../.ssh/known_hosts
chmod 700 ./../.ssh

作曲家本身有一个 pre-install-cmd,但即使那样,密钥也无法识别。

"scripts": {
   "pre-install-cmd": "sh ./preprocess/pre-install-cmd.sh"
}

这是如何正确完成的?有一些特殊的钩子脚本吗?放置 ssh 文件夹后是否需要添加一些内容?

谢谢你的帮助

4

1 回答 1

1

将您的 SSH 私钥放入 git repo 并交到第三方提供商手中(将应用​​程序上传到 CF 时)是一个坏主意 - 不要这样做!

将 PHP 应用程序推送到 CF 时使用的 php-buildpack 以安全的方式支持带有私有注册表的 composer,但不幸的是,目前仅适用于 Github:

它的工作原理是首先获取 Github OAuth 密钥并将其提供给 stager cf set-env,请参阅https://github.com/cloudfoundry/php-buildpack/blob/master/docs/composer.md#supply-a-github-token

Bitbucket 还提供 OAuth 令牌,但作曲家的支持是在几天前到达的:https ://github.com/composer/composer/pull/5055 所以 php-buildpack 还不支持它,但我认为它很快就会支持.

您不是唯一遇到此问题的人:如何在 cloudfoundry 应用程序中访问私有 BitBucket 存储库(在作曲家之前部署 ssh 密钥) - 它与 heroku 有关,但也适用于 CF,因为它们具有兼容的构建包。

现在的解决方案: 如果我正确解释了文档,您应该能够使用本地打包依赖项composer install并使用依赖项推送整个应用程序: https ://github.com/cloudfoundry/php-buildpack/blob/master/docs/ composer.md#vendoring-dependencies

于 2016-04-07T14:48:22.367 回答