공유 러너와 함께 gitlab ci를 사용하여 지속적인 통합을 수행합니다. 각 빌드에 대해 주자는 수 많은 인공물을 다운로드합니다.gitlab ci runner에 대한 maven 이슈 캐싱을 활성화하는 방법은 무엇입니까?
gitlab ci가 이러한 아티팩트를 캐시하도록 구성하여 같은 아티팩트를 계속 다운로드하는 것을 방지함으로써 빌드 프로세스의 속도를 높일 수 있습니까?
공유 러너와 함께 gitlab ci를 사용하여 지속적인 통합을 수행합니다. 각 빌드에 대해 주자는 수 많은 인공물을 다운로드합니다.gitlab ci runner에 대한 maven 이슈 캐싱을 활성화하는 방법은 무엇입니까?
gitlab ci가 이러한 아티팩트를 캐시하도록 구성하여 같은 아티팩트를 계속 다운로드하는 것을 방지함으로써 빌드 프로세스의 속도를 높일 수 있습니까?
Gitlab CI를 사용하면 빌드간에 캐시해야하는 데이터가 포함 된 특정 경로를 작업 또는 빌드별로 정의 할 수 있습니다 (자세한 내용은 here 참조). khmarbaise의 권고와 함께, 이것은 여러 빌드 간의 종속성을 캐시하는 데 사용될 수 있습니다.
빌드의 모든 작업 종속성 캐시 예 : GitLab's issue tracker에 걸쳐 대화에 따르면
cache:
paths:
- .m2/
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2"
maven_job:
script:
- mvn clean install
좋은 미니멀. 일했다. – helt
'-Dmaven.repo.local = .m2/repository'에서'-Dmaven.repo.local = .m2'을 바꿀 때까지 이것은 작동하지 않았습니다 – drakyoko
지금은 2017이고 새로 온 사람들에게는 'GitLab' CI 러너의 샘플 구성으로 [멋진 프로젝트] [1]를 유지합니다. [샘플 Maven 프로젝트] [2] 파일은 Maven 아티팩트를 캐시하는 방법을 보여줍니다. [1] : https://gitlab.com/gitlab-org/gitlab-ci-yml/tree/master [2] : https://gitlab.com/gitlab-org/gitlab-ci-yml /blob/master/Maven.gitlab-ci.yml – zloster
을, 나는, Maven의 로컬 저장소 경로를 변경하고 ./.m2/repository/
디렉토리에 넣어 관리 우리는 것 인 받는다는 로컬 저장소 경로 만에 모든 실행에 설정할 수 있습니다 this StackOverflow answer에 따라, 불행하게도
cache:
paths:
- ./.m2/repository
# keep cache across branch
key: "$CI_BUILD_REF_NAME"
: 다음 CI의 설정이 글로벌 블록을 추가하여 실행간에 유지 -Dmaven.repo.local
또는 settings.xml
을 편집하여 gitlab-ci 구성 스크립트에서 지루한 작업을 수행 할 수 있습니다. 옵션은 기본 Maven 옵션으로 변수를 설정하고 모든 실행에 전달하는 것입니다.
또한 로컬 Maven 저장소가 현재 디렉토리의 하위 항목 인 것이 중요합니다. 웬일인지, GitLab의 누군가가해야한다고 주장하더라도, /cache
또는 /builds
에 넣는 것은 나에게 효과가 없었습니다. 메이븐 + 자바에 대한 작업 gitlab-ci.yml
구성 파일의
예 :
image: maven:3-jdk-8
variables:
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=./.m2/repository"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
cache:
paths:
- ./.m2/repository
# keep cache across branch
key: "$CI_BUILD_REF_NAME"
stages:
- build
- test
- deploy
build-job:
stage: build
script:
- "mvn clean compile $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
unittest-job:
stage: test
dependencies:
- build-job
script:
- "mvn package $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
integrationtest-job:
stage: test
dependencies:
- build-job
script:
- "mvn verify $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
deploy-job:
stage: deploy
artifacts:
paths:
- "target/*.jar"
Gitlab에서 프로젝트간에 캐시 아티팩트를 공유 할 수 있습니까? – zygimantus
당신은 주자의 구성을-CI를 gitlab과 받는다는에 전달하는 캐시 폴더를 추가 할 수 있습니다.
/etc/gitlab-runner/config.toml
[[runners]]
...
[runners.docker]
...
volumes = ["/cache", "/.m2"]
...
.gitlab-ci.yml 메이븐은 보통`의 $ HOME/.m2에서 캐시를 가지고
variables:
MAVEN_OPTS: "-Dmaven.repo.local=/.m2"
build:
script:
- mvn package
/또는'mvn -Dmaven.local.repo = Path'를 통해 설정 될 수 있습니까? – khmarbaise