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が作成されています。

Terminal window
$ 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を使うことができます。