pg_dump:由于 gitlab CI 期间服务器版本不匹配而中止

问题描述

这是我在 gitlab runner 运行我的 CI 脚本时得到的错误

pg_dump: server version: 13.2 (Debian 13.2-1.pgdg100+1); pg_dump version: 11.11 (Debian 11.11-0+deb10u1)
pg_dump: aborting because of server version mismatch
rails aborted!
Failed to execute:
pg_dump -s -x -O -f /builds/steady-install-inc/steady-install-backend/db/structure.sql test

这是运行 rspec 的 .gitlab-ci.yml 文件

image: ruby:2.6.3

stages:
  - test
  - deploy

cache:
  key: $CI_COMMIT_REF_SLUG
  paths:
    - vendor/bundle

before_script:
  - gem install bundler
  - bundle install --deployment --without development -j $(nproc)

rspec:
  stage: test
  services:
    - postgres:13.2
  variables:
    POSTGRES_DB: test
    POSTGRES_USER: test
    POSTGRES_PASSWORD: test
    DATABASE_URL: "postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres/$POSTGRES_DB"
    DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL: 'true'
  script:
    # Use example environment variables
    - cp config/application.yml.example config/application.yml
    - apt-get update -qy && apt-get install -y nodejs
    - apt-get install -y postgresql postgresql-client libpq-dev
    - bundle exec rails db:migrate RAILS_ENV=test
    - bundle exec rspec
  coverage: '/\(\d+.\d+\%\) covered/'
  only:
    - merge_requests

谁能看出我做错了什么?

我在网上尝试了大约 5 到 10 条建议,但大多数似乎是针对 unbuntu 或 docker 的,我不完全确定如何实施,或者它们根本不起作用。

任何事情都有帮助!

编辑: 我也忘了提到我最近切换到 schema.rb 格式到 structure.sql 格式但我'。不确定这是否是问题的一部分,因为我在本地运行它们时我的规格通过了。

解决方法

我对 gitlab-ci.yml 缺乏专业知识,但我想提一下 Gitlab 的 CI Linter - 你试过了吗?有点隐藏啊在左侧菜单中选择 CI/CD > Pipelines,它将位于管道视图的最右侧。

Gitlab pipeline view with CI lint button