Skip to content
Snippets Groups Projects
Commit ef1a6126 authored by lukas leufen's avatar lukas leufen
Browse files

added all important CI shell scripts

parent 2ed36ebf
No related branches found
No related tags found
2 merge requests!6updated inception model and data prep class,!5Running CI
#!/bin/bash
VERSION="$(git describe --tags $(git rev-list --tags --max-count=1))"
COLOR="blue"
BADGE_NAME="version"
ls .
./CI/update_badge.sh -b ${BADGE_NAME} -c ${COLOR} -s ${VERSION}
exit 0
#!/bin/bash
# run pytest for all modules
python3 -m pytest test/ | tee test_results.out
IS_FAILED=$?
# exit 0 if no tests implemented
RUN_NO_TESTS="$(grep -c 'no tests ran' test_results.out)"
if [[ ${RUN_NO_TESTS} > 0 ]]; then
echo "no test available"
echo "incomplete" > status.txt
echo "no tests avail" > incomplete.txt
exit 0
fi
# extract if tests passed or not
TEST_FAILED="$(grep -oP '(\d+\s{1}failed)' test_results.out)"
TEST_FAILED="$(echo ${TEST_FAILED} | (grep -oP '\d*'))"
TEST_PASSED="$(grep -oP '\d+\s{1}passed' test_results.out)"
TEST_PASSED="$(echo ${TEST_PASSED} | (grep -oP '\d*'))"
if [[ -z "$TEST_FAILED" ]]; then
TEST_FAILED=0
fi
let "TEST_PASSED=${TEST_PASSED}-${TEST_FAILED}"
# calculate metrics
let "SUM=${TEST_FAILED}+${TEST_PASSED}"
let "TEST_PASSED_RATIO=${TEST_PASSED}*100/${SUM}"
# report
if [[ ${IS_FAILED} == 0 ]]; then
if [[ ${TEST_PASSED_RATIO} -lt 100 ]]; then
echo "only ${TEST_PASSED_RATIO}% passed"
echo "incomplete" > status.txt
echo "${TEST_PASSED_RATIO}%25 passed" > incomplete.txt
if [[ ${TEST_PASSED_RATIO} -lt ${FAILURE_THRESHOLD} ]]; then
echo -e "\033[1;31monly ${TEST_PASSED_RATIO}% passed!!\033[0m"
exit 1
fi
else
echo "passed"
echo "success" > status.txt
fi
exit 0
else
echo "not passed"
exit 1
fi
#!/usr/bin/env bash
# run coverage twice, 1) for html deploy 2) for success evaluation
python3 -m pytest --cov=${CODE_PATH} --cov-report html
python3 -m pytest --cov=${CODE_PATH} --cov-report term | tee coverage_results.out
IS_FAILED=$?
# move html coverage report
mkdir coverage/
BRANCH_NAME=$( echo -e "${CI_COMMIT_REF_NAME////_}")
mkdir coverage/${BRANCH_NAME}
mkdir coverage/recent
cp -r htmlcov/* coverage/${BRANCH_NAME}/.
cp -r htmlcov/* coverage/recent/.
if [[ "${CI_COMMIT_REF_NAME}" = "master" ]]; then
cp -r htmlcov/* coverage/.
fi
# extract coverage information
COVERAGE_RATIO="$(grep -oP '\d+\%' coverage_results.out | tail -1)"
COVERAGE_RATIO="$(echo ${COVERAGE_RATIO} | (grep -oP '\d*'))"
# report
if [[ ${IS_FAILED} == 0 ]]; then
if [[ ${COVERAGE_RATIO} -lt ${COVERAGE_PASS_THRESHOLD} ]]; then
echo "only ${COVERAGE_RATIO}% covered"
echo "incomplete" > status.txt
echo "${COVERAGE_RATIO}%25" > incomplete.txt
if [[ ${COVERAGE_RATIO} -lt ${FAILURE_THRESHOLD} ]]; then
echo -e "\033[1;31monly ${COVERAGE_RATIO}% covered!!\033[0m"
exit 1
fi
else
echo "passed"
echo "success" > status.txt
echo "${COVERAGE_RATIO}%25" > success.txt
fi
exit 0
else
echo "not passed"
exit 1
fi
#!/bin/bash
# 'running', 'success' or 'failure' is in this file
if [[ -e status.txt ]]; then
EXIT_STATUS=`cat status.txt`
else
EXIT_STATUS="running"
fi
printf "%s\n" ${EXIT_STATUS}
# fetch badge_status
BADGE_STATUS="${CI_COMMIT_REF_NAME}:${CI_JOB_NAME}"
# replace - with --
BADGE_STATUS=$( echo -e "${BADGE_STATUS//\-/--}")
# Set values for shields.io fields based on STATUS
if [[ ${EXIT_STATUS} = "running" ]]; then
BADGE_SUBJECT="running"
BADGE_COLOR="lightgrey"
elif [[ ${EXIT_STATUS} = "failure" ]]; then
BADGE_SUBJECT="failed"
BADGE_COLOR="red"
elif [[ ${EXIT_STATUS} = "success" ]]; then
BADGE_SUBJECT="passed"
BADGE_COLOR="brightgreen"
if [[ -e success.txt ]]; then
SUCCESS_MESSAGE=`cat success.txt`
BADGE_SUBJECT="${SUCCESS_MESSAGE}"
fi
elif [[ ${EXIT_STATUS} = "incomplete" ]]; then
EXIT_STATUS_MESSAGE=`cat incomplete.txt`
BADGE_SUBJECT="${EXIT_STATUS_MESSAGE}"
EXIT_STATUS_RATIO="$(echo ${EXIT_STATUS_MESSAGE} | (grep -oP '\d*') | head -1)"
printf "%s\n" ${EXIT_STATUS_RATIO}
if [[ "${EXIT_STATUS_RATIO}" -lt "${FAILURE_THRESHOLD}" ]]; then
BADGE_COLOR="red"
else
BADGE_COLOR="yellow"
fi
else
exit 1
fi
# load additional options
while getopts b:c:s: option
do
case ${option} in
b) BADGE_STATUS=$( echo -e "${OPTARG//\-/--}");;
c) BADGE_COLOR=$( echo -e "${OPTARG//\-/--}");;
s) BADGE_SUBJECT=$( echo -e "${OPTARG//\-/--}");;
esac
done
# Set filename for the badge (i.e. 'ci-test-branch-job.svg')
CI_COMMIT_REF_NAME_NO_SLASH="$( echo -e "${CI_COMMIT_REF_NAME}" | tr '/' '_' )"
if [[ ${BADGE_STATUS} = "version" ]]; then
BADGE_FILENAME="badge_version.svg"
else
BADGE_FILENAME="badge_${CI_COMMIT_REF_NAME_NO_SLASH}-${CI_JOB_NAME}.svg"
fi
RECENT_BADGE_FILENAME="badge_recent-${CI_JOB_NAME}.svg"
# Get the badge from shields.io
SHIELDS_IO_NAME=${BADGE_STATUS}-${BADGE_SUBJECT}-${BADGE_COLOR}.svg
printf "%s\n" "INFO: Fetching badge ${SHIELDS_IO_NAME} from shields.io to ${BADGE_FILENAME}."
printf "%s\n" "${SHIELDS_IO_NAME//\_/__}"
printf "%s\n" "${SHIELDS_IO_NAME//\#/%23}"
SHIELDS_IO_NAME="$( echo -e "${SHIELDS_IO_NAME//\_/__}" )"
SHIELDS_IO_NAME="$( echo -e "${SHIELDS_IO_NAME//\#/%23}")"
curl "https://img.shields.io/badge/${SHIELDS_IO_NAME}" > ${BADGE_FILENAME}
echo "https://img.shields.io/badge/${SHIELDS_IO_NAME}"
SHIELDS_IO_NAME_RECENT="RECENT:${SHIELDS_IO_NAME}"
curl "https://img.shields.io/badge/${SHIELDS_IO_NAME_RECENT}" > ${RECENT_BADGE_FILENAME}
echo "${SHIELDS_IO_NAME_RECENT}" > testRecentName.txt
#
if [[ ! -d ./badges ]]; then
# Control will enter here if $DIRECTORY doesn't exist.
mkdir badges/
fi
mv ${BADGE_FILENAME} ./badges/.
# replace outdated recent badge by new badge
mv ${RECENT_BADGE_FILENAME} ./badges/${RECENT_BADGE_FILENAME}
# set status to failed, this will be overwritten if job ended with exitcode 0
echo "failed" > status.txt
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment