社内npmパッケージのインストールにおけるGitHub CLI (gh) の活用
こんにちは、3月に株式会社Leaner Technologiesに入社しました mizukmb です。よろしくお願いします。
今回、オンボーディング中に見つけた小ネタについてテックブログで紹介します。
概要
ローカルPCにおける開発環境の構築作業の際、 npm install
時にGitHub Personal Access Token (以降、PAT) の発行が必要である旨がREADMEに記載されていました。社内限定で利用するnpmパッケージがGitHub Packagesで限定公開されているというケースです。
READMEの手順通りにGitHubの settings/tokens
画面からPATを発行してもよかったのですが、せっかくなので、手動でPATを発行せずに済む方法がないか検討してみました。
GitHub CLI (gh) にはローカルPCに認証トークンを発行・保管する gh auth login
コマンドがあります。このコマンドを利用することで settings/tokens
画面を開いて手動でPATを発行する手間を省き、gh コマンド経由で認証トークンをローカルに取得・管理できます。
さらに、この方法なら不要なPATの乱立を防げるため、セキュリティ向上にも繋がります。
以降では gh
コマンドを使った認証トークンの発行と npm install
時の利用方法について説明します。
手順
GitHub CLIはインストール済という前提で説明します。
-
gh auth login -s 'read:packages'
を実行します。過去にgh auth login
を実行した事があってもこれを実行することでスコープが更新されます。-
-s 'read:packages'
はGitHub Packegesで管理されているパッケージのインストールに必要な権限です。デフォルトではこの権限は付与されていないので-s
オプションを使って付与しています - 実行すると対話形式で設定が進むので、指示に従って設定を完了させます
❯ gh auth login -s 'read:packages' ? Where do you use GitHub? GitHub.com ? What is your preferred protocol for Git operations on this host? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How would you like to authenticate GitHub CLI? Login with a web browser ! First copy your one-time code: XXXX-XXXX Press Enter to open https://github.com/login/device in your browser... ✓ Authentication complete. - gh config set -h github.com git_protocol https ✓ Configured git protocol ✓ Logged in as mizukmb
-
-
gh auth status
を実行して、出力内のToken scopes
に'read:packages'
が含まれている事を確認します❯ gh auth status github.com ✓ Logged in to github.com account mizukmb (keyring) - Active account: true - Git operations protocol: https - Token: gho_************************************ - Token scopes: 'gist', 'read:org', 'read:packages', 'repo', 'workflow'
- 作業対象のレポジトリで
npm install
を実行します。この時、指定の環境変数 (例えばGITHUB_TOKEN
の場合) があれば、以下のようにgh auth token
コマンドで取得した認証トークンをインラインで渡して実行してください。GITHUB_TOKEN=$(gh auth token) npm install
まとめ
GitHub CLIの gh auth login
を利用して、手動でのPAT発行を避けつつ、GitHub Packages上の社内npmパッケージをインストールする方法を紹介しました。
この方法により、ブラウザでPATを手動生成・コピーする手間が省け、より安全かつ効率的に開発環境をセットアップできます。ぜひ活用してみてください。
gh-do 拡張機能について
今回の手順では、 npm install
コマンド実行時に直接環境変数を指定しました。しかし、より汎用的に gh
の認証トークンを利用したい場合には、GitHub CLI拡張機能である gh-do が非常に便利です。このツールを使うと、gh auth token
で発行した認証トークンを任意のコマンドへ簡単に渡すことができます。今回は直接利用しませんでしたが、関連する便利なツールとして紹介しました。
gh auth loginで作成されたクレデンシャルだけで生活するためにgh-doを作った - Copy/Cut/Paste/Hatena
Discussion