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
Branches
Tags
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