我从bitbucket管道世界开始,我想了解如何在服务和使用该服务的步骤之间共享一些东西。
我有一个自动运行一些系统测试的工作管道,并且我正在创建一个新的测试。这个测试只是从浏览器下载一个文件,并检查该文件是否在一个特定的文件夹中。为了做到这一点,我使用了在步骤中使用的一些服务。我有这样的管道。yml文件:
pipelines:
default:
- step:
...
script:
- exec system_tests
services:
- selenium_chrome
...
definitions:
services:
selenium_chrome:
image: selenium/standalone-chrome:4.0.0-beta-1-prerelease-20210128.
这是对我的情况的简化,但我认为这足以解释我所遇到的问题。
测试从步骤执行,一旦测试完成,我就知道文件存储在selenium_chrome容器中的文件夹中。现在我想从步骤容器中检查文件是否在那里。也就是说,基本上,我想从使用该服务的步骤访问selenium_chrome服务容器中的文件夹。
我做了很多尝试,但我认为最接近的是在服务中使用卷,也许?我尝试这样做:
definitions:
services:
selenium_chrome:
volumes:
- $BITBUCKET_CLONE_DIR/build/tmp/downloads:/build/tmp/downloads
image: selenium/standalone-chrome:4.0.0-beta-1-prerelease-20210128
但是,当我查看步骤容器的tmp文件夹时,我找不到任何下载文件夹。
我还配置了chrome驱动程序在另一个配置文件使用相同的目录('download.default_directory': '/build/tmp/downloads')。
有人能帮我知道我误解或做错了什么吗?也许我在。yml文件中丢失了一些东西?
Thanks in advance
最后,我们没有找到保留服务的方法,所以,对我们有效的解决方案是删除selenium_chrome
服务,并将其添加到脚本中:
pipelines:
default:
- step:
...
script:
- mkdir -p tmp/tests_downloads
- docker run -d -p 4444:4444 -v $BITBUCKET_CLONE_DIR/tmp/tests_downloads:/tmp/tests_downloads selenium/standalone-chrome:89.0
- exec system_tests
services:
...
...
definitions:
services:
这不是我想要的(理想情况下,我们希望保持docker层作为一个服务),但它可以工作。