このページでは、Artifact Registry に保存されているパッケージ化された Go モジュールを管理する方法について説明します。
準備
- ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します。リポジトリ形式として Go を選択します。
- リポジトリに必要な権限が付与されていることを確認します。
- (省略可)gcloud コマンドのデフォルトを構成します。
- バージョン 1.15 以降の Go をインストールします。
package-go-module gcloud CLI アドオンをインストールします。
gcloud components install package-go-module
Artifact Registry で認証するように Go を構成します。
必要なロール
モジュールの管理に必要な権限を取得するには、リポジトリに対する次の IAM ロールの付与を管理者に依頼してください。
- モジュールの表示: Artifact Registry 読み取り(
roles/artifactregistry.reader
) - モジュールをダウンロードまたはインストールする: Artifact Registry 読み取り(
roles/artifactregistry.reader
) - リポジトリにモジュールを追加する: Artifact Registry 書き込み(
roles/artifactregistry.writer
) - モジュールを削除する: Artifact Registry リポジトリ管理者(
roles/artifactregistry.repoAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
モジュールをアップロードする
リポジトリ モード: 標準
モジュールをパッケージ化してリポジトリにアップロードするには、次のコマンドを実行します。
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=MODULE_PATH \ --version=VERSION \ --source=SOURCE_LOCATION
以下を置き換えます。
- PROJECT は、Google Cloud プロジェクト ID に置き換えます。
- REPOSITORY は、パッケージが保存されるリポジトリの名前に置き換えます。
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションに置き換えます。
- MODULE_PATH は、モジュールパスに置き換えます。例:
example.com/foo
。詳細については、Go モジュール リファレンスをご覧ください。 - VERSION は、
vX.Y.Z
形式のモジュールのセマンティック バージョンに置き換えます。ここで、X
はメジャー バージョン、Y
はマイナー バージョン、Z
はパッチ バージョンです。 - SOURCE_LOCATION は、Go モジュールのルート ディレクトリのパスに置き換えます。
--source
フラグを省略すると、デフォルトは現在のディレクトリになります。
モジュールが Artifact Registry にアップロードされます。
Go モジュールの作成方法について詳しくは、こちらのチュートリアルをご覧ください。
新しいモジュール バージョンをアップロードする
リポジトリ モード: 標準
デフォルト値が構成されているときに、新しいバージョンのモジュールをデフォルトのプロジェクト、リポジトリ、ロケーションにアップロードするには、新しいバージョン番号を指定して次のコマンドを実行します。
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION \ --source=SOURCE_LOCATION
VERSION は、更新されたモジュールのバージョンに置き換えます。たとえば、パスが example.com/foo
のモジュールのバージョン 0.1.1
をアップロードするには、次のコマンドを実行します。
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v0.1.1 \ --source=SOURCE_LOCATION
モジュールをプレリリース バージョンとしてマークするには、VERSION の後にダッシュを追加し、モジュールのプレリリース ID を追加します。
gcloud artifacts go upload \ --module-path=MODULE_PATH \ --version=VERSION-PRE_RELEASE_IDENTIFIERS \ --source=SOURCE_LOCATION
PRE_RELEASE_IDENTIFIERS は、ドットで区切られた ASCII 英数字とハイフンに置き換えます。たとえば、パス example.com/foo
モジュールで alpha.x.12m.5
によって識別されるモジュールのプレリリースをアップロードするには、次のコマンドを実行します。
gcloud artifacts go upload \ --module-path=example.com/foo \ --version=v1.0.0-alpha.x.12m.5 \ --source=SOURCE_LOCATION
新しいメジャー バージョンをアップロードする
リポジトリ モード: 標準
メジャー バージョンには、以前のバージョンとの下位互換性がありません。互換性を破る変更をインポートしないようにするには、v1
以降のメジャー バージョンに、以前のバージョンとは異なるモジュール パスを設定する必要があります。v2
から、メジャー バージョンはモジュールパスの末尾に追加されます。
たとえば、example.com/foo
の v2.0.0
のモジュールパスは example.com/foo/v2
です。
v1
より後のメジャー バージョンは、メジャー バージョンのサフィックスが付いた名前の別のディレクトリに開発することをおすすめします。
デフォルト値が構成されているときに、パスが example.com/foo
であるモジュールの新しいメジャー バージョン 2.0.0
をデフォルトのプロジェクト、リポジトリ、ロケーションにアップロードするには、次のようにします。
gcloud artifacts go upload --module-path=example.com/foo/v2 --version=v2.0.0
モジュールを一覧表示する
リポジトリ モード: 標準
次のコマンドを実行して、デフォルト値が構成されているときに、デフォルトのプロジェクト、リポジトリ、ロケーションにあるアップロードされた Go モジュールを検査します。
gcloud artifacts packages list
出力は次のようになります。
Listing items under project my-project, location us-west1, repository my-repo. PACKAGE CREATE_TIME UPDATE_TIME example.com/foo 2022-06-03T20:43:39 2022-06-20T20:37:40
モジュール バージョンの詳細を表示する
リポジトリ モード: 標準
デフォルト値が構成されているときに、次のコマンドを実行して、デフォルトのプロジェクト、リポジトリ、ロケーションにあるモジュールのバージョンを表示します。
gcloud artifacts versions list --package=MODULE_PATH
出力は次のようになります。
Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo. VERSION DESCRIPTION CREATE_TIME UPDATE_TIME v0.1.0 2022-06-03T20:43:39 2022-06-03T20:43:39 v0.1.1 2022-06-20T20:37:40 2022-06-20T20:37:40
モジュールを依存関係として使用する
リポジトリ モード: 標準
Artifact Registry に保存されているモジュールをインポートするには、Artifact Registry から依存関係を検索し、チェックサム データベースをバイパスするように Go に指示する必要があります。Go の認証を設定するの手順に沿って、認証と Go 環境を設定します。
Artifact Registry に対する認証に有効期間の短い認証情報を使用している場合は、次のコマンドを実行して OAuth トークンを更新する必要があります。
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@latest refresh
モジュールにまだ
go.mod
ファイルがない場合は、ディレクトリをモジュールのフォルダに変更し、go mod init
を実行してパッケージのgo.mod
ファイルを作成します。go mod init MODULE_PATH
MODULE_PATH は、Artifact Registry に保存されているモジュールのモジュールパスに置き換えます。詳細については、Go モジュール リファレンスをご覧ください。
Artifact Registry に保存されているモジュールのバージョンを必須にするには、
go.mod
ファイルを編集して次のように設定します。module example.com/bar go 1.19 require example.com/foo v0.1.0
以下を置き換えます。
example.com/foo
は、必要なモジュールのモジュールパスですv0.1.0
は Artifact Registry に保存されているバージョンです
モジュールパスを通常どおり
main.go
ファイルのimport
セクションに含めます。たとえば、Artifact Registry に保存されている、パスが
example.com/foo
のモジュールをインポートする場合、インポート セクションは次のようになります。package main import ( foo "example.com/foo" ) func main() { ... }
go mod tidy
を実行して依存関係をダウンロードします。go mod tidy
モジュールを通常どおり実行します。
go run .
Artifact Registry に格納されているモジュールが依存関係としてダウンロードされ、使用されます。
パッケージ化された Go モジュールを削除する
リポジトリ モード: 標準
パッケージとそのすべてのバージョンを削除することや、特定のバージョンを削除することができます。
- パッケージを削除すると、その操作は元に戻せません。
パッケージまたはパッケージのバージョンを削除する前に、そのパッケージの重要な依存関係を送信済み、または対処済みであることを確認してください。
パッケージを削除するには:
コンソール
Google Cloud Console で [リポジトリ] ページを開きます。
リポジトリ リストで、適切なリポジトリをクリックします。
[パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。
削除するパッケージを選択します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
gcloud
次のコマンドを実行します。
gcloud artifacts packages delete PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] [--async]
場所
パッケージのバージョンを削除するには:
コンソール
Google Cloud Console で [リポジトリ] ページを開きます。
リポジトリ リストで、適切なリポジトリをクリックします。
[パッケージ] ページに、リポジトリ内のパッケージが一覧表示されます。
パッケージをクリックして、そのパッケージのバージョンを表示します。
削除するバージョンを指定します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
gcloud
次のコマンドを実行します。
gcloud artifacts versions delete VERSION \
--package=PACKAGE \
[--repository=REPOSITORY] [--location=LOCATION] \
[--async]
場所
次のステップ
- Go Quickstartを試す。
- Go コマンドを使わずに、モジュールまたはバージョンに関連付けられた個々のファイルをダウンロードする。