gpt4 book ai didi

concourse - 如何在构建之间缓存 Maven 存储库?

转载 作者:行者123 更新时间:2023-12-02 11:27:19 26 4
gpt4 key购买 nike

我的目标是能够使用 councourse 构建管道构建、打包和测试由 Maven 构建的 java 项目。

这样的设置已经就位,一切都运行良好,但由于我们的 Nexus 的 Maven 下载率较差,构建时间太长。

我的构建作业 yml 文件使用以下资源作为 Maven 构建的基础:

# ...
image_resource:
type: docker-image
source:
repository: maven
tag: '3.3-jdk-8'
# ...

我知道每个建筑都有一个“空白石板”,这在某种程度上是设计内置于大厅的。

现在我的问题是:缓存本地 Maven 存储库的好方法是什么(比如说,里面至少有一些基本的东西,比如 Spring 及其依赖项)?

我想到了以下选项:

  1. 使用已内置依赖项的 Docker 镜像
  2. 创建一个为我提供所需依赖项的资源

据我所知,选项 1) 不会使构建的下载大小变小,因为大厅似乎不会缓存用作构建作业基础的 docker 镜像(或者我在这里错了?)

在继续之前,我想确保以下选项 2) 能给我带来任何优势 - 大厅是否缓存用作资源的 docker 镜像?

我可能会错过一些东西,因为我对 concourse 还比较陌生。所以如果我强制你在这里陈述显而易见的事情,请原谅我。 :)

最佳答案

  • 假设您的 Nexus 是本地的,我会研究为什么下载率很低,因为在本地使用 Nexus 和 Artifactory 之类的东西是目前最简单的缓存方法。它们将管理缓存的依赖项的生命周期,这样您的依赖项就不会被缓存超过需要的时间,并且在使用时会添加新的依赖项。
  • 如果您想在作业的任务之间共享缓存,则 output任务的缓存依赖项文件夹(maven 的 .m2 文件夹)并将其用作 input另一个任务的。作为引用,请参阅以下示例:
 ---
jobs:
- name: create-and-consume
public: true
plan:
- task: make-a-file
config:
platform: linux
run:
# ...
outputs:
# ensure that relative .m2 folder is used: https://stackoverflow.com/a/16649787/5088458
- name: .m2
- task: consume-the-file
config:
platform: linux
inputs:
- name: .m2
run:
# ...
  • 如果您想在作业中单个任务的所有执行之间共享缓存,也可以将任务配置为 cache folders .
  • 如果您想在作业之间进行缓存,那么您可以:

我认为 Concourse CI 确实会缓存用于任务的 docker 镜像,但也可以将它们作为管道的资源,然后使用 image传递该资源的任务参数。您可以使用volumes查看缓存的内容以及缓存的时间。 飞行的命令。

关于concourse - 如何在构建之间缓存 Maven 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40736296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com