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

标签 maven docker gitlab gitlab-ci

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

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

但我想知道,当有多个需要这个 settings.xml 的项目时,如何做到这一点,因为在存储库中多次放置它似乎很糟糕。

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

最佳答案

我通过 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.xml , settings-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 的更多信息.

关于maven - 在基于 docker 的 GitLab CI 设置中为 maven 存储 settings.xml 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194249/

相关文章:

python - Playwright install-deps 在 Dockerfile 中失败

spring-boot - 如何显示通过哪个cassandra节点处理您的请求

gradle - 基于 SonarQube 分析结果的 GitLab 中的 Break Push

git - 致命的 : could not read Username for 'https://gitlab.com' : terminal prompts disabled

maven - 在Maven中跳过一些许可证测试

java - Citrus 框架 - 无法成功构建示例

java - 如何在第 3 方依赖项中创建 Maven 子依赖项 "provided"?

maven - Maven-具有不同版本的可传递依赖项

docker - docker如何自动为容器分配和回收端口

git - 重新创建docker-volume或服务器数据时如何再次推送到gitlab中?