Skip to content

Instantly share code, notes, and snippets.

@matteosister
Created February 10, 2016 08:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matteosister/6dec56c1115420b3448b to your computer and use it in GitHub Desktop.
Save matteosister/6dec56c1115420b3448b to your computer and use it in GitHub Desktop.
circle for elixir builds
dependencies:
pre:
- config/circleci/prepare.sh
cache_directories:
- ~/dependencies
- ~/.mix
- _build
- deps
test:
override:
- config/circleci/tests.sh
#!/bin/bash
set -e
export ERLANG_VERSION="18.1"
export ELIXIR_VERSION="v1.2.2"
# If you have a elixir_buildpack.config, do this instead:
#export ERLANG_VERSION=$(cat elixir_buildpack.config | grep erlang_version | tr "=" " " | awk '{ print $2 }')
#export ELIXIR_VERSION=v$(cat elixir_buildpack.config | grep elixir_version | tr "=" " " | awk '{ print $2 }')
export INSTALL_PATH="$HOME/dependencies"
export ERLANG_PATH="$INSTALL_PATH/otp_src_$ERLANG_VERSION"
export ELIXIR_PATH="$INSTALL_PATH/elixir_$ELIXIR_VERSION"
mkdir -p $INSTALL_PATH
cd $INSTALL_PATH
# Install erlang
if [ ! -e $ERLANG_PATH/bin/erl ]; then
rm -f otp_src_$ERLANG_VERSION.tar.gz
curl -O -J -L http://www.erlang.org/download/otp_src_$ERLANG_VERSION.tar.gz
tar xzf otp_src_$ERLANG_VERSION.tar.gz
cd $ERLANG_PATH
./configure --enable-smp-support \
--enable-m64-build \
--disable-native-libs \
--disable-sctp \
--enable-threads \
--enable-kernel-poll \
--disable-hipe \
--without-javac
make
# Symlink to make it easier to setup PATH to run tests
ln -sf $ERLANG_PATH $INSTALL_PATH/erlang
fi
# Install elixir
export PATH="$ERLANG_PATH/bin:$PATH"
if [ ! -e $ELIXIR_PATH/bin/elixir ]; then
git clone https://github.com/elixir-lang/elixir $ELIXIR_PATH
cd $ELIXIR_PATH
git checkout $ELIXIR_VERSION
make
fi
rm -rf $INSTALL_PATH/elixir
# Symlink to make it easier to setup PATH to run tests
ln -sf $ELIXIR_PATH $INSTALL_PATH/elixir
export PATH="$ERLANG_PATH/bin:$ELIXIR_PATH/bin:$PATH"
# Install package tools
if [ ! -e $HOME/.mix/rebar ]; then
yes Y | LC_ALL=en_GB.UTF-8 mix local.hex
yes Y | LC_ALL=en_GB.UTF-8 mix local.rebar
fi
# Fetch and compile dependencies and application code (and include testing tools)
export MIX_ENV="circle"
cd $HOME/$CIRCLE_PROJECT_REPONAME
mix do deps.get, deps.compile, compile
#!/bin/bash
export MIX_ENV="circle"
export PATH="$HOME/dependencies/erlang/bin:$HOME/dependencies/elixir/bin:$PATH"
elixir -v
mix test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment