Copy #!/usr/bin/env bash
DOMAIN="<domain>"
SL_API_TOKEN="<api-token>"
# Edit these variables to set the desired report configuration
APP_NAME="app1"
BRANCH_NAME="branch1"
#SELECTED_TEST_STAGES=("Unit Tests" "E2E Tests")
#DATE_RANGE_LABEL="LAST_SIX_MONTHS"
#REPORT_START_DATE="2022-01-22"
#REPORT_END_DATE="2022-02-22"
#ALL_BUILDS="true"
#INTERVAL="ONE_MONTH"
#NUM_OF_METHODS_CHART_ELEMENT="false"
#ALL_TEST_STAGES="false"
#COVERAGE_GATE_CHART_ELEMENT="false"
echo "Creating request payload"
if [ -z ${APP_NAME+x} ]; then
echo "Missing app name"
exit 1
fi
if [ -z ${BRANCH_NAME+x} ]; then
echo "Missing branch name"
exit 1
fi
REQUEST_PAYLOAD=$(
jq -n \
--arg appName "$APP_NAME" \
--arg branchName "$BRANCH_NAME" \
'{appName: $appName, branchName: $branchName}'
)
if [ ! -z ${ALL_BUILDS+x} ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg allBuilds "$ALL_BUILDS" \
'.allBuilds |= $allBuilds'
)
fi
if [ "$ALL_BUILDS" == "true" -a ! -z "${INTERVAL+x}" ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg interval "$INTERVAL" \
'.interval |= $interval'
)
fi
if [ ! -z "${SELECTED_TEST_STAGES+x}" ]; then
TEST_STAGES_ARR=$(for i in "${SELECTED_TEST_STAGES[@]}"; do echo "\"$i\""; done)
TEST_STAGES_JSON_ARR="[$(sed 's/" "/", "/g' <<< "$(echo $TEST_STAGES_ARR)")]"
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--argjson testStages "$TEST_STAGES_JSON_ARR" \
'.testStages |= $testStages'
)
fi
if [ ! -z "${DATE_RANGE_LABEL+x}" ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg dateRangeLabel "$DATE_RANGE_LABEL" \
'.dateRangeLabel |= $dateRangeLabel'
)
fi
if [ "$DATE_RANGE_LABEL" == "CUSTOM" ]; then
if [ -z ${REPORT_START_DATE+x} ]; then
echo "Missing start date"
exit 1
fi
if [ -z ${REPORT_END_DATE+x} ]; then
echo "Missing end date"
exit 1
fi
REPORT_START_DATE_UNIX=`date -d "${REPORT_START_DATE}" +%s%3N`
REPORT_END_DATE_UNIX=`date -d "${REPORT_END_DATE}" +%s%3N`
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--argjson from $REPORT_START_DATE_UNIX \
--argjson to $REPORT_END_DATE_UNIX \
'.from |= $from | .to |= $to'
)
fi
if [ ! -z ${DATE_RANGE_LABEL+x} ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg dateRangeLabel "$DATE_RANGE_LABEL" \
'.dateRangeLabel |= $dateRangeLabel'
)
fi
if [ ! -z ${NUM_OF_METHODS_CHART_ELEMENT+x} ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg numOfMethodsChartElement "$NUM_OF_METHODS_CHART_ELEMENT" \
'.numOfMethodsChartElement |= $numOfMethodsChartElement'
)
fi
if [ ! -z ${ALL_TEST_STAGES+x} ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg allTestStages "$ALL_TEST_STAGES" \
'.allTestStages |= $allTestStages'
)
fi
if [ ! -z ${COVERAGE_GATE_CHART_ELEMENT+x} ]; then
REQUEST_PAYLOAD=$(
echo $REQUEST_PAYLOAD | jq \
--arg coverageGateChartElement "$COVERAGE_GATE_CHART_ELEMENT" \
'.coverageGateChartElement |= $coverageGateChartElement'
)
fi
echo "Getting report url: ${REQUEST_PAYLOAD}"
RESPONSE=$(curl -s -X POST -H "Authorization: Bearer $SL_API_TOKEN" \
-H "Accept: application/json" -H "Content-Type: application/json" --data "${REQUEST_PAYLOAD}" \
"https://$DOMAIN/sl-api/v1/quality-analytics/trend-reports/single/url"
)
ERROR_MSG=$(
echo $RESPONSE | jq -r '.error.message'
)
ERROR_CODE=$(
echo $RESPONSE | jq -r '.error.code'
)
REPORT_URL=$(
echo $RESPONSE | jq -r '.data.reportUrl'
)
if [ "${ERROR_CODE}" != "null" ]; then
echo $ERROR_MSG
exit $ERROR_CODE
fi
echo "Saving url '$REPORT_URL' to './report.url'"
echo $REPORT_URL > 'report.url'