heroku-buildpack-stack

by mfine

Haskell Stack support for Heroku

211 Stars 64 Forks Last release: Not found MIT License 66 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Heroku Buildpack for Stack

Heroku buildpack for Stack. Based on the excellent heroku-buildpack-ghc

Usage

Create an app with this buildpack:

$ heroku create --buildpack https://github.com/mfine/heroku-buildpack-stack.git

Set this buildpack on an existing app:

$ heroku buildpacks:set https://github.com/mfine/heroku-buildpack-stack

Binary executables are placed in

/app/.local/bin/
after compilation, a directory which Heroku includes in your
$PATH
, so assuming that your application is binding to
$PORT
, you can serve your app by creating a
Procfile
at your project root that defines a
web
process type for the
executable
defined in your
.cabal
file:
$ cat *.cabal | grep executable
executable YOURAPPNAME-exe

$ echo "web: YOURAPPNAME-exe" >> Procfile

Templating stack.yaml

To avoid committing secrets into

stack.yaml
for access to private repos, an app's config vars values can be substituted for tags enclosed in double brackets. For example, given a
stack.yaml
containing:
packages:
-location:
    git: https://mfine:{{GITPASS}}@github.com/mfine/heroku-buildpack-stack.git

and an application with config vars:

$ heroku config -app calm-storm-51595
=== murmuring-beyond-51595 Config Vars
GITPASS: abc123
$

before compilation, the

stack.yaml
will be substituted as follows:
packages:
-location:
    git: https://mfine:[email protected]/mfine/heroku-buildpack-stack.git

Makefile Support

This buildpack now supports an optional Makefile, in case you need to coordinate other build steps with Stack. It assumes that the Makefile includes a

make
install
target that uses the Stack build command with the flag
--copy-bins
. For example, a possible
install
target configuration in the Makefile could be:
install:
    stack build --copy-bins

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.