5

我知道可以使用 Fuse(s3fs [或 s3fsr ruby​​ gem?])安装 Amazon S3 存储桶。

我的案例是针对 Heroku 的。

Heroku 的文件系统对于可扩展性等来说是只读的,但是有没有办法在 Heroku 的文件系统中挂载亚马逊 s3?

就我而言,我在 Heroku 上使用 Redmine,并希望使用 Redmine 的内置 git 存储库管理将代码审查链接到我的问题。Redmine 需要将存储库克隆到本地目录,这在 Heroku 上是可能的,但不是持久的。

我希望 Redmine 在已安装的 S3 存储桶上维护一个 git 存储库。这可能吗?如果有可能,那会有多慢?有没有其他选择可以实现这一目标?

4

2 回答 2

2

我还没有找到我的问题的完美答案,但这是一个好的解决方法。

您可以通过在项目的根目录创建一个名为 Procfile 的文件来覆盖默认的 Heroku 启动脚本(以及更多)。

这是 Procfile :

# run custom boot scirpt
web: sh /app/config/web-boot.sh

它告诉 Heroku 这个脚本启动 Redmine。

我将 Bitbucket 与私有存储库一起使用,因此我创建了一个 SSH 密钥对并将它们放在“config/ssh/”中。然后,我将公钥添加到我的 Bitbucket 帐户的部署密钥中,并将 Bitbucket 的公钥添加到我的“config/ssh/know_hosts”文件中

这是“config/web-boot.sh”文件:

# move ssh keys
mkdir /app/.ssh
cp /app/config/ssh/* /app/.ssh/

# git clone code repos
mkdir /tmp/repos

# Do this for every repo you want to clone
git clone --bare ssh://git@bitbucket.org/[YOUR_ACCOUNT]/[YOUR_REPO].git /tmp/repos/[YOUR_REPO]
git --git-dir=/tmp/repos/[YOUR_REPO] remote add origin ssh://git@bitbucket.org/[YOUR_ACCOUNT]/[YOUR_REPO].git
git --git-dir=/tmp/repos/[YOUR_REPO] fetch origin

# run Unicorn http server
cd /app
bundle exec unicorn -p $PORT -c ./config/unicorn.rb

然后,您可以通过指定“/tmp/repos/[YOUR_REPO]”将 Git 存储库添加到您的 Redmine 项目

当您将更改推送到 Bitbucket 时,您可以使用Redmine Bitbucket Hook 插件将更改拉入您的存储库。

像这样希望有一个私钥并不理想,但在我的具体情况下,这个密钥是这个应用程序独有的,仅用于获得对我的代码存储库的只读访问权限。

于 2013-02-27T02:16:18.333 回答
1

请注意 Heroku 现在在启动时在 .profile.d/ 中运行脚本。

https://devcenter.heroku.com/articles/profiled

您还可以添加一个 'git push' 提交后挂钩(在 .git/hooks/post-commit 中),它应该在每次本地提交后将所有更改推送到 BitBucket。

https://www.kernel.org/pub/software/scm/git/docs/githooks.html

于 2013-06-22T19:11:38.880 回答