blob: c3ba6f8da4ac0c71e3a3b66b55aa5b22ac71477d [file] [log] [blame]
#!/bin/bash
#*******************************************************************************
# Copyright (c) 2019 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Sravan Kumar Lakkimsetti - initial API and implementation
#*******************************************************************************
# USAGE: fn-write-property VAR_NAME
# VAR_NAME: Variable name to write as "variable=value" form
# This script assumes the following variables have been defined and are pointing
# to an appropriate file (see master-build.sh):
# BUILD_ENV_FILE=${buildDirectory}/buildproperties.shsource
# BUILD_ENV_FILE_PHP=${buildDirectory}/buildproperties.php
# BUILD_ENV_FILE_PROP=${buildDirectory}/buildproperties.properties
# Note we always append to file, assuming if doesn't exist yet and will be
# created, and for each build, it won't exist, so will be written fresh for
# each build.
fn-write-property ()
{
echo "export $1=$2" >> $BUILD_ENV_FILE
echo "\$$1 = $2;" >> $BUILD_ENV_FILE_PHP
echo "$1 = $2" >> $BUILD_ENV_FILE_PROP
}
# this function executes command passed as command line parameter and
# if that command fails it exit with the same error code as the failed command
fn-run-command ()
{
$*
returnCode=$?
if [ $returnCode != 0 ]; then
echo "Execution of \"$*\" failed with return code : $returnCode"
exit $returnCode
fi
}
fn-notarize-macbuild ()
{
set -x
BUILD_DIR="$1"; shift
DMG="$1"; shift
pushd "$BUILD_DIR" || exit 5
PRIMARY_BUNDLE_ID="${DMG//-macosx-cocoa-x86_64.dmg/}"
retryCount=3
while [ ${retryCount} -gt 0 ]; do
RAW_RESPONSE=$(curl -sS --write-out "\n%{http_code}" -X POST -F file=@"${DMG}" -F 'options={"primaryBundleId": "'"${PRIMARY_BUNDLE_ID}"'", "staple": true};type=application/json' http://172.30.206.146:8383/macos-notarization-service/notarize || : )
RESPONSE=$(head -n-1 <<<"${RAW_RESPONSE}")
STATUS_CODE=$(tail -n1 <<<"${RAW_RESPONSE}")
if [[ "${STATUS_CODE}" != "200" ]]; then
echo "Bad response from the server (status=${STATUS_CODE})"
echo "${RESPONSE}"
retryCount=$((retryCount - 1))
if [ $retryCount -eq 0 ]; then
echo "Notarization failed 3 times. Exiting"
exit 1
else
echo "Retrying..."
sleep 2
fi
fi
UUID=$(echo "$RESPONSE" | grep -Po '"uuid"\s*:\s*"\K[^"]+' || : )
STATUS=$(echo "$RESPONSE" | grep -Po '"status"\s*:\s*"\K[^"]+' || : )
while [[ ${STATUS} == 'IN_PROGRESS' ]]; do
sleep 1m
RESPONSE=$(curl -sS "http://172.30.206.146:8383/macos-notarization-service/${UUID}/status")
STATUS=$(echo "$RESPONSE" | grep -Po '"status"\s*:\s*"\K[^"]+' || : )
done
if [[ ${STATUS} != 'COMPLETE' ]]; then
echo "Notarization failed: ${RESPONSE}"
retryCount=$((retryCount - 1))
if [ $retryCount -eq 0 ]; then
echo "Notarization failed 3 times. Exiting"
exit 1
else
echo "Retrying..."
sleep 2
fi
else
break
fi
done
rm "${DMG}"
curl -sSJO "http://172.30.206.146:8383/macos-notarization-service/${UUID}/download"
popd || exit 5
set +x
}