56

アプリを Heroku にデプロイしようとしていますが、いくつかのプライベート git リポジトリをモジュールとして使用することに依存しています。プロジェクト間でコードを再利用するためにこれを行います。たとえば、複数のアプリで使用するカスタム ロガーがあります。

"logger":"git+ssh://git@bitbucket.org..............#master"

問題は、Heroku が明らかにこのコードに ssh アクセスできないことです。この問題については何も見つかりません。理想的には、Heroku にはモジュールに追加できる公開鍵があります。

4

10 に答える 10

75

基本認証

GitHub は基本認証をサポートしています。

"dependencies" : {
    "my-module" : "git+https://my_username:my_password@github.com/my_github_account/my_repo.git"
}

BitBucket と同様:

"dependencies" : {
    "my-module": "git+https://my_username:my_password@bitbucket.org/my_bitbucket_account/my_repo.git"
}

しかし、単純なパスワードを自分の中に置くことpackage.jsonは、おそらく望ましくありません。

個人用アクセス トークン (GitHub)

この回答を最新のものにするために、ユーザー名とパスワードの組み合わせではなく、GitHub で個人用アクセス トークンを使用することをお勧めします。

次を使用する必要があります。

"dependencies" : {
    "my-module" : "git+https://<username>:<token>@github.com/my_github_account/my_repo.git"
}

Github の場合、ここで新しいトークンを生成できます。

https://github.com/settings/tokens

アプリ パスワード (Bitbucket)

アプリ パスワードは主に、2 要素認証をサポートしていないアプリとの互換性を提供する方法として意図されており、この目的にも使用できます。まず、アプリ パスワードを作成し、次のように依存関係を指定します。

"dependencies" : {
    "my-module": "git+https://<username>:<app-password>@bitbucket.org/my_bitbucket_account/my_repo.git"
}

[非推奨] チーム用 API キー (Bitbucket)

BitBucket の場合、[チームの管理] ページで API キーを生成し、次の URL を使用できます。

"dependencies" : {
    "my-module" : "git+https://<teamname>:<api-key>@bitbucket.org/team_name/repo_name.git"
}
于 2012-11-12T23:35:27.107 に答える
14

ssh-agent に登録され、dyno の最初のセットアップ時に npm によって使用される SSH キーを指定できるカスタム nodeJS ビルドパックを作成しました。次のように、モジュールを ssh url としてシームレスに指定できますpackage.json

"private_module": "git+ssh://git@github.com:me/my_module.git"

秘密鍵を使用するようにアプリを設定するには:

  • キーの生成: ssh-keygen -t rsa -C "your_email@example.com"(パスフレーズを入力しないでください。ビルドパックはパスフレーズ付きのキーをサポートしていません)
  • 公開鍵を github: pbcopy < ~/.ssh/id_rsa.pub(OS X の場合) に追加し、結果を github admin に貼り付けます。
  • 秘密鍵を heroku アプリの config: に追加してからcat id_rsa | base64 | pbcopyheroku config:set GIT_SSH_KEY=<paste_here> --app your-app-name
  • プロジェクトに含まれている heroku nodeJS ビルドパック README の説明に従って、ビルドパックを使用するようにアプリをセットアップします。要約すると、最も簡単な方法は、heroku config:set で特別な設定値を目的のビルドパックを含むリポジトリの github URL に設定することです。ビルドパックを変更しないとは約束していないため、自分のバージョンをフォークして、独自の github フォークにリンクすることをお勧めします。

私のカスタム ビルドパックはhttps://github.com/thirdiron/heroku-buildpack-nodejsで見つけることができ、私のシステムで動作します。コメントやプルリクエストは大歓迎です。

于 2014-04-03T01:40:44.553 に答える
-2

以下の認証例を使用して、package.json プライベート リポジトリで使用できます。

https://usernamegit:passwordgit@github.com/reponame/web/tarball/branchname
于 2013-01-17T13:15:39.647 に答える
-4

要するに、それは不可能です。私が思いついたこの問題の最善の解決策は、新しいgit サブツリーを使用することです。執筆時点では公式の git ソースに含まれていないため、手動でインストールする必要がありますが、v1.7.11 に含まれる予定です。現時点では、homebrew と apt-get で利用できます。それはそれから行う場合です

git subtree add -P /node_modules/someprivatemodue git@github.......someprivatemodule {master|tag|commit}

これによりリポジトリのサイズが大きくなりますが、上記のコマンドを gitsubtree pull で実行することで簡単に更新できます。

于 2012-06-12T18:35:43.923 に答える
-6

以前、github のモジュールを使用してこれを行ったことがあります。Npm は現在、パッケージの名前またはパッケージtar.gzを含むファイルへのリンクを受け入れます。

たとえば、Github から直接 express.js を使用する場合 (ダウンロード セクションからリンクを取得)、次のようにします。

"dependencies" : {
  "express"   :  "https://github.com/visionmedia/express/tarball/2.5.9"
}

tar.gzそのため、 http(s) 経由でファイルとしてリポジトリにアクセスする方法を見つける必要があります。

于 2012-06-04T14:33:46.623 に答える