地方でリモートワーク

リモートワーク、プログラミング、エンジニア、地方

DevContainerにホストの認証情報を渡してGitHub Cliを使う

VSCode DevContainerでGitHub Cliを使う方法です。

設定ファイル

devcontainer.jsonのfeaturesでghcr.io/devcontainers/features/github-cliを指定すればDevContainer内でGitHub Cli、つまりghコマンドを使うことができます。

{
  "features": {
    "ghcr.io/devcontainers/features/github-cli:1": {},
  }
}

ghcr.io/devcontainers/features/github-cli

ホストの認証情報を渡す

しかしこれだけだとDevContainer内には認証情報を保持していないため、gh auth loginなどで認証をする必要があります。 一度だけならよいのですが、DevContainerをrebuildするたびに、認証をする必要があるので非常に面倒です。 ホストですでに認証済の場合は、Linuxの場合$HOME/.config/ghにconfig.ymlとhosts.ymlが作成されています。

$ ls ~/.config/gh
config.yml  hosts.yml

これらのファイルをDevContainerにmountしてあげることで、DevContainerで認証済の状態を作ることができます。

{
  "features": {
    "ghcr.io/devcontainers/features/github-cli:1": {},
  },
  "remoteEnv": {
    "GH_TOKEN": "${localEnv:GH_TOKEN}"
  },
  "mounts": [
    "source=${localEnv:HOME}/.config/gh,target=/home/vscode/.config/gh,type=bind"
  ],

これでDevContainer内にホストの認証情報を渡すことができたので、DevContainerでわざわざ認証する必要なくGitHub Cliを使うことができます。