Golang 개발자의 경우 공개 저장소를 다룰 때 일반적으로 Go 모듈을 관리하고 설치하는 것이 간단합니다. 그러나 비공개 Go 모듈로 작업해야 하면 상황이 더욱 까다로워집니다.
Go 모듈 툴체인은 비공개 GOPROXY를 사용하는 것 이상으로 비공개 모듈 작업을 위한 내장 메커니즘을 제공하지 않으며, 이를 적절하게 설정하고 유지하는 것이 모든 개발자나 조직에게 옵션이 아닙니다. 일부 패키지 저장소 서비스는 비공개 Go 모듈 작업을 지원하지만 일반적으로 개발자에게 가장 깔끔한 환경을 제공하지 않습니다.
이러한 이유로 대부분의 경우 go get, go install 또는 go mod download를 사용할 때 개인 저장소로 인증을 관리하기 위해 일부 Go 환경 변수와 결합된 복잡한 Git 구성(.netrc 또는 .gitconfig)을 정렬하게 됩니다. .
이러한 Git 구성의 문제점은 모든 개발자에게 명확하지 않으며 파일 시스템에 일반 텍스트 자격 증명을 저장해야 하기 때문에 안전하지 않을 수 있다는 것입니다. 이러한 문제는 CI/CD 시스템 구성, Docker 이미지 구축 등을 할 때 더욱 문제가 됩니다.
오랫동안 Golang 개발자로서(Go 모듈이 존재하지 않았던 시대부터) 우리는 비공개 Go 라이브러리로 작업하는 것이 공개 라이브러리로 작업하는 것만큼 쉽고 강력할 수 있는 시대를 항상 꿈꿔왔습니다.
개인 Go 라이브러리를 개발하여 GitHub에 푸시하고 GOPROXY 환경 변수만 설정하여 프로젝트 소스 코드에서 새로운 변경 사항을 즉시 가져오는 것을 상상해보세요. 까다롭고 안전하지 않은 Git 구성, 자체 호스팅 GOPROXY 유지 관리, 복잡하고 오류가 발생하기 쉬운 게시 워크플로, 로컬 개발 시스템, Dockerfile 및 CI/CD 환경에 대한 동일한 설정이 없습니다.
GitHub과 통합되어 원활한 Go 비공개 모듈 설치를 제공하는 비공개 GOPROXY 서비스인 goproxy.dev를 만나보세요.
GitHub 계정으로 goproxy.dev에 로그인하고, 사용할 개인 저장소에 대한 액세스 권한을 부여하고, GOPROXY 및 GONOSUMDB 환경 변수를 내보내세요.
export [email protected],proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
이 Go 환경 변수는 쉘 구성(.zshrc, .bashrc 등)에서 직접 설정하거나 go env -w를 사용하여 설정할 수 있습니다.
그런 다음 일반적인 go 명령을 실행하여 비공개 모듈을 설치하고 다운로드할 수 있습니다.
go get github.com/your-organization/[email protected] go install github.com/your-organization/go-module/cmd ... go mod download
goproxy.dev와 통합하려면 두 가지 환경 변수만 설정하면 됩니다. Docker 빌드 중에 이를 수행하는 가장 좋은 방법은 Docker 빌드 비밀 기능을 사용하는 것입니다.
Dockerfile 내부:
COPY go.mod go.sum ./ RUN --mount=type=secret,id=GOPROXY \ GOPROXY=$(cat /run/secrets/GOPROXY) \ GONOSUMDB=github.com/your-organization \ go mod download RUN go build .
그리고 실행:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
GOPROXY URL이 포함된 GitHub Actions의 비밀을 구성하고 워크플로에서 사용하세요.
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
goproxy.dev를 사용하면 Go로 라이브러리를 사용할 때 최고의 개발자 경험을 누릴 수 있습니다. 오픈 소스 공개 라이브러리에 의존하든 조직의 비공개 모듈에 의존하든 통일된 워크플로우를 갖게 됩니다. GOPROXY 환경 변수를 설정하고 특정 버전, Git 브랜치 또는 커밋에 대한 종속성을 가져옵니다.
지금 14일 무료 평가판에 등록하여 goproxy.dev에 대해 자세히 알아보고 시작해 보세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3