如何为每一个詹金斯人的身形配置“ -container-network”的值?

时间:2019-01-11 15:15:02

标签: docker jenkins docker-compose yaml selenoid

每个Jenkins版本都会在运行硒油测试之前创建一个网络。例如,

Creating network "jenkinspr613build11_default"。 网络名称基于PR和内部版本号。

docker-compose.yaml文件具有以下针对硒油服务的配置:

selenoid:
    image: "aerokube/selenoid:latest-release"
    command: -listen :4444 -conf /etc/selenoid/browsers.json -limit 6 -video-output-dir /opt/selenoid/video/ -timeout 3m -container-network jenkinswebpr613build11_default
    ports:
      - "4444:4444"

如何为每个版本配置-container-network的值?

我可以将环境变量传递给yaml文件吗?

当我对-container-network的值进行硬编码时,我可以在本地启动测试。

2 个答案:

答案 0 :(得分:1)

docker-compose从项目名称(可以使用-p参数显式传递到docker-compose up)和内部名称建立网络名称。

要指定内部网络,只需将其明确写入docker-compose.yml文件中,然后将所有服务链接到该网络,例如:

docker-compose.yml

version: '3'
services:
  selenoid:
    ...
  networks:
    - my-lovely-net

networks:
  my-lovely-net:

此外,如果您不想每次都重新创建网络,而是想重用全局网络,则必须先像docker network create foo那样创建它,然后告诉docker-compose网络是外部的:

docker-compose.yml

version: '3'
services:
  selenoid:
    ...
  networks:
    - my-lovely-net

networks:
  my-lovely-net:
    external: true
    name: foo

答案 1 :(得分:0)

随着每个Jenkins版本的网络名称都更改,我使用了不同的解决方案:

Network的值设置为命令行变量${NETWORK_TAG},如下所示:

selenoid:
    image: "aerokube/selenoid:latest-release"
    command: -listen :4444 -conf /etc/selenoid/browsers.json -limit 6 -video-output-dir /opt/selenoid/video/ -timeout 3m -container-network ${NETWORK_TAG}
    ports:
      - "4444:4444"

docker-compose up命令的运行方式如下:


NETWORK_TAG=$JENKINS_NETWORK_NAME docker-compose -f docker-compose-selenoid.yml up --build

为每个Jenkins版本动态设置了$JENKINS_NETWORK_NAME的值。