#!/bin/bash set -euxo pipefail # Build using a Docker container using the specified image and version. function docker_build() { local image="${1}" ; shift local version="${1}" ; shift local containerId containerId=$(docker create --network=host --rm -it -v "$(pwd)"/.cache:/src/.cache "${image}") docker start "${containerId}" docker exec "${containerId}" mkdir -p /src function docker_exec() { docker exec "${containerId}" bash -c "$@" } docker cp ./. "${containerId}":/src docker_exec "cd /src && yarn" docker_exec "cd /src && npm rebuild" docker_exec "cd /src && NODE_ENV=production VERSION=${version} yarn task build:server:binary" docker_exec "cd /src && yarn task package ${version}" docker cp "${containerId}":/src/release/. ./release/ docker stop "${containerId}" } function main() { local version=${VERSION:-} local ostype=${OSTYPE:-} if [[ -z "${version}" ]] ; then >&2 echo "Must set VERSION environment variable" exit 1 fi if [[ "${ostype}" == "darwin"* ]]; then NODE_ENV=production VERSION="${version}" yarn task build:server:binary yarn task package "${version}" else local image if [[ "$TARGET" == "alpine" ]]; then image="codercom/nbin-alpine" else image="codercom/nbin-centos" fi docker_build "${image}" "${version}" fi } main "$@"