모듈 배포하기
모듈 배포하기 (Publishing a module)
다른 개발자들이 쓸 수 있도록 모듈을 공개하고 싶을 때가 있죠. 이때 모듈을 **배포(publish)**하면 Go 도구들이 그 모듈을 인식할 수 있게 됩니다. 한 번 배포하고 나면, 다른 개발자들은 그 모듈의 패키지를 import 해서 go get 같은 명령으로 의존성을 내려받을 수 있어요.
참고로, 한 번 배포한 모듈의 태그된 버전은 바꾸지 않는 게 원칙입니다. 개발자 입장에서 Go 도구는 내려받은 모듈을 첫 번째로 내려받은 사본과 대조해서 검증하거든요. 만약 두 내용이 다르면 Go 도구가 보안 오류를 냅니다. 이전 버전의 코드를 고치는 대신, 새 버전을 배포하는 쪽이 올바른 방법이에요.
출처: Go 공식 문서
배포 단계 (Publishing steps)
모듈을 배포하려면 다음 단계를 따라가면 돼요.
먼저 명령 프롬프트를 열고 로컬 저장소의 모듈 루트 디렉터리로 이동합니다.
go mod tidy를 실행해서 모듈이 쌓아둔 더 이상 필요 없는 의존성을 정리해 볼게요.
$ go mod tidy
마지막으로 go test ./...를 실행해 모든 게 잘 동작하는지 확인합니다. 이 명령은 사용자가 Go 테스트 프레임워크로 작성해 둔 단위 테스트를 돌려줘요.
$ go test ./...
ok example.com/mymodule 0.015s
git tag 명령으로 프로젝트에 새 버전 번호를 달아줍니다. 버전 번호는 이번 릴리스에서 무엇이 바뀌었는지를 사용자에게 알려주는 값이어야 해요. 자세한 내용은 Module version numbering 문서를 참고하세요.
$ git commit -m "mymodule: changes for v0.1.0"
$ git tag v0.1.0
새 태그를 origin 저장소로 푸시합니다.
$ git push origin v0.1.0
go list 명령을 실행해 Go가 모듈 인덱스를 업데이트하도록 하면 배포가 완료됩니다. 명령 앞에는 GOPROXY 환경 변수를 Go 프록시로 설정하는 구문을 붙여서, 요청이 프록시에 도달하도록 보장해 둡니다.
$ GOPROXY=proxy.golang.org go list -m example.com/[email protected]
당신의 모듈에 관심 있는 개발자들은 다른 모듈을 쓰듯이 패키지를 import 하고 go get 명령을 실행하면 돼요. 최신 버전을 받거나, 다음 예시처럼 특정 버전을 지정해서 받을 수도 있습니다.
$ go get example.com/[email protected]
더 알아보기 (Learn more)
- 모듈 개발 전반에 대한 개요: Developing and publishing modules
- 배포를 포함한 상위 수준의 모듈 개발 워크플로: Module release and versioning workflow
- 모듈 버전 번호 규칙: Module version numbering