From 2819e7437ca0bcce0383be505b146fba4397964a Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 18 Sep 2019 16:53:51 +0200 Subject: [PATCH] Devop --- .jenkins.sh | 15 +++++++++++ scripts/build-container.sh | 36 ++++++++++++++++++++++++++ scripts/docker/Dockerfile | 49 ++++++++++++++++++++++++++++++++++++ scripts/launch-validation.sh | 0 scripts/run-all.bash | 21 ++++++++++++++-- scripts/run-container.sh | 15 +++++++++++ 6 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 .jenkins.sh create mode 100755 scripts/build-container.sh create mode 100644 scripts/docker/Dockerfile mode change 100644 => 100755 scripts/launch-validation.sh mode change 100644 => 100755 scripts/run-all.bash create mode 100755 scripts/run-container.sh diff --git a/.jenkins.sh b/.jenkins.sh new file mode 100644 index 0000000..ea4251e --- /dev/null +++ b/.jenkins.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -vx +#set -e + +cd "$(dirname "$0")" + +run_dir="$(pwd)" + +./scripts/build-container.sh +./scripts/run-container.sh "${run_dir}" + +exit $? diff --git a/scripts/build-container.sh b/scripts/build-container.sh new file mode 100755 index 0000000..df57c1f --- /dev/null +++ b/scripts/build-container.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright ETSI 2019 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +set -vx + +DOCKER_FILE=./scripts/docker/Dockerfile +if [ -f ${DOCKER_FILE} ] +then + #check and build stf569-rf image + DOCKER_ID=`docker ps -a | grep -e stf569-rf | awk '{ print $1 }'` + if [ ! -z "${DOCKER_ID}" ] + then + docker rm --force stf569-rf + fi + docker build --tag stf569-rf --force-rm -f ${DOCKER_FILE} . + if [ "$?" != "0" ] + then + echo "Docker build failed: $?" + exit -1 + fi + docker image ls -a + docker inspect stf569-rf:latest + if [ "$?" != "0" ] + then + echo "Docker inspect failed: $?" + exit -2 + fi +else + exit -3 +fi + +# That's all Floks +exit 0 + diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile new file mode 100644 index 0000000..d770424 --- /dev/null +++ b/scripts/docker/Dockerfile @@ -0,0 +1,49 @@ +FROM ubuntu:16.04 + +MAINTAINER ETSI STF 569 + +LABEL description="SFT569 Robot Framework Docker Image" + +ENV TERM=xterm +ENV HOSTNAME docker-robot-STF569 + + +ARG ssh_prv_key + + + +RUN DEBIAN_FRONTEND=noninteractive apt update \ + && apt install python3 -y \ + && apt install python3-pip -y \ + && apt install openssh-server -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ + && rm -rf /var/lib/apt/lists/* + + +RUN echo "docker-robot-STF569" > /etc/hostname \ + && echo "root:etsi" | chpasswd + +RUN useradd --create-home --shell /bin/bash --user-group etsi --groups sudo \ + && echo "etsi:etsi" | chpasswd \ + && adduser etsi sudo \ + && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + + +RUN DEBIAN_FRONTEND=noninteractive \ + && mkdir -p /home/etsi/dev/robot \ + && cd /home/etsi/dev/robot + + +ADD . /home/etsi/dev/robot + +RUN pip3 install robotframework + +RUN DEBIAN_FRONTEND=noninteractive \ + && cd /home/etsi/dev/robot \ + && pip3 install -r requirements.txt \ + && chmod +x /home/etsi/dev/robot/scripts/* + +CMD tail -f /dev/null + + diff --git a/scripts/launch-validation.sh b/scripts/launch-validation.sh old mode 100644 new mode 100755 diff --git a/scripts/run-all.bash b/scripts/run-all.bash old mode 100644 new mode 100755 index 310b9d4..38edbc4 --- a/scripts/run-all.bash +++ b/scripts/run-all.bash @@ -2,7 +2,9 @@ ## Launch robot tests validator -/bin/bash /scripts/launch-validation.sh > logs/robot_stdout.log 2> logs/robot_stderr.log +mkdir logs + +/bin/bash scripts/launch-validation.sh > logs/robot_stdout.log 2> logs/robot_stderr.log ## Filter failed Keywords grep -r10n "| FAIL |" logs/robot_stdout.log | grep -v "Output:" | grep -v "Log:" | grep -v "Report:" > logs/failures.log @@ -18,4 +20,19 @@ ERRORS=`awk 'END{print NR}' logs/errors.log logs/failures.log` if [ "${ERRORS}" -eq 0 ]; then rm -f logs/errors.log rm -f logs/failures.log -fi \ No newline at end of file +fi + + +if [ ! -z logs/errors.log ]; then + cat logs/errors.log +fi + +if [ ! -z logs/failures.log ]; then + cat logs/failures.log +fi + +if [ ! -z logs/erros.log ] || [ ! -z logs.failures.log ]; then + echo "Errors are found. Job failed" + exit 1 +fi + diff --git a/scripts/run-container.sh b/scripts/run-container.sh new file mode 100755 index 0000000..72b31e0 --- /dev/null +++ b/scripts/run-container.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Copyright ETSI 2019 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +#set -vx + +docker run stf569-rf:latest "/bin/bash" \ + -c "cd /home/etsi/dev/robot \ + && sh scripts/run-all.bash \ + && ls -ltr logs/" + +# That's all Floks +exit $? + -- GitLab