docker管道文件是否可以确定运行其的子节点的映像?

时间:2018-11-06 11:59:33

标签: docker jenkins jenkins-pipeline

我希望能够动态地为构建提供docker子节点,并将这些节点的配置/设置作为其使用的Jenkinsfile groovy脚本的一部分。

当前作业设置的局限性意味着Jenkins有一个节点/执行器(master),我想支持使用Docker的节点来减轻这一瓶颈。

我注意到使用docker容器作为节点有两种方法:

  1. 您可以使用agent section in your pipeline file来指定要使用的图像。作为其中的一部分,您可以针对支持运行docker映像的特定节点,但是到目前为止我还没有看到会发生什么。
  2. 您可以使用Jenkins Docker Plugin,它允许您在Jenkins的配置中添加Docker Cloud。它允许您指定一个标签,当它用作构建的一部分时,它将从云配置中选择的映像中在该“云”中生成一个容器。在这种情况下,“云”是在Jenkins服务器上运行的docker实例。

不幸的是,似乎不能同时使用两者-使用标签,但是在配置与标签相匹配的docker cloud模板配置(2)中指定配置(1)的docker镜像似乎不起作用,而是在构建过程中产生未找到标签的错误。

理想情况下,我希望控件位于管道groovy文件中,以便将配置存储在应用程序(1)中,而不是Jenkins服务器(2)中。但是,建议,如果我使用agent部分并提供docker映像,则它仍然必须首先定位现有的执行者(即master ),这将导致其他版本排队直到当前版本完成。

我正要迁移构建,因此并不是所有构建都可以使用docker容器作为节点来支持,并且在master节点上并行运行时,构建会有问题。

Docker管道文件是否可以确定其运行的子节点的映像?

我考虑过但尚未尝试过的一些选择:

  1. 迁移作业以在“ docker cloud”上运行,直到所有作业都支持在子容器节点上运行,然后将配置从Jenkins移至每个作业的管道构建文件,并在master节点上启用并行构建。
  2. 尝试添加新的节点配置,该配置实际上是master的副本(使用同一服务器,只是位置不同)。将其配置为支持并行构建,并使所有迁移的作业在构建期间明确地以该节点为目标。

0 个答案:

没有答案