Gitlab CI 및 Private Go 모듈 구성
6797 단어 go
.git
를 추가하기 시작하고 replace
지시어는 Go가 해당 저장소의 정확한 위치를 명시적으로 나타내도록 합니다.다음과 같은 것:
require (
private.gitlab.instance/project/team/service-name v1.0.0
)
replace (
private.gitlab.instance/project/team/service-name => private.gitlab.instance/project/team/service-name.git v1.0.0
)
그 워크플로는 관용적이지 않고 번거로웠으며 내부 종속성 업그레이드를 평소보다 더 어렵게 만들었습니다.
그러나 더 많은 조사를 한 후에 다음을 사용하는 것과 관련된 더 좋은 대안이 있다는 것을 깨달았습니다.
Gitlab's Personal Access Tokens 및
go.mod
여기에는 4가지 변경이 필요했습니다.
.netrc
업데이트 중, .gitlab-ci.yml
구성을 정의하기 위해 Dockerfile
업데이트 및 .netrc
에서 replace
지시문을 제거합니다. 개인 액세스 토큰 사용
특히 다음 범위의 새 토큰이 필요합니다.
go.mod
read_api
보안 문제를 위해 이 토큰은 new CI/CD environment variable 로 정의되며 이를 위해 두 개의 새 변수를 정의합니다.
Gitlab 사용자 이름을 나타내는
repository_access
및 GO_MODULES_USER
방금 만든 토큰을 나타냅니다. GO_MODULES_PERSONAL_ACCESS_TOKEN
를 사용하는 대신 새 토큰을 정의하는 이유는 백그라운드에서 CI_JOB_TOKEN
를 호출할 때 올바른 저장소를 결정하는 데 사용되는 Gitlab API에 액세스하기 위한 이token does not have enough permissions 때문입니다.새 토큰을 올바르게 사용하도록 go mod <xyz> 업데이트
.gitlab-ci.yml
명령어를 교체하여 새 변수를 전달하면 다음과 같이 됩니다.docker build \
--build-arg CI_JOB_TOKEN
다음과 같이 변경할 수 있습니다.
docker build \
--build-arg GO_MODULES_USER
--build-arg GO_MODULES_PERSONAL_ACCESS_TOKEN
Dockerfile 구성을 정의하기 위해 Docker 빌드 업데이트
Dockerfile은 다음과 같이 변경됩니다.
FROM golang:1.15.0-alpine3.12
ARG GO_MODULES_USER
ARG GO_MODULES_PERSONAL_ACCESS_TOKEN
WORKDIR /project-name/
RUN go env -w GOPRIVATE="private.gitlab.instance" && \
echo -e "machine private.gitlab.instance\nlogin ${GO_MODULES_USER}\npassword ${GO_MODULES_PERSONAL_ACCESS_TOKEN}" > ~/.netrc
COPY ["go.mod", "go.sum", "./"]
RUN go mod download
COPY . .
#-
FROM golang:1.15.0-alpine3.12
WORKDIR /project-name/
ENV PATH=/go/bin/:$PATH
COPY --from=0 /project-name/ /project-name/
COPY --from=0 /go/ /go/
다단계 빌드 덕분에 빌드 중인 최종 Docker 이미지에 자격 증명이 저장되지 않는다는 것을 확실히 알 수 있습니다.
replace 에서 .netrc 지시문을 제거합니다.
마지막으로 마지막 단계는 대체 지시문
go.mod
을 제거하는 것입니다.require (
private.gitlab.instance/project/team/service-name v1.0.0
)
이제 잘 알려진
.git
작업 흐름으로 돌아갑니다!Reference
이 문제에 관하여(Gitlab CI 및 Private Go 모듈 구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mariocarrion/configuring-gitlab-ci-and-private-go-modules-46h7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)