Closed2

Private な Github Package を同じ Organization の別リポジトリにインストールする

marromugimarromugi

詰まったのでメモ
前提として、GitHub Actions 経由でインストールすることを想定しています

marromugimarromugi

npmrc の設定を確認

ローカルでインストールする場合も使用する.npmrc のトークン部分を環境変数にする(PAT を直で埋め込んでいる場合のみ実施する)

//npm.pkg.github.com/:_authToken=${NPM_TOKEN}
@{organization名を入れる}:registry=https://npm.pkg.github.com

GitHub Actions を修正する

workflow と actions で分離している場合を例に取ります
GITHUB_TOKENを利用して、プライベートパッケージをインストールするためのトークンを設定します。

workflow

actions から secrets にアクセスできなかったため、 secrets.GITHUB_TOKEN を利用できるように env に埋め込む

name: deploy to prod

on:
  push:
    branches:
      - main
  workflow_dispatch:

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

actions

env に設定した GITHUB_TOKEN を利用してインストールする

name: "install packages"
runs:
  steps:
    - name: Install dependencies
      run: pnpm install
      shell: bash
      env:
        NPM_TOKEN: ${{ env.GITHUB_TOKEN }}

packages settings を修正

パッケージ側からどのリポジトリに対して read を許可するのか設定する
手順は以下の通り

  1. パッケージのリンクにアクセス、おそらく以下のようなリンク
    a. https://github.com/{organization}/{repository}/pkgs/npm/{package-name}
  2. packages settings をクリック
  3. Manage Actions access という欄にて右上の Add repository を押す
  4. インストールさせたいリポジトリを選択して保存

この状態でワークフローを回せばインストールできるはず

このスクラップは2024/08/07にクローズされました