Menyimpan modul Go di Artifact Registry
Siapkan repositori Artifact Registry Go pribadi, upload modul ke sana, dan gunakan modul tersebut sebagai dependensi.
Sebelum memulai
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Instal Go 1.15 atau yang lebih baru.
- Instal add-on gcloud CLI
package-go-module
:
gcloud components install package-go-module
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=DESCRIPTION
Ganti kode berikut:
- REPOSITORY adalah nama repositori. Untuk setiap lokasi repositori dalam sebuah project, nama repositori harus unik.
- LOCATION adalah lokasi regional atau multi-regional untuk repositori. Anda dapat menghilangkan flag ini jika menetapkan default.
Untuk melihat daftar lokasi yang didukung, jalankan perintah
gcloud artifacts locations list
. - DESCRIPTION adalah deskripsi opsional dari 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 setelan default
untuk nilai 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
memaketkan modul Go, 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 utama, buat direktori bernama "foo" untuk modul Anda
mkdir foo
Ubah direktori ke direktori modul dan jalankan
go mod init
untuk membuat file go.mod untuk modul Anda.cd foo \ go mod init example.com/foo
Ganti
example.com/foo
dengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.Buat file
foo.go
di direktori foo Anda dengan konten berikut:package foo const HelloWorld = "Hello World!"
Mengemas dan mengupload modul
Kemas 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 project ID Google Cloud Anda.
- REPOSITORY dengan nama repositori tempat paket disimpan.
- LOCATION dengan lokasi regional atau multi-regional repositori.
example.com/foo
dengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.- VERSION dengan
versi semantik
modul dalam bentuk
vX.Y.Z
denganX
sebagai versi utama,Y
adalah versi minor, danZ
adalah versi patch. - SOURCE_LOCATION dengan jalur ke direktori utama modul
Go Anda. Jika Anda menghilangkan tanda
--source
, defaultnya adalah direktori saat ini.
Modul diupload ke Artifact Registry.
Untuk mengetahui informasi selengkapnya tentang cara membuat modul Go, lihat tutorial ini.
Mencantumkan 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
Lihat detail versi modul
Jalankan perintah berikut untuk melihat versi modul Anda di project, repositori, dan lokasi default 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 perlu meminta Go untuk mencari dependensi dari Artifact Registry, dan mengabaikan database checksum.
Menyiapkan lingkungan Go
Perintahkan 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 project ID Google Cloud 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 atau ekspresi reguler jika Anda ingin mengecualikan beberapa modul.
Untuk mengecualikan modul
example.com/foo
agar 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.com
dikecualikan agar tidak diperiksa menggunakan database checksum publik, jalankan perintah berikut:export GONOSUMDB=example.com/*
Melakukan Autentikasi ke Artifact Registry
Saat mendownload modul Go yang dipaketkan untuk digunakan sebagai dependensi dari
Artifact Registry, biner Go akan menggunakan kredensial di file .netrc
Anda
untuk mengautentikasi ke Artifact Registry. Guna menyederhanakan proses
autentikasi, Anda dapat menggunakan helper kredensial Go untuk me-refresh token dalam
file .netrc
untuk autentikasi ke Artifact Registry.
Artifact Registry mendukung metode autentikasi berikut.
- Kredensial berumur pendek (direkomendasikan)
- Gunakan Go credential helper tool Artifact Registry untuk mengupdate token autentikasi di file
.netrc
. - Gunakan 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 perlu menambahkannya ke daftar GONOPROXY
untuk memaksa Go mendownloadnya langsung dari GitHub. Jika 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 modul yang akan didownload dari sumber.
Untuk menambahkan helper kredensial Go ke daftar GONOPROXY
dan menjalankannya untuk menyiapkan
kredensial:
Menambahkan helper kredensial Go ke
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Jalankan perintah berikut untuk menambahkan kredensial Artifact Registry ke file
.netrc
dengan alat paket modul Go:GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Dengan LOCATION adalah lokasi regional atau multi-regional repositori Anda. Untuk menambahkan beberapa lokasi, masukkan lokasi tersebut sebagai daftar yang dipisahkan koma.
Helper kredensial Go menambahkan setelan ke file
.netrc
Anda untuk melakukan autentikasi ke Artifact Registry. Jika Anda meneruskan flag--json_key
, kunci akan ditambahkan ke file.netrc
untuk autentikasi sandi.
Menggunakan modul Anda sebagai dependensi
Jika Anda menggunakan kredensial berumur singkat untuk mengautentikasi ke Artifact Registry, Anda harus me-refresh token OAuth dengan menjalankan perintah berikut:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
Di direktori utama Anda, buat direktori bernama "bar"
mkdir bar
Ubah direktori ke direktori modul dan jalankan
go mod init
untuk membuat filego.mod
bagi paket Anda.cd bar \ go mod init example.com/bar
Ganti
example.com/bar
dengan jalur modul. Lihat Referensi Modul Go untuk mengetahui informasi selengkapnya.Untuk mewajibkan versi foo yang disimpan di Artifact Registry, edit file
go.mod
agar menyerupai yang berikut ini:module example.com/bar go 1.19 require example.com/foo v0.1.0
Ganti kode berikut:
example.com/foo
adalah jalur modul dari modul yang diperlukanv0.1.0
adalah versi yang disimpan di Artifact Registry
Buat file
main.go
di direktoribar
Anda 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 batang:
go run .
Outputnya akan terlihat seperti berikut:
Hello World!
Pembersihan
Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan di halaman ini, ikuti langkah-langkah berikut. Sebelum menghapus repositori, pastikan modul yang ingin Anda pertahankan tersedia di lokasi lain.
Untuk menghapus repositori:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Ganti kode berikut:
- LOCATION dengan lokasi regional atau multi-regional repositori.
- PROJECT dengan project ID Google Cloud Anda.
- REPOSITORY dengan nama repositori.
Jika Anda ingin menghapus repositori default dan setelan lokasi yang Anda konfigurasikan untuk konfigurasi gcloud aktif, jalankan perintah berikut:
gcloud config unset artifacts/repository gcloud config unset artifacts/location
Langkah selanjutnya
- Pelajari lebih lanjut cara mengonfigurasi autentikasi.
- Pelajari cara mengelola repositori.
- Pelajari cara mengelola modul Go.
- Baca referensi kami tentang DevOps dan jelajahi program riset Riset dan Penilaian DevOps.