web-dev-qa-db-ja.com

GitHubアクションを使用してプライベートGitHubリポジトリからnpmモジュールをインストールする

GitHubアクションを使用してNode.jsプロジェクトのビルドを実行しようとしています。 npm installの一部として、(GPRからではなく)プライベートGitHubリポジトリから直接npmモジュールをインストールする必要があります。

package.jsonでは、

"dependencies": {
  ...
  "my-module": "github:<org>/<my-module>#master",
  ...
},

ただし、npm installを実行すると、次のようになります。

npm ERR! [email protected]:権限が拒否されました(公開鍵)。 npm ERR!致命的:リモートリポジトリから読み取れませんでした。

リポジトリは私の組織の一部であり、ローカルで(つまり、私のマシンから)機能します。これを実行するにはどうすればよいですか?

私はすでにNODE_AUTH_TOKEN環境変数を設定しようとしましたが、違いはありませんでした。この提案は非常に頻繁に見られますが、GPRのみを扱っているようです。回避したいのは、トークンをpackage.jsonファイルにハードコードする必要があることです。これについて何か考えはありますか?

5
Golo Roden

これは、プライベートGitHubリポジトリから依存関係をインストールする方法です。

Package.jsonの依存関係は次のように追加できます。 github:接頭辞はオプションです。 #branchまたは#tagの指定もオプションです。

    "dependencies": {
        ...
        "myrepo": "username/myrepo#master",
        "myotherrepo": "github:username/myotherrepo"
    },

次にワークフローの例を示します。 PATrepoスコープ 個人アクセストークン です。 actions/checkoutの永続的な認証情報を無効にすることが重要です。無効にしないと、PATが上書きされます。 git configの変更はステップ間で持続するため、ジョブごとに一度だけ実行する必要があることに注意してください。

      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://[email protected]/
      - run: npm ci
      ...
2
peterevans

エラーと依存関係(package.json)を含めた方法から、認証資格情報(トークン、ssh。

Git URLs as Dependencies の詳細については、このドキュメントを参照してください

Httpsおよびoauthまたはsshを介して行うことができます。

httpsとoauthアクセストークンを作成する 「repo」スコープがあり、次に この構文を使用 =:

"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"

または

ssh:sshをセットアップしてから、次の構文を使用します。

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"
(note the use of colon instead of slash before user)
0
3rdeye7