Ваш конвейер выглядит так, как будто он использует shell executor со службами gitlab.
Команда docker run --rm postgres <docker command>
не подключается автоматически к postgres сети. Вы можете попробовать запустить docker изображение с --link postgres
, подробнее здесь . Обратите внимание, что ссылка является устаревшей функцией и может быть удалена в будущем.
Лично я попытался бы запустить свое конвейерное задание, используя docker изображение. Если ваше изображение не является общедоступным, вы можете обойти его с помощью DOCKER_AUTH_CONFIG
Если вы использовали docker бегун с защищенным паролем образом , тогда yaml будет выглядеть так:
integration_test:
image: ${DOCKER_IMAGE_CI}
stage: test
tags:
- custom_tag
services:
- postgres
variables:
POSTGRES_DB: test
POSTGRES_HOST: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_HOST_AUTH_METHOD: trust
script:
- PGPASSWORD=${POSTGRES_PASSWORD} psql -h ${POSTGRES_HOST} -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c "SELECT 'OK' AS status;"
DOCKER_AUTH_CONFIG
переменная окружения будет выглядеть следующим образом ( gitlab docs ):
{
"auths": {
"${DOCKER_REGISTRY}": {
"auth": "(Base64 content from ${DOCKER_USER}:${DOCKER_PASSWORD})"
}
}
}
и для генерации base64 auth вы можете использовать echo -n "${DOCKER_USER}:${DOCKER_PASSWORD}" | base64