realm-js/packaging/package.sh

81 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
set -e
script_path="$(pushd "$(dirname "$0")" >/dev/null; pwd)"
src_path="$(pushd "${script_path}/.." >/dev/null; pwd)"
. "${script_path}/functions.sh"
git_tag=$(git describe --exact-match --tags HEAD 2>/dev/null || true)
. "${src_path}/dependencies.list"
export PACKAGECLOUD_URL="https://${PACKAGECLOUD_MASTER_TOKEN}:@packagecloud.io/install/repositories/realm/sync-devel"
if [ -z "$git_tag" ]; then
info "No git tag exists. Triggering -devel build"
sha=$(git rev-parse HEAD | cut -b1-8)
ITERATION="0.$sha"
elif [ "$git_tag" != "v${VERSION}" ]; then
die "Git tag '$git_tag' does not match VERSION: '$VERSION'"
else
info "Found git tag: '$git_tag'. Triggering release build"
ITERATION="${BUILD_NUMBER:-1}"
fi
rm -rf "${src_path}/packaging/out"; mkdir -p "${src_path}/packaging/out"
cp "${src_path}/dependencies.list" "${src_path}/packaging/out/packaging.list"
cat <<-EOD >> "${src_path}/packaging/out/packaging.list"
ITERATION=$ITERATION
EXTRA_NPM_ARGUMENTS=$EXTRA_NPM_ARGUMENTS
EOD
env_file="${src_path}/packaging/out/packaging.list"
default="centos-6 centos-7 ubuntu-1604"
for distro in ${*:-$default}; do
distro_path="${src_path}/packaging/${distro}"
image_name="ci/${PACKAGE_NAME}:${distro}"
mkdir -p "${src_path}/packaging/out/$distro"
rm -f "${src_path}/packaging/out/$distro/*"
mkdir -p "${src_path}/packaging/test-logs/$distro"
rm -f "${src_path}/packaging/test-logs/$distro/*"
docker_build "${image_name}-base" "${distro_path}/base-image" \
--build-arg "PACKAGECLOUD_URL=$PACKAGECLOUD_URL"
docker_build "${image_name}-build" "${distro_path}/build-image"
info "Running '$distro' build..."
docker run \
--env-file "${env_file}" \
--rm \
-v "${src_path}/packaging/${distro}/files:/files:ro,z" \
-v "${src_path}/packaging/${distro}/build-image/inside:/inside:ro,z" \
-v "${src_path}:/source:ro,z" \
-v "${src_path}/packaging/common:/common:ro,z" \
-v "${src_path}/packaging/out/${distro}:/out:z" \
-w /inside "${image_name}-build" \
|| die "Build phase for '$distro' failed."
docker_build "${image_name}-test" "${distro_path}/test-image"
info "Running '$distro' tests..."
docker run \
--env-file "${env_file}" \
--rm \
-v "${src_path}/packaging/${distro}/test-image/inside:/inside:ro,z" \
-v "${src_path}/packaging/out/${distro}:/out:z" \
-v "${src_path}/packaging/test-logs/${distro}:/test-logs:z" \
-v "${src_path}/packaging/common:/common:ro,z" \
-w /inside "${image_name}-test" \
|| die "Test phase for '$distro' failed."
info "Test phase for '$distro' succeeded."
done