You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitLab CI服务并实现流水线数据库初始化与校验?

GitLab CI 集成PostgreSQL服务并填充测试数据方案

第一步:补充基础配置变量

首先需要为PostgreSQL服务配置初始化参数,同时在job中声明数据库连接配置,示例如下:

end-to-end-tests:
  image: node:latest
  variables:
    # Postgres服务默认初始化参数,服务启动时自动创建对应库、账号
    POSTGRES_DB: test_db
    POSTGRES_USER: test_user
    POSTGRES_PASSWORD: test_pass
    # 服务访问地址,postgres是服务默认域名,也可通过alias自定义
    DATABASE_HOST: postgres
    DATABASE_PORT: 5432
  services:
    - name: postgres:9.6.19
      alias: postgres # 可选,自定义服务域名
  script:
    # 后续填充、校验、测试逻辑写在这里

第二步:填充模拟数据的两种常用方式

方式1:直接执行SQL脚本

需要先在测试镜像中安装PostgreSQL客户端,再执行本地的SQL种子文件:

script:
  # 安装依赖:postgresql客户端和网络检测工具
  - apt-get update && apt-get install -y --no-install-recommends postgresql-client netcat-openbsd
  # 等待数据库服务启动完成,避免连接失败
  - until nc -z $DATABASE_HOST $DATABASE_PORT; do echo "等待数据库启动..."; sleep 1; done
  # 执行SQL脚本填充数据,./seed.sql是你项目根目录下的模拟数据脚本
  - PGPASSWORD=$POSTGRES_PASSWORD psql -h $DATABASE_HOST -U $POSTGRES_USER -d $POSTGRES_DB -f ./seed.sql

方式2:使用项目自带的数据库工具

如果你的Node项目已经集成了ORM迁移/种子工具(比如Prisma、TypeORM、Sequelize),可以直接调用对应命令,不需要额外安装psql:

script:
  - npm install # 安装项目依赖
  # 等待数据库启动,同上面的逻辑
  - until nc -z $DATABASE_HOST $DATABASE_PORT; do echo "等待数据库启动..."; sleep 1; done
  # 示例1:Prisma 执行迁移和种子数据填充
  - npx prisma migrate deploy
  - npx prisma db seed
  # 示例2:TypeORM 执行迁移和种子
  - npm run typeorm migration:run
  - npm run typeorm seed:run

第三步:校验数据库初始化结果

填充数据完成后,可以加一步查询校验,确认数据符合预期再启动测试,不符合直接终止流水线:

script:
  # 前面的填充逻辑省略
  # 校验示例1:用psql查询测试数据条数,预期返回10条模拟用户,不符合就退出
  - USER_COUNT=$(PGPASSWORD=$POSTGRES_PASSWORD psql -h $DATABASE_HOST -U $POSTGRES_USER -d $POSTGRES_DB -t -c "SELECT COUNT(*) FROM users;")
  - if [ $USER_COUNT -ne 10 ]; then echo "数据库初始化失败,用户数据条数不符"; exit 1; fi
  # 校验示例2:用项目脚本校验,直接调用你写的校验脚本即可
  - node ./scripts/check-db-init.js
  # 校验通过后再执行测试
  - npm run test:e2e

内容的提问来源于stack exchange,提问作者user5580578

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:39:04