我正在研究一个使用postgres作为后端的项目。詹金斯(Jenkins)用于ci。到目前为止,日常构建中仅包含单元测试,但是现在我们也希望包含集成测试。这需要一个api来访问数据库。数据库为Postgres,liquibase用作发布者。 我想做的就是通过詹金斯 1.创建数据库, 2.使用liquibase发布 3.运行集成测试
我创建了这个docker-compose
version: '3.4'
services:
xyz.api:
image: xyz.api
build:
context: .
dockerfile: Dockerfile.ci
ports:
- 3001:3001
depends_on:
- publisher
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "xyz"
POSTGRES_DB: "xyz_db"
publisher:
image: publish
build:
context: .
dockerfile: Dockerfile-publish.ci
entrypoint: ""
depends_on:
- postgresql
command: ["./wait-for-it.sh", "db:5433"]
postgresql:
image: postgres:10.2
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "xyz"
POSTGRES_DB: "xyz_db"
ports:
- target: 5432
published: 5433
protocol: tcp
networks:
xyzapi:
dockerfile-发布
FROM sequenceiq/liquibase:latest
WORKDIR /workspace
# copy project and restore as distinct layers
RUN liquibase --driver=org.postgresql.Driver --classpath=/usr/local/bin/postgresql-9.3-1102.jdbc41.jar --changeLogFile=xyz_ChangeLog.xml --url=jdbc:postgresql://postgresql:5433/xyz_db --username=postgres --password=xyz update
docker-compose up
---> Running in 18c564dac2de
Unexpected error running Liquibase: org.postgresql.util.PSQLException: The connection attempt failed.
尝试了包括docker-compose在内的许多选项后,我仍然无法正常工作。我认为我在这里并没有走上正确的轨道,而是在寻求有关如何在Jenkins中为依赖数据库的项目运行集成测试的提示或方向。