이 페이지에서는 Artifact Registry에 저장된 패키지 Go 모듈을 관리하는 방법을 설명합니다.
시작하기 전에
- 대상 저장소가 없으면 새 저장소를 만듭니다. Go를 저장소 형식으로 선택합니다.
- 저장소에 대해 필요한 권한이 있는지 확인합니다.
- (선택사항) gcloud 명령어의 기본값을 구성합니다.
- Go 1.15 이상을 설치합니다.
- 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 뒤에 대시를 추가하고 모듈의 출시 전 식별자를 추가합니다.
  gcloud artifacts go upload \
      --module-path=MODULE_PATH \
      --version=VERSION-PRE_RELEASE_IDENTIFIERS \
      --source=SOURCE_LOCATION
PRE_RELEASE_IDENTIFIERS를 점으로 구분된 ASCII 영숫자 문자와 하이픈으로 바꿉니다. 예를 들어 alpha.x.12m.5로 식별되는 경로 example.com/foo 모듈을 사용하여 모듈의 출시 전 버전을 업로드하려면 다음 명령어를 실행합니다.
  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에 저장된 모듈을 가져오려면 Go에 Artifact Registry에서 종속 항목을 찾고 체크섬 데이터베이스를 우회하도록 지시해야 합니다. 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 콘솔에서 저장소 페이지를 엽니다. 
- 저장소 목록에서 적절한 저장소를 클릭합니다. - 패키지 페이지에 저장소의 패키지가 나열됩니다. 
- 삭제할 위젯을 선택합니다. 
- 삭제를 클릭합니다. 
- 확인 대화상자에서 삭제를 클릭합니다. 
gcloud
다음 명령어를 실행합니다.
gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]
다음을 바꿉니다.
- PACKAGE는 저장소의 패키지 이름입니다.
- REPOSITORY는 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
- 
LOCATION는 저장소의 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
--async 플래그를 사용하면 진행 중인 작업이 완료될 때까지 기다리지 않고 명령어가 즉시 반환됩니다.
패키지 버전을 삭제하려면 다음 안내를 따르세요.
콘솔
- Google Cloud 콘솔에서 저장소 페이지를 엽니다. 
- 저장소 목록에서 적절한 저장소를 클릭합니다. - 패키지 페이지에 저장소의 패키지가 나열됩니다. 
- 패키지의 버전을 보려면 패키지를 클릭합니다. 
- 삭제할 버전을 선택합니다. 
- 삭제를 클릭합니다. 
- 확인 대화상자에서 삭제를 클릭합니다. 
gcloud
다음 명령어를 실행합니다.
gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]
다음을 바꿉니다.
- VERSION은 삭제할 버전의 이름입니다.
- PACKAGE는 저장소의 패키지 이름입니다.
- REPOSITORY는 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
- 
LOCATION는 저장소의 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
--async 플래그를 사용하면 진행 중인 작업이 완료될 때까지 기다리지 않고 명령어가 즉시 반환됩니다.
다음 단계
- Go 빠른 시작 사용해 보기
- Go 명령어를 사용하지 않고 모듈 또는 버전과 연결된 개별 파일을 다운로드