GOAUTH環境変数の使い方
モジュールをダウンロードするときの認証機構。複数ある場合はセミコロンで区切る。
- Documentation: go help goauth
GOAUTH はモジュールメタデータを取得するために利用される。Git等のVCSでデータを取り込む場合はVCS側でも適切な認証設定がされている必要がある。GitHub Actionsのデフォルトで付与されるGITHUB_TOKENはアクションを実行したリポジトリに限定されるので、この用途には使えない。
また、プライベートモジュールの場合はモジュールのチェックサムを持ってこれないので、最終的に以下のような形となる。
# GOPRIVATEの代わりにGONOPROXYまたはGONOSUMDBを設定してもいいexport GOPRIVATE=github.com/user/repoexport GOAUTH=xxxgit config credential.helper=xxxCredential Helper設定する代わりに、git config url.insteadof するのでもいい。
何も利用しない。
GOAUTH=off~/.netrc にパスワードを記述しておくと使われる。ファイルを別の場所に置きたい場合は NETRC 環境変数にパスをセットする。
GOAUTH=netrc~/.netrc にはドメインとシークレットを書く。
machine github.com login lufia password xxxxgit-credential-helper からシークレットを取り出す。
GOAUTH="git dir"ただし、これはあくまで git credential fill するだけなので、事前にGitへシークレットを与えておく必要がある。また、dir は絶対パスが必要で、相対パスを与えると以下のエラーになる。
go: GOAUTH=git dir method requires an absolute path to the git working directory, dir is not absolute
command
Section titled “command”コマンドを実行した結果で認証する。これは command というキーがあるのではなく、上記どれでもない場合にコマンドとして扱われる。
GOAUTH="./auth.sh"コマンドの出力はURLセクションとヘッダーセクションを空行で区切って出力する。複数のデータを返せるようになっているためなのか分からないけど、ヘッダーセクションの最後にも空行が必要。
echo https://github.com/example/echo https://github.com/example/repo/echoecho Authorization: Bearer $tokenechoこのコマンドには引数としてリポジトリのURLが渡ってくる。同様に、コマンドの標準入力には4xxエラーが発生したときのHTTPレスポンスが送られてくるので、必要ならこれらの情報も使っていい。
echo $1 # $1 = https://github.com/user/repocat >/dev/ttygo mod download -x すると動作しているログが標準エラーに出力される。ダウンロードするモジュールを絞りたい場合、引数にモジュール名を指定すればいい。