Мое приложение Django использует пакеты, связанные с Haskell, такие как HLint
, и некоторые не-Haskell пакеты, такие как graphviz
.Я использую команду shlex
в своем приложении для вызова скрипта bash, который затем вызывает пакет.Локально работает.
Однако я также развернул приложение в Heroku, используя Travis - там, представления, предназначенные для активации сценариев bash, не запускаются.Я запускаю скрипт before_deploy для установки необходимых пакетов, и сборка Travis сообщает, что они успешно установлены;Я не думаю, что пакеты доступны для приложения Heroku.
Мой вопрос: возможно ли наличие необходимых пакетов в приложении Heroku?И если да, то как я могу настроить Heroku для их запуска через bash или каким-либо другим способом?Любая помощь будет очень признательна!
Может быть полезно знать, что приложение работает в среде Linux и что я использую один пакет сборки Python.
Код
Мой .travis.yml
файл выглядит следующим образом:
sudo: true
language: python
python:
- '3.6'
env:
- DJANGO=2.1.5
install:
- pip install -q Django==$DJANGO
- pip install -q -r requirements.txt
script:
- python manage.py test
before_deploy:
- "./before_deploy.sh"
deploy:
provider: heroku
api_key:
secure: <REDACTED>
app: hasnetdt-stage
notifications:
email: false
А вот сценарий before_deploy.sh
для справки:
#!/bin/bash
sudo add-apt-repository -y ppa:hvr/ghc
sudo apt-get update
sudo apt-get install -y cabal-install-1.22 ghc-7.10.2
sudo apt-get install -y graphviz
export PATH=~/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.2/bin:$PATH
cabal sandbox init
cabal update
cabal install alex happy
cabal install hindent hlint
Sidenote:
Когда я попытался развернуть локально (то есть с git push heroku master
), журналы Heroku сказали:
2019-03-24T18:41:29.637402+00:00 app[web.1]: ./static/scripts/prettify.sh: line 3: hindent: command not found
2019-03-24T18:41:29.644886+00:00 app[web.1]: ./static/scripts/linter.sh: line 3: hlint: command not found
Но это может быть потому, что я развернул его локально, а не с Travis, поэтому сценарий before_deploy не запущен.