Open4
ghcrをPATを使わずGItHub CLIで安全に利用する
Github CLIの認証でghcrへログインできるよう。試した記録を残す。
下記記事を参考にしてます。
1. PATHで参照できるディレクトリにcredential helper scriptを置く
~/tools
ディレクトリをPATHに入れているのでそこに置いてみる。
~/toos/docker-credential-gh
#!/bin/bash
# This "docker-credential-gh" utility should exist an as executable somewhere in PATH.
#
# Dependencies: gh
#
set -e
cmd="$1"
if [ "erase" = "$cmd" ]; then
cat - >/dev/null
exit 0
fi
if [ "store" = "$cmd" ]; then
cat - >/dev/null
exit 0
fi
if [ "get" != "$cmd" ]; then
exit 1
fi
host="$(cat -)"
host="${host#https://}"
host="${host%/}"
if [ "$host" != "ghcr.io" ] && [ "$host" != "docker.pkg.github.com" ]; then
exit 1
fi
token="$(gh config get -h github.com oauth_token)"
if [ -z "$token" ]; then
exit 1
fi
printf '{"Username":"%s", "Secret":"%s"}\n' "$(gh config get -h github.com user)" "$token"
実行権限が必要なため付与
$ chmod 755 ~/tools/docker-credential-gh
2. dockerのconfigに追加
credHelpersにghの設定を追加
{
"auths": {},
"credsStore": "desktop",
"currentContext": "default",
"credHelpers": {
"docker.pkg.github.com": "gh", // 追加
"ghcr.io": "gh" // 追加
}
}
credHelpersに登録すると、レジストリの資格情報取得の際に docker-credential-<value>
を実行するため、docker login
時に先ほどのヘルパースクリプトを読んでログインできるよう。
3. Docker Desktopを起動
Docker DesktopをCredStoreとして利用するため起動します。
4. docker login
$ docker login ghcr.io
Authenticating with existing credentials...
Login Succeeded
できました。感謝!!