Menyimpan modul Go di Artifact Registry
Siapkan repositori Go Artifact Registry pribadi, upload modul ke repositori tersebut, dan gunakan modul sebagai dependensi.
Sebelum memulai
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init - Instal Go1.15 atau yang lebih baru.
- Instal add-on gcloud CLI
package-go-module:
gcloud components install package-go-module
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat dan mengelola repositori modul Go Artifact Registry,
minta administrator untuk memberi Anda peran IAM
Administrator Artifact Registry (roles/artifactregistry.admin) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat repositori
Untuk membuat dan mengonfigurasi repositori baru:
Jalankan perintah berikut untuk membuat repositori baru.
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description=DESCRIPTIONGanti kode berikut:
- REPOSITORY adalah nama repositori. Untuk setiap lokasi repositori dalam project, nama repositori harus unik.
- LOCATION adalah lokasi regional atau multi-regional
untuk repositori. Anda dapat menghapus flag ini jika menetapkan a
default.
Untuk melihat daftar lokasi yang didukung, jalankan perintah
gcloud artifacts locations list. - DESCRIPTION adalah deskripsi opsional repositori. Jangan sertakan data sensitif, karena deskripsi repositori tidak dienkripsi.
Jalankan perintah berikut untuk melihat detail repositori.
gcloud artifacts repositories describe --location=LOCATION REPOSITORY
Outputnya akan terlihat seperti berikut:
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2022-06-03T20:20:01.644813Z' format: GO mode: STANDARD_REPOSITORY name: projects/my-project/locations/us-west1/repositories/my-repo updateTime: '2022-06-03T20:20:01.644813Z'
Menetapkan default untuk perintah gcloud
Anda dapat menyederhanakan perintah gcloud CLI dengan
mengonfigurasi nilai default
untuk project, repositori, dan lokasi. Setelah default dikonfigurasi, tag --project, --location, dan --repository tidak diperlukan.
Mengemas dan mengupload modul Go
Add-on gcloud CLI package-go-module mengemas modul Go Anda, sehingga Anda dapat membuat versi dan mengupload ke Artifact Registry menggunakan perintah gcloud.
Membuat modul Go
Pertama, buat modul Go sederhana untuk diupload ke repositori Anda.
Di direktori beranda, buat direktori bernama "foo" untuk modul Anda
mkdir foo
Ubah direktori ke direktori modul Anda dan jalankan
go mod inituntuk membuat file go.mod untuk modul Anda.cd foo \ go mod init example.com/foo
Ganti
example.com/foodengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.Buat file
foo.godi direktori foo Anda dengan konten berikut:package foo const HelloWorld = "Hello World!"
Mengemas dan mengupload modul
Kemasi dan upload modul ke repositori Anda:
gcloud artifacts go upload --project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--module-path=example.com/foo \
--version=VERSION \
--source=SOURCE_LOCATION
Ganti kode berikut:
- PROJECT dengan ID project Anda Google Cloud .
- REPOSITORY dengan nama repositori tempat paket disimpan.
- LOCATION dengan lokasi regional atau multi-regional repositori.
example.com/foodengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.- VERSION dengan
versi semantik
modul dalam bentuk
vX.Y.ZdenganXadalah versi utama,Yadalah versi minor, danZadalah versi patch. - SOURCE_LOCATION dengan jalur ke direktori root modul Go
Anda. Jika Anda menghapus flag
--source, defaultnya adalah direktori saat ini.
Modul diupload ke Artifact Registry.
Untuk mengetahui informasi selengkapnya tentang cara membuat modul Go, lihat tutorial ini.
Membuat daftar modul
Jalankan perintah berikut untuk memeriksa modul Go yang diupload di project, repositori, dan lokasi default saat nilai default dikonfigurasi:
gcloud artifacts packages list
Outputnya akan terlihat seperti berikut:
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
Melihat detail versi modul
Jalankan perintah berikut untuk melihat versi modul Anda di default project, repositori, dan lokasi saat nilai default dikonfigurasi:
gcloud artifacts versions list --package=MODULE_PATH
Outputnya akan terlihat seperti berikut:
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
Mendownload modul
Untuk mengimpor modul yang disimpan di Artifact Registry, Anda harus menginstruksikan Go untuk mencari dependensi dari Artifact Registry, dan melewati database checksum.
Menyiapkan lingkungan Go
Instruksikan Go untuk mendownload modul dari Artifact Registry, proxy modul Go publik, lalu sumber dalam urutan tersebut:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Ganti kode berikut:
- LOCATION adalah lokasi regional atau multi-regional repositori.
- PROJECT adalah ID Google Cloud project Anda.
- REPOSITORY adalah nama repositori tempat paket disimpan.
Kecualikan modul Anda agar tidak diperiksa menggunakan database checksum publik:
export GONOSUMDB=MODULE_PATH_REGEX
Ganti MODULE_PATH_REGEX dengan jalur modul Anda atau regex jika Anda ingin mengecualikan beberapa modul.
Untuk mengecualikan modul
example.com/fooagar tidak diperiksa menggunakan database checksum publik, jalankan perintah berikut:export GONOSUMDB=example.com/foo
Jika Anda ingin semua modul dengan jalur modul yang dimulai di
example.comdikecualikan agar tidak diperiksa menggunakan database checksum publik, jalankan perintah berikut:export GONOSUMDB=example.com/*
Mengautentikasi ke Artifact Registry
Saat mendownload modul Go yang dikemas untuk digunakan sebagai dependensi dari Artifact Registry, biner Go menggunakan kredensial dalam file netrc Anda untuk mengautentikasi ke Artifact Registry. Untuk menyederhanakan proses autentikasi, Anda dapat menggunakan helper kredensial Go untuk memperbarui token dalam file netrc Anda untuk autentikasi ke Artifact Registry.
Lokasi file netrc Anda dapat ditetapkan dengan variabel lingkungan netrc.
Jika variabel NETRC tidak ditetapkan, perintah go akan membaca $HOME/.netrc di platform seperti UNIX atau %USERPROFILE%\_netrc di Windows.
Artifact Registry mendukung metode autentikasi berikut.
- Kredensial jangka pendek (direkomendasikan)
- Gunakan alat helper kredensial Go Artifact Registry untuk memperbarui token autentikasi dalam file netrc Anda.
- Menggunakan kunci akun layanan
Gunakan opsi ini jika Anda tidak dapat menggunakan kredensial di lingkungan Anda untuk autentikasi. Tambahkan kunci akun layanan yang tidak dienkripsi ke file netrc Anda.
Menambahkan helper kredensial Go ke GONOPROXY
Sebelum menggunakan helper kredensial Go, Anda harus menambahkannya ke daftar GONOPROXY untuk memaksa Go mendownloadnya langsung dari GitHub. Jika Anda memiliki modul lain yang ingin didownload langsung dari sumber, Anda dapat menambahkannya dalam daftar yang dipisahkan koma seperti yang ditunjukkan dalam contoh berikut:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Dengan MODULE_PATH1 dan MODULE_PATH2 adalah jalur modul dari modul yang akan didownload dari sumber.
Untuk menambahkan helper kredensial Go ke daftar GONOPROXY dan menjalankannya untuk menyiapkan kredensial Anda:
Tambahkan helper kredensial Go ke
GONOPROXYexport GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry Anda ke file netrc Anda dengan alat paket modul Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]Dengan LOCATION adalah lokasi regional atau multi-regional lokasi repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi tersebut sebagai daftar yang dipisahkan koma.
Helper kredensial Go menambahkan setelan ke file netrc Anda untuk mengautentikasi ke Artifact Registry. Jika Anda meneruskan flag
--json_key, kunci akan ditambahkan ke file netrc Anda untuk autentikasi sandi.
Menggunakan modul sebagai dependensi
Jika Anda menggunakan kredensial jangka pendek untuk mengautentikasi ke Artifact Registry, Anda harus memperbarui token OAuth dengan menjalankan perintah berikut:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 refresh
Di direktori beranda, buat direktori bernama "bar"
mkdir bar
Ubah direktori ke direktori modul Anda dan jalankan
go mod inituntuk membuat filego.moduntuk paket Anda.cd bar \ go mod init example.com/bar
Ganti
example.com/bardengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.Untuk mewajibkan versi foo yang disimpan di Artifact Registry, edit file
go.modAnda agar terlihat seperti berikut:module example.com/bar go 1.19 require example.com/foo v0.1.0Ganti kode berikut:
example.com/fooadalah jalur modul dari modul yang diperlukanv0.1.0adalah versi yang disimpan di Artifact Registry
Buat file
main.godi direktoribarAnda dengan konten berikut:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }Jalankan go mod tidy untuk mendownload dependensi, termasuk paket foo:
go mod tidy
Jalankan modul bar:
go run .
Outputnya akan terlihat seperti berikut:
Hello World!
Pembersihan
Agar akunAnda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Google Cloud
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Sebelum menghapus repositori, pastikan modul yang ingin Anda simpan tersedia di lokasi lain.
Untuk menghapus repositori:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORYGanti kode berikut:
- LOCATION dengan lokasi regional atau multi-regional repositori.
- PROJECT dengan ID project Anda Google Cloud .
- REPOSITORY dengan nama repositori.
Jika Anda ingin menghapus setelan repositori dan lokasi default yang Anda konfigurasi untuk konfigurasi gcloud aktif, jalankan perintah berikut:
gcloud config unset artifacts/repository gcloud config unset artifacts/location
Langkah berikutnya
- Pelajari lebih lanjut cara mengonfigurasi autentikasi.
- Pelajari cara mengelola repositori.
- Pelajari cara mengelola modul Go.
- Baca sumber daya kami tentang DevOps dan jelajahi program riset DevOps Research and Assessment.