在基于docker的GitLab CI安装程序中将Maven的settings.xml存储在何处

时间:2019-01-15 07:18:02

标签: maven docker gitlab gitlab-ci

我有几个Maven项目(不是多模块),它们驻留在GitLab中。我想为这些项目设置GitLab CI,因此我查看了gitlab-ci.yml文件,了解如何执行此操作。

我找到了https://docs.gitlab.com/ee/ci/examples/artifactory_and_gitlab,它描述了将settings.xml放入项目本身,然后在gitlab-ci文件中引用它。

但是我想知道,当有多个需要此settings.xml的项目时如何完成,因为将其多次放入存储库中似乎很糟糕。

我在本地将其保存在.m2目录中,但是如何以及在哪里将其放置在gitlab服务器上以进行管道传输?

1 个答案:

答案 0 :(得分:1)

我通过config.toml挂载主机卷,如下例:-

concurrent = 1
check_interval = 30

[[runners]]
  name = "some-name"
  url = "url/to/gitlab/"
  token = "some-token"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "some-maven-image"
    privileged = false
    disable_cache = false
    volumes = ["...", "path/to/host/dir:/some/name:rw"]
    pull_policy = "if-not-present"
    shm_size = 0
  [runners.cache]

尽管path/to/host/dir是主机上的路径,但根据项目要求,该路径包含许多文件,包括settings.xmlsettings-security.xml等。另一方面,/some/name是docker内部的目录。

.gitlab-ci.yml,我提供before_script,如下例:-

before_script:
  - cp -f /some/name/settings.xml  $HOME/.m2/settings.xml
  - cp -f /some/name/settings-security.xml $HOME/.m2/settings-security.xml
  - ...
after_script:
  - rm -f $HOME/.m2/settings.xml
  - rm -f $HOME/.m2/settings-security.xml
  - ...

请访问Advanced configuration,以获取有关config.toml的更多信息。