У меня есть конвейер, который допускает параллелизм конвейера, но когда один и тот же конвейер работает параллельно, выполнение моего конвейера завершится неудачно в тесте E2E. Тест не пройден, потому что тестовая учетная запись будет бороться за аутентификацию сеанса и будет выходить из учетной записи других пользователей.
Я использую puppeteer для тестирования E2E, поэтому в моем тестовом скрипте должен быть указан ip. И вот тут-то все идет не так, как надо: мой тест подключается к тому же контейнеру докера, а не к вновь созданному контейнеру для конвейера частиц.
kind: pipeline
name: Development
concurrency:
limit: 10
services:
# start a new postgres database server for the e2e test
- name: projectdatabase
image: postgres
ports:
- 5432
environment:
POSTGRES_USER: padmin
steps:
.
.
.
# run the application
- name: deploy-to-staging
image: ubuntu
# run this step container in the background : this so it removed automatically when pipeline execution finished
detach: true
commands:
- cd /drone/src/project/server
# run the golang executable aka run the project
- ./server
depends_on:
# wait until this steps finish
- build-frontend
- build-backend-and-migrate-database
# run puppeteer end-to-end test
- name: e2e-test
image: my-puppeteer-image
# required because this is private image and doesn't exist in docker.hub
#
#
pull: if-not-exists
commands:
# go to puppeteer e2e test
- cd /drone/src/project/e2e_test
# install npm modules
- npm install
# change the end point from the default/dev-env to the onces created in run application step
- find /drone/src/project -type f -name "*.js" -print0 | xargs -0 sed -i 's/localhost:3535/deploy-to-staging:8080/g'
# run the tests
- node test.js
# trigger for dev branch only
trigger:
branch:
- dev
Я пытаюсь убедиться, что они запускают изолированные конвейеры, чтобы избежатьэтот тест E2E не пройден.