🔄

direnv で gh auth switch したら楽になった話

に公開

tl;dr

  • direnv(.envrc)に dh auth switch -u アカウントgh auth token を書いてアカウントの切り替えを楽にしたという話

アカウントって200個あんねん(ない

  • 冗談はさておき、個人用、職場用など複数の GitHub アカウントを持っていて切り替えが面倒
  • gh auth status でアカウントが複数あるってこと
  • gh auth tokenGITHUB_TOKENGH_TOKEN に設定するといろいろ楽
  • トークンだけ設定してたらアカウントの切り替えにミスってコマンドにエラーが出た
  • 具体的には職場用のアカウントに切り替えたまま個人用のタスクを実行したら権限エラー(それはそう

というわけで

.envrc
gh auth switch -u officel
export GITHUB_TOKEN=$(gh auth token)

という風にして、個人用ディレクトリと職場用ディレクトリとその他でスイッチしてからトークンを処理させるようにしたらなかなかよかった、という話

.envrc
export GH_TOKEN=$(gh auth token -u officel)

これでもいいんだけど組み合わせでエラーを出したので必要なディレクトリではスイッチしておいたほうが安全だなと

注意

  • 処理によって PAT が必要なケースがある(コマンドによる)
  • act のテストとかはちょっと注意
  • 権限過剰にも注意(AIを使用している時に食っちゃうとか)
  • いや、単にそういうディレクトリではトークンを処理しないだけ(ユーザー切り替えするだけ)なので、必要なところで必要な時だけ使いましょうねということ
  • あと GITHUB_TOKEN をこの方法で設定してると gh auth switch で怒られるのでその場合は unset GITHUB_TOKEN すれば大丈夫
  • GITHUB_TOKENGH_TOKEN の使い分けは優先順位ってことになってるんだけど、リポジトリ毎にローカルで設定するなら GITHUB_TOKEN に固定して設定しておけば問題ないかなって

まとまらないけど

リポジトリやディレクトリ単位でアカウントの使い分けがちゃんとできるようになったという話(今更

Discussion