Travis CI忽略了Postgres版本规范

时间:2019-02-03 22:55:03

标签: postgresql elixir yaml travis-ci

这个问题我已经花了几个小时了,但还是找不到答案。这很荒谬。

我的.travis.yml

language: elixir
elixir: "1.6.4"
otp_release: "20.1"
addons:
  - postgresql: "9.6"
services:
  - postgresql
env:
  - MIX_ENV=test
before_script:
  - psql --version
  - psql -c 'SELECT version();' -U postgres
  - psql -c 'create database travis_ci_test;' -U postgres
  - cp config/travis_test.exs config/test.secret.exs
  - mix do ecto.migrate

创建数据库时,总是会出现以下错误:

** (Postgrex.Error) ERROR 42704 (undefined_object): type "jsonb" does not exist

显然,这两个命令显示Postgres版本始终为9.2,这是trusty图像上的默认版本。

存在类似的问题:.travis.yml version setting for postgresql ignored,但在这种情况下,OP显然在addons文件中两次包含了.travis.yml键。

我不知道发生了什么事。

1 个答案:

答案 0 :(得分:2)

最终,将dist显式设置为xenial可以为我解决。

language: elixir
elixir: "1.6.4"
otp_release: "20.1"
dist: xenial
addons:
  - postgresql: "9.6"
services:
  - postgresql
env:
  - MIX_ENV=test
before_script:
  - psql --version
  - psql -c 'SELECT version();' -U postgres
  - psql -c 'create database travis_ci_test;' -U postgres
  - cp config/travis_test.exs config/test.secret.exs
  - mix do ecto.migrate

但是我仍然不知道为什么它不能在trusty上运行,因为Build system information的输出明确指出系统上还预装了9.6.6版本。