Skip to content
Snippets Groups Projects
Commit bee973e9 authored by Sabine Schröder's avatar Sabine Schröder
Browse files

pick working CI settings and files from master

parent 4748c15d
Branches
No related tags found
2 merge requests!224preparation for testing the (re-)integrated AAI; started strictly separating...,!223preparation for testing the (re-)integrated AAI; making toar2_category available
Checking pipeline status
......@@ -8,6 +8,7 @@ variables:
PGPASSWORD: postgres
stages:
- init
- test
- deploy
- pages
......@@ -17,7 +18,26 @@ cache:
paths:
- public/docs/
#### Test ####
### Static Badges ###
version:
stage: init
tags:
- linux
- opensuse
only:
- master
- tags
script:
- chmod +x ./CI/update_badge.sh
artifacts:
name: pages
when: always
paths:
- badges/
#### Tests ####
test:
stage: test
services:
......@@ -27,6 +47,9 @@ test:
- public-docker
variables:
FAILURE_THRESHOLD: 85
before_script:
- chmod +x ./CI/update_badge.sh
- ./CI/update_badge.sh > /dev/null
script:
- apt-get update && apt-get install -y postgresql-client
- pip install --upgrade pip
......@@ -34,6 +57,43 @@ test:
- psql -h postgres -U $POSTGRES_USER -d $POSTGRES_DB -f tests/fixtures/toardb_pytest.psql
- chmod +x ./CI/do_pytest.sh
- ./CI/do_pytest.sh
after_script:
- ./CI/update_badge.sh > /dev/null
artifacts:
name: pages
when: always
paths:
- badges/
coverage:
stage: test
services:
- name: postgis/postgis
alias: postgres
tags:
- public-docker
variables:
FAILURE_THRESHOLD: 50
COVERAGE_PASS_THRESHOLD: 45
before_script:
- chmod +x ./CI/update_badge.sh
- ./CI/update_badge.sh > /dev/null
script:
- apt-get update && apt-get install -y postgresql-client
- pip install --upgrade pip
- pip install coverage
- pip install --no-cache-dir -r requirements.txt
- psql -h postgres -U $POSTGRES_USER -d $POSTGRES_DB -f tests/fixtures/toardb_pytest.psql
- chmod +x ./CI/do_pytest_coverage.sh
- ./CI/do_pytest_coverage.sh
after_script:
- ./CI/update_badge.sh > /dev/null
artifacts:
name: pages
when: always
paths:
- badges/
- coverage/
#### Documentation ####
docs:
......@@ -68,6 +128,12 @@ pages:
- dev
when: always
script:
- mkdir -p public/badges/
- cp -af badges/badge_*.svg public/badges/
- ls public/badges/
- mkdir -p public/coverage
- cp -af coverage/. public/coverage
- ls public/coverage
- mkdir -p public/docs
- cp -af docs/_build/html/* public/docs
- ls public/docs/
......@@ -76,4 +142,10 @@ pages:
when: always
paths:
- public/
- badges/
- coverage/
cache:
key: old-pages
paths:
- public/badges/
- public/coverage/
#!/usr/bin/env bash
export PYTHONPATH=/builds/esde/toar-data/toardb_fastapi/
# run coverage twice, 1) for html deploy 2) for success evaluation
coverage run -m pytest tests
coverage html
coverage report | 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