Go でプライベート モジュールを使い始めるのは、参照する適切なリソースがなければ、困難な作業になる可能性があります。これは、Go モジュールが中央リポジトリに保存または提供されるのではなく、別のリポジトリから取得できるようにするためです。例としては Github があります。
パブリック Go パッケージをプロジェクトにインポートするのは、単一のコマンドを実行するだけで簡単です。
$ github.com/author/module-name を取得します
一方、Go でプライベート モジュールをセットアップして使用するには、さらに多くの手順が必要になります。プライベート モジュールを使用すると、コードを公開することなく、選択したリポジトリでプライベート パッケージをホストして使用できます。
プライベート モジュールをセットアップするには、まずディレクトリを作成し、そこに移動します。次のコマンドを実行してモジュールを初期化します:
$ go mod init github.com/author/module-name
次のステップは、コミットし、モジュールのバージョン管理に役立つタグをコミットに追加し、モジュールをリポジトリ (この場合は Github) にプッシュすることです。
この例では、モジュールがプロジェクトのルートですが、別の go モジュールがルートであり、サブモジュールが存在する場合もあります。サブモジュールを使用すると、上記のコマンドは次のように変換されます:
$ go mod init github.com/author/root-module/module-name
プライベートリポジトリを取得しています
このモジュールは現在リポジトリでホストされていますが、プライベートであるため、プロジェクトでプルして使用する前に認証が必要です。プロジェクトは、Github アクションまたは dockerfile を通じて、ローカル環境変数を使用して認証することでモジュールにアクセスできます。
この記事では、ローカル環境変数を利用しながらプライベート リポジトリにアクセスすることに焦点を当てます。これは、次の 2 つのオプションで実現できます。
これら 2 つのオプションの両方で、GOPRIVATE 環境変数を設定することが要件です。 GOPRIVATE 環境変数は、Go コマンドがフェッチされるモジュールがパブリックかプライベートかを判断するのに役立ちます。これには、リポジトリのパッケージ名に対してチェックされるパターンが含まれており、この変数に一致するパッケージ名はパブリック Go キャッシュ サーバー経由で取得されません。
モジュール ディレクトリで以下のコマンドを実行して、GOPRIVATE 環境変数を設定およびエクスポートします。
$export GOPRIVATE=github.com/author/モジュール名
あるいは、Go env コマンドを使用して、以下のように GOPRIVATE 変数を設定することもできます。
$ go env -w GOPRIVATE=github.com/author/module-name $ go env GOPRIVATE
*HTTP(S) の代わりに SSH 経由で取得するように git を構成する
*
Go get コマンドは、http または https を使用して git からモジュールを取得します。 SSH を使用してモジュールをプルするようにするには、git config ファイルを編集するか、次のコマンドを使用します。
$ go env -w GOPRIVATE=github.com/author/module-name $ go env GOPRIVATE
*パーソナルアクセストークンを使用した Go の構成
*
GOPRIVATE 変数を設定した場合、このオプションでは他の 2 つの変数を設定してエクスポートする必要があります。
パーソナル アクセス トークンに設定された GITHUB_ACCESS_TOKEN 変数。Github の設定から作成できます: パーソナル アクセス トークン。必ずトークンに名前を付け、スコープ セクションでリポジトリを選択してください。
設定してエクスポートするもう 1 つの変数は、localhost に設定された GONOPROXY 変数です。これは、この URL がチェックサム データベースと比較されないことを強調します。
$ git config --global url."git@github.com:author/module-name".insteadOf "https://github.com/author/module-name"
最後に、生成された個人トークンを使用するようにグローバル git 構成を更新します。
$ export GONOPROXY=localhost $ export GITHUB_ACCESS_TOKEN=<your-token>
これらの設定を行うと、上記のオプションのいずれかを使用してプライベート モジュールをフェッチし、プロジェクトで使用できるようになります。モジュールをフェッチするには、 go run を実行します。コマンドを使用してプロジェクトをビルドすると、プロジェクトの依存関係の 1 つが追加されたときにモジュールがプルされるか、モジュールの github パスを指定して go get コマンドを実行します。
以上がGo でのプライベート モジュールのセットアップと利用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。