pulumi/scripts/make_release.sh
Sean Gillespie d3fb639823 Ship nativeruntime.node as part of the SDK
Fixes #356. Instead of downloading a node binary with our closure
serialization code linked-in, this PR instead publishes the
`nativeruntime.node` produced by the NodeJS SDK build as part of the SDK.

This has a number of advantages. First, it is vastly more easy to
develop closure.cc in this configuration. Second, we have the ability
to ship different `nativeruntime.node`s side-by-side, paving the way
for enabling future versions of Node. Third, we don't have to stay
in the business of shipping custom builds of Node, although we do still
need to ship a version of Node with minor modifications in order for
Windows to still work.
2018-02-16 18:12:33 -08:00

64 lines
2 KiB
Bash
Executable file

#!/bin/bash
# make_release.sh will create a build package ready for publishing.
set -o nounset -o errexit -o pipefail
ROOT=$(dirname $0)/..
PUBDIR=$(mktemp -du)
GITHASH=$(git rev-parse HEAD)
PUBFILE=$(dirname ${PUBDIR})/${GITHASH}.tgz
VERSION=$(git describe --tags --dirty 2>/dev/null)
# Figure out which branch we're on. Prefer $TRAVIS_BRANCH, if set, since
# Travis leaves us at detached HEAD and `git rev-parse` just returns "HEAD".
BRANCH=${TRAVIS_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}
declare -a PUBTARGETS=(${GITHASH} ${VERSION} ${BRANCH})
# usage: run_go_build <path-to-package-to-build>
function run_go_build() {
local bin_suffix=""
local output_name=$(basename $(cd "$1" ; pwd))
if [ "$(go env GOOS)" = "windows" ]; then
bin_suffix=".exe"
fi
mkdir -p "${PUBDIR}/bin"
go build \
-ldflags "-X github.com/pulumi/pulumi/pkg/version.Version=${VERSION}" \
-o "${PUBDIR}/bin/${output_name}${bin_suffix}" \
"$1"
}
# usage: copy_package <path-to-module> <module-name>
copy_package() {
local module_root=${PUBDIR}/node_modules/$2
mkdir -p "${module_root}"
cp -R "$1" "${module_root}/"
if [ -e "${module_root}/node_modules" ]; then
rm -rf "${module_root}/node_modules"
fi
if [ -e "${module_root}/tests" ]; then
rm -rf "${module_root}/tests"
fi
}
# Build binaries
run_go_build "${ROOT}"
run_go_build "${ROOT}/sdk/nodejs/cmd/pulumi-langhost-nodejs"
# Copy over the langhost and dynamic provider
cp ${ROOT}/sdk/nodejs/pulumi-langhost-nodejs-exec ${PUBDIR}/bin/
cp ${ROOT}/sdk/nodejs/pulumi-provider-pulumi-nodejs ${PUBDIR}/bin/
# Copy over our custom Node plugin
mkdir -p ${PUBDIR}/bin/$(node --version)
cp ${ROOT}/sdk/nodejs/runtime/native/build/Release/nativeruntime.node ${PUBDIR}/bin/$(node --version)/nativeruntime.node
# Copy packages
copy_package "${ROOT}/sdk/nodejs/bin/." "@pulumi/pulumi"
# Tar up the file and then print it out for use by the caller or script.
tar -czf ${PUBFILE} -C ${PUBDIR} .
echo ${PUBFILE} ${PUBTARGETS[@]}