在基于 docker 的 GitLab CI 设置中为 maven 存储 settings.xml 的位置

Eme*_*Cod 5 maven gitlab docker gitlab-ci

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

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

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

在本地,我在我的 .m2 目录中有它,但是如何以及如何将它放在管道的 gitlab 服务器上?

Cha*_*suk 4

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]
Run Code Online (Sandbox Code Playgroud)

path/to/host/dir是主机上的路径,其中包含许多文件settings.xml,包括 withsettings-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
  - ...
Run Code Online (Sandbox Code Playgroud)

请访问高级配置以获取有关config.toml.