2016-06-13 3 views
0

우리는 gitlab ci에서 여러 GO 프로젝트를 빌드하고 있으며 다음과 같은 딜레마가 있습니다.gitlab-ci의 글로벌 GOPATH

(로컬 컴퓨터와 마찬가지로) GOPATH로 프로젝트를 빌드 할 때 모든 빌드에서 모든 종속성이 가져 오기 때문에 빌드가 너무 오래 걸릴 수 있습니다. 가서 만든 폴더를 로컬 GOPATH을 정의하고 캐싱 할 때 한편

, 우리는 빨리 얻을 빌드하지만, 프로젝트 자체가 GOPATH 등에없는 어색한 프로젝트 설정, ...

경고 : /build/src/git.my.repo이 : 지원되지 : 외부 디렉토리 구축

+1

당신은 당신의 종속성을 판매하지 않습니까? 그러면 모든 deps가 저장소에 안전하게 체크인 될 것이므로 가져 오기 - 다가오는 빌드 문제는 해결됩니다. 벤더는 또한 deps 중 하나가 갑자기 변경되거나 repo가 ​​사라지더라도 안정적으로 반복 가능한 빌드를 보장합니다. Go 1.5+는 벤더 지원에 직접적으로 추가되었습니다.'/vendor /'의 어떤 것이라도 프로젝트의 빌드에 대해서만 Go 도구에 의해'$ GOPATH/src'에있는 것처럼 취급됩니다. 심지어 수입 라인을 변경해야합니다. – Kaedys

답변

1

I 글로벌 캐싱하지만 gitlab-CI는 것을 허용하지 않습니다이 있다면 그것은 좋은 것입니다 이 것에 관해 @Kaedys와 동의 할 것이다. 벤더 종속성을 사용하고 vendor 디렉토리를 캐시하면 모든 빌드에 대해 가져올 필요가 없습니다. 이미 벤더가 아닌 분은 tools to help you입니다.

로컬 GOPATH 작업도 보았습니다. 정확히 구현 한 방법을 잘 모르겠지만 어떻게 할 수 있는지 here for an example을 살펴보십시오. 디렉토리 안에 GOPATH를 프로젝트 디렉토리로 설정하는 로컬 환경이 있습니다.