I'm starting in the bitbucket pipeline world and I would like to understand how to share something between a service and the step that uses the service.
I have a working pipeline that runs automatically some system tests, and I'm creating a new test. This test just is to download a file from the browser and to check if the file is in a specific folder. To do it I'm using some services that are used in the step. I have something like this pipeline.yml file:
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.
This is a simplification of my scenario, but I think it is enough to explain the issue I'm having.
The tests are executed from the step and, once the tests finish, I know that the file is being stored in a folder in the selenium_chrome container. Now I want to check from the step container if the file is there. i.e. Basically, I want to access a folder in the selenium_chrome service container from the step that uses that service.
I did a lot of tries, but I think the closest one was to use volumes in the service, maybe? I tried something like this:
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
but, when I look into the tmp folder of the step container, I can't find any downloads folder.
I have also configured the chrome driver in another configuration file using the same directory ('download.default_directory': '/build/tmp/downloads').
Can someone help me to know what I'm misunderstanding or doing wrong? I'm missing something in the .yml file maybe?
Thanks in advance
In the end, we didn't find a way to keep the service, so, the solution that worked for us was to remove the selenium_chrome
service and just add the dockerization of this into the script:
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:
It is not exactly what I was looking for ( ideally we wanted to keep the docker layer as a service ), but it works.