cross_build.sh 748 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/bash
  2. set -euo pipefail
  3. set -x
  4. get_app() {
  5. mix run -e "Mix.Project.config[:app] |> IO.puts" | tail -1
  6. }
  7. get_version() {
  8. mix run -e "Mix.Project.config[:version] |> IO.puts" | tail -1
  9. }
  10. APP_NAME=`get_app`
  11. APP_VERSION=`get_version`
  12. OS_VERSION=${OS_VERSION?not set}
  13. MIX_ENV=${MIX_ENV-prod}
  14. ROOT_DIR=`pwd`
  15. SOURCE_DIR=$ROOT_DIR
  16. BUILD_DIR=$ROOT_DIR/priv/build/
  17. DOCKER_DIR=$BUILD_DIR/$OS_VERSION
  18. DOCKER_IMAGE_VERSION=`echo $APP_VERSION | sed "s#+#-#"`
  19. DOCKER_IMAGE_TAG=$APP_NAME-$OS_VERSION:$DOCKER_IMAGE_VERSION
  20. build_image() {
  21. docker build -t $DOCKER_IMAGE_TAG $DOCKER_DIR
  22. }
  23. build_binary() {
  24. docker run -e SOURCE_DIR=/app -e MIX_ENV=$MIX_ENV -v $ROOT_DIR:/app $DOCKER_IMAGE_TAG /app/priv/build/build.sh
  25. }
  26. build_image
  27. build_binary