A simple buildpack that just runs mix commands on deployment
This buildpack is intended to be used after heroku buildpack for elixir to run arbitrary mix tasks during deployment. This is a perfect buildpack if you're looking to run custom mix tasks as part of your heroku build pipeline.
Make sure your app has heroku-buildpack-elixir configured.
heroku create --buildpack "https://github.com/techgaun/heroku-buildpack-elixir.git" # for new app heroku config:set BUILDPACK_URL="https://github.com/techgaun/heroku-buildpack-elixir.git" # for existing app
Set this buildpack after the heroku-buildpack-elixir.
# Set the buildpack for your Heroku app heroku buildpacks:set https://github.com/techgaun/heroku-buildpack-elixir.git # Add this buildpack after the Elixir buildpack heroku buildpacks:add --index 1 https://github.com/techgaun/heroku-buildpack-mix-tasks.git
Note: Right now, HashNuke/heroku-buildpack-elixir does not export paths of previous buildpacks in sequence for subsequent buildpacks so you might need to use techgaun/heroku-buildpack-elixir in some cases.
MIX_DEPLOY_TASKS environment variable with the tasks you want to run.
heroku config:set MIX_DEPLOY_TASKS='ecto.migrate'
You can separate tasks with semicolon if you want to run multiple tasks. Note that they will run in a sequential order.
heroku config:set MIX_DEPLOY_TASKS='ecto.drop;ecto.create;ecto.migrate;run priv/repo/my_custom_seeds.exs'
On a side note, I do not recommend running
ecto.migrate, db related commands and other various time consuming commands on Production. Esp. running
ecto.migrate on Production can become a nightmare when you have grown to big database.
Copy the snippet above into CLI.