我们有一台在同一台机器上运行gitlab和gitlab-runners的服务器。我定义了一个跑步者,如下所示

[abc@xyz bin]# gitlab-ci-multi-runner register
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://abc.xyz.com                                                                     
Please enter the gitlab-ci token for this runner:
9nev5wz3voabcdefgh
Please enter the gitlab-ci description for this runner:
[opera.ishisystems.com]: second-docker-remote-runner
Please enter the gitlab-ci tags for this runner (comma separated):
docker, remote
Whether to run untagged builds [true/false]:
[false]: 
Whether to lock Runner to current project [true/false]:
[false]: 
Registering runner... succeeded                     runner=9nev5wz3
Please enter the executor: docker, docker-ssh, ssh, docker+machine, docker-ssh+machine, parallels, shell, virtualbox, kubernetes:
docker
Please enter the default Docker image (e.g. ruby:2.1):
node:4.2.2
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 


,而我的.gitlab-ci.yml

image: maven:3-jdk-7

services:
  - wurstmeister/kafka:0.8.2.1

variables:
  MAVEN_REPO: "$CI_PROJECT_DIR/.m2"

cache:
    key: "$CI_BUILD_STAGE"
    paths:
      - .m2

build:
  script: "mvn -Dmaven.repo.local=$MAVEN_REPO test -B"
  tags:
  - docker


我是什么尝试做的是在gitlab-runner服务器上设置一个中央Maven存储库,以便每次启动新作业而不是下载所有Maven依赖项时,都应使用缓存的存储库。

#1 楼

对我而言,最简单的方法是运行一个人工制品实例。有几种选择,其中许多具有支持Maven存储库的开源,社区或免费版本。大多数选项将支持缓存远程存储库(例如,Maven Central),然后可以对其进行管理以通过您的项目实施特定版本的依赖关系。它还会接受您自己的依赖关系,这样您就可以为团队中的所有maven依赖关系提供一个中央唯一访问点。 。还有其他选择,但请检查一下。

这就是说,如果您要为要配置的新代理准备本地存储库,则可以这样做。但是坦率地说,除非您有一些真正的依赖关系(例如在GB大小范围内),否则我不会真正这么做,只是让Maven自然地从本地二进制存储库中提取。它提供了一个更简单的解决方案,从长远来看将更加强大。

评论


我想要的是使用gitlab-ci的缓存功能。你能帮我吗

– radbrawler
17年4月26日在17:29

尽管我想要的是不同的,但是您为我和我的团队提供了一个很好的选择来进行讨论。谢谢@Newtopian

– radbrawler
17年4月26日在17:30

我在gitlab-ci方面没有丰富的经验,所以我真的不能在那里提供帮助。但是,当尝试使用Team-City(他们的术语中的伪像)进行类似的操作时,我们最终遇到了自然可以自然解决的问题。杀手sell的卖点是,它启用了许多我们甚至在进一步简化总体流程之前都没有考虑过的新选择。整个相对尴尬的境地找到了一个自然的住所,这感觉很对。

– Newtopian
17年4月26日在18:04

抱歉,挑剔...并劫持了您的答案,很快就发布了一个新问题(请稍候...)。

–Pierre.Vriens♦
17年8月31日在15:30

#2 楼

GitLab CI包括相对于工作目录的目录缓存。您可以使用它来缓存Maven本地存储库。

myjob:
  image: maven
  variables:
    MAVEN_OPTS: "-Dmaven.repo.local=${CI_PROJECT_DIR}/.repository/"
  cache:
    key: maven
    paths: [.repository/]
  script:
  - mvn clean verify


您将在作业日志中看到以下内容:

Checking cache for maven...
Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/133221/maven 
...
Creating cache maven...
 .repository/: found 948 matching files             
 Uploading cache.zip to https://storage.googleapis.com/gitlab-com-runners-cache/project/133221/maven 


请参阅GitLab缓存文档。