Сборка Elixir в приложении обзора Heroku не работает с ошибкой аргумента (ArgumentError): erlang.binary_to_atom (nil,: utf8) при запуске микс-релиза - PullRequest
1 голос
/ 07 августа 2020

У нас есть приложение Phoenix, которое в течение последнего года работало на Heroku в производстве.

Теперь я пытаюсь разрешить запускать версии приложения с запросом на вытягивание через приложения для проверки как часть конвейера Heroku .

Приложение имеет три сборочных пакета Heroku:

  1. https://buildpack-registry.s3.amazonaws.com/buildpacks/hashnuke/elixir.tgz
  2. https://github.com/gjaldon/heroku-buildpack-phoenix-static
  3. наш собственный пакет сборки (см. Ниже)

Наш собственный пакет сборки очень прост. Вот сценарий bin/detect:

#!/bin/sh

exit 0

А вот сценарий bin/compile:

#!/bin/bash

cd $1
mix release

Пока сборка работала для производства, к сожалению для PR, который Разработанный для включения приложений для обзора, он не работает, когда доходит до финального пакета сборки. Вот соответствующий результат сборки Heroku:

-----> https://github.com/orgname/buildpack-name.git app detected
** (ArgumentError) argument error
    :erlang.binary_to_atom(nil, :utf8)
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
    (stdlib) erl_eval.erl:878: :erl_eval.expr_list/6
    (stdlib) erl_eval.erl:236: :erl_eval.expr/5
    (stdlib) erl_eval.erl:228: :erl_eval.expr/5
    (stdlib) erl_eval.erl:878: :erl_eval.expr_list/6
    (stdlib) erl_eval.erl:404: :erl_eval.expr/5
 !     Push rejected, failed to compile https://github.com/orgname/buildpack-name.git app.
 !     Push failed

Таким образом, похоже, что на этапе mix release произошел сбой, но сообщение об ошибке не дает мне четкого представления о том, почему. Я нашел отчет о подобной проблеме , в котором говорится, что проблема, которую я пытаюсь решить, может быть вызвана отсутствием одной или нескольких переменных среды. Однако я дважды проверил и не обнаружил отсутствующих переменных среды.

Любые предложения о том, как я могу решить эту проблему, будут приветствоваться.

1 Ответ

1 голос
/ 10 августа 2020

Спасибо Алексею Матюшкину за его комментарии, которые помогли мне отследить причину проблемы.

Я ввел новую переменную окружения, которую я получал в обоих config/prod.exs и config/releases.exs. Когда я удалил его из config/prod.exs, тогда mix release преуспел в создании релиза для приложения Heroku Review.

Думаю, мораль этой истории - не настраивать значение как во время сборки, так и во время выполнения.

...