我正在Kubernetes中尝试使用gitlab runner运行一个rspec单元测试,下面是我编写的示例测试作业。
test:
stage : tests
tags :
- k8s
image : $CI_REGISTRY/devs/$CI_PIPELINE_BASE_IMAGE
variables:
DATABASE_HOST: "127.0.0.1"
HOST_POSTGRES: "127.0.0.1"
POSTGRES_DB: "postgres"
services:
- name : $CI_REGISTRY/devs/custom-postgres:v1.0.0
alias: postgresql
script:
- echo "Testing pipeline"
- apt-get update && apt-get install -y postgresql-client
- pg_isready --dbname="${POSTGRES_DB}" --username="${POSTGRES_USER}" --host="${HOST_POSTGRES}"
- echo $?
- PGPASSWORD=${POSTGRES_PASSWORD} psql ${POSTGRES_DB} -U ${POSTGRES_USER} -h ${HOST_POSTGRES}-c "\dt"
- gem intall bundler
答复如下。
$ pg_isready --dbname="${POSTGRES_DB}" --username="${POSTGRES_USER}" --host="${HOST_POSTGRES}"
127.0.0.1:5432 - no response
我试着找到相关的文档,但是并不多,我怎样才能正确地连接到作为服务运行的postgres示例呢?
1条答案
按热度按时间3qpi33ja1#
PostgreSQL与脚本不在同一个容器中运行,因此无法通过回送地址127.0.0.1访问。https://docs.gitlab.com/ee/ci/yaml/#services
Ruby容器中的脚本命令可以连接到主机名为db-postgrest的PostgreSQL数据库。
在您的情况下,别名是postgresql,因此变量HOST_POSTGRES的值应该是postgresql。