비공개로 호스팅되는 github 인스턴스의 Private Go 모듈

2011 단어 gogithub
Go 모듈은 모듈을 가져오기 위해 github에 크게 의존합니다. 많은 모듈을 공개적으로 사용할 수 있으므로 대부분의 경우 괜찮습니다.

github.com에서 호스팅되지 않는 비공개 Go 라이브러리가 있으면 까다로울 수 있습니다. 다음은 Github에 대한 공개 종속성을 가져오지 않고 git 인스턴스에서 가져오는 간단한 솔루션입니다.

이것은 GOPRIVATE 환경이 도입된 Go 1.13에서만 작동합니다.

개인 라이브러리 만들기



다음 형식을 사용하여 인스턴스에 간단한 개인 저장소를 만듭니다.
your.hosted.github.instance.com/my_organization/privatelib

예를 들어 lib.go와 같은 샘플 Go 파일이 포함된 하나의 파일을 추가합니다.

package privatelib

import "fmt"

func MyPrivateCall() {
  fmt.Println("My super secret lib!")
}

내보낸 리소스(함수, 열거형, 구조체...)의 시작 부분에 대문자를 사용하여 내보낸 것으로 표시하는 것을 잊지 마십시오. 이 예에서는 MyPrivateCall()이 내보내집니다.

github 인스턴스에서 토큰 생성



이 직접 링크로 토큰을 생성할 수 있습니다. https://your.hosted.github.instance.com/settings/tokens/new

항상 토큰에 필요한 최소한의 권한을 얻으십시오(개인 저장소를 읽을 수 있음).

기본 프로젝트에서 개인 라이브러리 사용



기본 Go 프로젝트에서 이제 파일 상단에서 개인 라이브러리를 가져올 수 있습니다.

package api

import (
    "fmt"
    //...

    privatelib "your.hosted.github.instance.com/my_organization/privatelib"
)

// ...


func myApiHandler() {
    privatelib.MyPrivateCall()
}


https://your.hosted.github.instance에서 호스팅되는 모듈이 go.mod에서 구문 분석될 때 자격 증명을 삽입하기 위해 mod로 이동하도록 표시해야 합니다.

go env -w GOPRIVATE=your.hosted.github.instance
go config --global url."https://your_username:[email protected]".insteadOf / "https://your.hosted.github.instance"

your_token을 2단계에서 생성된 토큰으로 바꿉니다.

이제 다음을 가져와 빌드합니다.

go mod download
go build ...

도움이 되었길 바랍니다 :)

좋은 웹페이지 즐겨찾기