7

由于需要在某些特定的测试环境中运行测试,我们想要构建一个自定义容器来在 Concourse CI 上运行测试。

我们知道一个工作流程是

Concourse --> Build Image --> Push to Artifactory/Docker Hub --> Pull into pipeline --> run container --> run the tests

但是我们不需要将图像推送到 Hub,而是更喜欢这样的工作流程

Concourse -- Build Image -- run container -- run the tests

我查看了Pivotal 的博客问题,但它解释了第一个工作流程。

我们可以实现第二个工作流程吗?

4

1 回答 1

0

在定义任务时,您可以使用图像选项来实现您想要的。

这里的image选项需要一个rootfs不是一个 docker 图像,所以这是您需要提供的。

我知道这可能看起来很烦人和违反直觉,但它符合大厅抽象。Docker 镜像是资源,因此它们和所有其他的 concourse 资源一样,需要在 concourse 之外的某个存储上进行存储和版本控制。但是,如果 Concourse 发现已上传新图像,它只会下载新图像,因此我认为正确的工作流程会有所不同。

我要做的是做一份工作,将你需要的一切都提供给 a docker-image-resource put,并在其中一个资源发生变化时触发。然后在您需要图像的任务中,从您的 docker 商店中拉取。Concourse 会缓存图像直到它发生变化,所以大多数时候你不需要用完网络流量。

作为一个例子,你可以看到 Concourse 团队是如何做到这一点的......我们有一个使用 docker-image-resource构建图像的管道,然后我们的主管使用这些图像,并在绝大多数时间使用缓存版本.

于 2017-02-28T23:47:35.153 回答