如何为每个 jenkins 构建在 selenoid 中配置 `-container-network` 的值?
How can I configure the value of `-container-network` in selenoid for every jenkins build?
每个 Jenkins 构建都会在 运行 selenoid 测试之前创建一个网络。例如,
Creating network "jenkinspr613build11_default"
。
网络名称基于 PR 和内部版本号。
docker-compose.yaml 文件,具有以下 selenoid 服务配置:
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
的值时,我可以在本地启动测试。
docker-compose
从项目名称(可以使用 -p
参数显式传递给 docker-compose up
)和内部名称构建网络名称。
要指定内部网络,只需在 docker-compose.yml
文件和 link 所有服务中显式写入它,例如:
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
由于每次 Jenkins 构建都会更改网络名称,因此我使用了不同的解决方案:
网络的值被设置为命令行变量${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_NETWORK_NAME
的值是为每个 Jenkins 构建动态设置的。
每个 Jenkins 构建都会在 运行 selenoid 测试之前创建一个网络。例如,
Creating network "jenkinspr613build11_default"
。
网络名称基于 PR 和内部版本号。
docker-compose.yaml 文件,具有以下 selenoid 服务配置:
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
的值时,我可以在本地启动测试。
docker-compose
从项目名称(可以使用 -p
参数显式传递给 docker-compose up
)和内部名称构建网络名称。
要指定内部网络,只需在 docker-compose.yml
文件和 link 所有服务中显式写入它,例如:
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
由于每次 Jenkins 构建都会更改网络名称,因此我使用了不同的解决方案:
网络的值被设置为命令行变量${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_NETWORK_NAME
的值是为每个 Jenkins 构建动态设置的。