Не могу создать приложение Phoenix для Heroku CI

Мне не удается заставить приложение Phoenix 1.2 работать на Heroku CI.

Кажется, он пытается создать новую базу данных, и хотя я настроил псевдоним, он все еще выполняет ecto.create,

Вот вывод Heroku CI:

-----> Running Elixir buildpack tests... 10:25:25.751 [warn] Warning: No valid AppSignal configuration found, continuing with AppSignal metrics disabled. 10:25:26.071 [error] GenServer #PID<0.903.0> terminating
** (Postgrex.Error) FATAL (insufficient_privilege): permission denied for database "template1" User does not have CONNECT privilege.
    (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 Last message: nil
** (Mix) The database for PhenixDisplays.Repo couldn't be created: FATAL (insufficient_privilege): permission denied for database "template1" User does not have CONNECT privilege.
-----> Elixir buildpack tests failed with exit status 1

мой mix.exs функция псевдонимов

  defp aliases do
    [
      "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
      "ecto.reset": ["ecto.drop", "ecto.setup"],
      "test": ["ecto.migrate", "test"]
    ]
  end

И моя установка репо в test.exs

config :phenix_displays, PhenixDisplays.Repo,
  adapter: Ecto.Adapters.Postgres,
  url: System.get_env("DATABASE_URL") || "postgres://postgres:postgres@localhost:5432/phenix_displays_test",
  pool: Ecto.Adapters.SQL.Sandbox,
  extensions: [{Geo.PostGIS.Extension, library: Geo}, {PhenixDisplays.Postgrex.Box2D, []}]

1 ответ

Это может быть mix ecto.setup вызывается как часть подготовки к проведению ваших тестов. HerokuCI, кажется, использует app.json файл для настройки ваших тестов. Это пример, который я нашел на https://devcenter.heroku.com/articles/heroku-ci

{
  "environments": {
    "test": {
      "scripts": {
        "test-setup": "gem install rubocop",
        "test": "rubocop ."
      }
    }
  }
}

Убедитесь, что правильно test-setup настроен и что он запускает только те команды, которые вы хотите запустить.

Другие вопросы по тегам