Our previous strategy of just using `git describe --tags --dirty` to compute a version caused issues. The major one was that since version sort lexigrapically, git's strategy of having a commit count without leading zeros lead to cases where 0.11.0-dev-9 was "newer than" 0.11.0-dev-10 which is not what you want at all. With this change, we compute a version by first seeing if the commit is tagged, and if so, we use that tag. Otherwise, we take the closest tag and to it append the unix timestamp of the commit and then append a git hash. Because we use the commit timestamp, things will sort correctly again. Part of pulumi/home#174
64 lines
2 KiB
Bash
Executable file
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=$(./get-version)
|
|
|
|
# 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-language-nodejs"
|
|
|
|
# Copy over the language and dynamic resource provider
|
|
cp ${ROOT}/sdk/nodejs/dist/pulumi-language-nodejs-exec ${PUBDIR}/bin/
|
|
cp ${ROOT}/sdk/nodejs/dist/pulumi-resource-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-v0.11.0.node ${PUBDIR}/bin/$(node --version)/nativeruntime-v0.11.0.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[@]}
|