这是我的用例:
我有一个启动速度非常慢的服务,因此在每个测试用例中都启动它是不切实际的。 我有大约 20 个测试套件要在该服务上运行。我想将它们划分为独立的工作,以便在其中一个失败时可以单独重新运行。
所以,我想在之前的一项工作中启动该服务到测试阶段,然后在整个测试阶段使用它。这可能吗?
我希望 gitlab 有一些选项来创建可以添加到作业中的服务,如下所示:
job:
script:
- service start
- echo "Service started"
test:
services:
- job
script:
- test on job:8080
不,
services:
与作业的生命周期相关。服务容器无法跨作业持久化。
但是,在“自托管”docker 运行程序上,您可以使用容器链接与主机上管理的容器来配置“类似”的内容。这可以使用 runner 配置 的 links
部分中的
[runners.docker]
参数来完成。也就是说:您可以在运行程序主机上运行一个容器,并自动将该容器链接到运行程序的“所有”作业,类似于每个作业链接服务的方式。但是,运行程序不会为您管理容器,因此启动或停止容器或管理并发访问等操作必须由您自己完成。例如,在我的运行器主机上,我可以启动一个持久的容器并将其链接到运行器上的所有作业。
首先,在运行器主机上启动容器。在本例中,一个简单的 HTTP 服务:
docker run -d \
--name=my_container \
-p 80 \
strm/helloworld-http:latest
然后在运行器中
config.toml
我将配置
links
参数:
# ...
[runners.docker]
# ...
links = ["my_container:my-service-hostname"]
myjob:
script:
- curl http://my-service-hostname