From 143f73102049cd5b4ddfc3f5eb46f0d009bc4e31 Mon Sep 17 00:00:00 2001 From: Laurent Velez Date: Wed, 9 Nov 2022 10:49:49 +0000 Subject: [PATCH 1/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba701a7..7c32770 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository contains Application Package Format and Descriptor specified in ## Online resources - + ## License -- GitLab From 7e84e18437cd09ce22ebe286f0dddbb0df326bd6 Mon Sep 17 00:00:00 2001 From: velez Date: Wed, 9 Nov 2022 12:03:47 +0100 Subject: [PATCH 2/3] update CI/CD --- .gitlab-ci.yml | 48 ++++++++++++++++++ scripts/Dockerfile.puccini | 14 ++++++ scripts/build_tosca_parser.sh | 36 ++++++++++++++ scripts/parse_tosca_definitions.sh | 79 ++++++++++++++++++++++++++++++ scripts/puccini_parse.sh | 15 ++++++ 5 files changed, 192 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 scripts/Dockerfile.puccini create mode 100644 scripts/build_tosca_parser.sh create mode 100644 scripts/parse_tosca_definitions.sh create mode 100644 scripts/puccini_parse.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8728a52 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,48 @@ +# CI/CD: +# * branch Continuously Builds & Push TOSCA parser image + +#image: docker:latest + +#services: +# - docker:dind + +variables: + GIT_DEPTH: "3" + +stages: + - build + - test + +build-tosca-toolbox: + stage: build + script: + - echo "Building Cloudnet-TOSCA-toolbox image..." + - ./scripts/build_tosca_parser.sh -v "Cloudnet-TOSCA-toolbox" + - echo "Build finished" + +build-tosca-puccini: + stage: build + script: + - echo "Building Puccini image..." + - ./scripts/build_tosca_parser.sh -v "Puccini" + - echo "Build finished" + +test-definitions-cloudnet: + stage: test + script: + - echo "Parsing TOSCA definitions" + - ./scripts/parse_tosca_definitions.sh -v "Cloudnet-TOSCA-toolbox" + artifacts: + when: always + paths: + - debugCloudnet.log + +test-definitions-puccini: + stage: test + script: + - echo "Parsing TOSCA definitions" + - ./scripts/parse_tosca_definitions.sh -v "Puccini" + artifacts: + when: always + paths: + - debugPuccini.log diff --git a/scripts/Dockerfile.puccini b/scripts/Dockerfile.puccini new file mode 100644 index 0000000..ff41878 --- /dev/null +++ b/scripts/Dockerfile.puccini @@ -0,0 +1,14 @@ +FROM ubuntu:16.04 + +#COPY requirements.txt /requirements.txt +RUN apt-get update && apt-get install -y -qq curl git gcc +RUN curl -OL https://golang.org/dl/go1.18.3.linux-amd64.tar.gz +RUN tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz + +ENV PATH="${PATH}:/usr/local/go/bin" + +RUN git clone https://github.com/tliron/puccini.git /puccini + +RUN ./puccini/scripts/build + +ENV PATH="${PATH}:/root/go/bin" diff --git a/scripts/build_tosca_parser.sh b/scripts/build_tosca_parser.sh new file mode 100644 index 0000000..9f68332 --- /dev/null +++ b/scripts/build_tosca_parser.sh @@ -0,0 +1,36 @@ +#!/bin/bash +TOSCA_PARSER="Cloudnet-TOSCA-toolbox" +GIT_URL_TOSCA_TOOLBOX="https://github.com/Orange-OpenSource/Cloudnet-TOSCA-toolbox.git" +TOSCA_PARSER_FOLDER="tosca-parser/" + +while getopts v: flag +do + case "${flag}" in + v) TOSCA_PARSER=${OPTARG};; + esac +done + +if [ ${TOSCA_PARSER} == "Cloudnet-TOSCA-toolbox" ] ; then + # clone robot tests + git clone $GIT_URL_TOSCA_TOOLBOX $TOSCA_PARSER_FOLDER + cd $TOSCA_PARSER_FOLDER + + docker build -t cloudnet/toscaware bin/toscaware + + #pwd + #docker run -v "${PWD}:/work" -v "${PWD}/bin/cloudnet:/cloudnet" --workdir="/work" cloudnet/toscaware /bin/sh -c "echo Building image" + #docker run --name=tosca-parser -v "${PWD}:/work" --workdir="/work" cloudnet/toscaware /bin/sh -c "ls" + #sleep 5; + #container_to_update=`docker ps -n 1 --format '{{.Names}}'` + #echo "Creating updated image from container ${container_to_update}" + #docker container commit ${container_to_update} cloudnet/toscaware:latest + #echo "Deleting old container ${container_to_update}" + #docker container rm ${container_to_update} + +elif [ ${TOSCA_PARSER} == "Puccini" ] ; then + #Build Puccini docker from Dockerfile + docker build -t puccini -f scripts/Dockerfile.puccini . + +fi + +exit diff --git a/scripts/parse_tosca_definitions.sh b/scripts/parse_tosca_definitions.sh new file mode 100644 index 0000000..d2ff06c --- /dev/null +++ b/scripts/parse_tosca_definitions.sh @@ -0,0 +1,79 @@ +#!/bin/bash +TOSCA_PARSER="Cloudnet-TOSCA-toolbox" +GIT_URL_TOSCA_TOOLBOX="https://github.com/Orange-OpenSource/Cloudnet-TOSCA-toolbox.git" +TOSCA_PARSER_FOLDER="tosca-parser/" + +while getopts v: flag +do + case "${flag}" in + v) TOSCA_PARSER=${OPTARG};; + esac +done + +if [ ${TOSCA_PARSER} == "Cloudnet-TOSCA-toolbox" ] ; then + # Parse TOSCA definitions + echo "Cloudnet-TOSCA-toolbox: Validation starting ..." + # Cloudnet-TOSCA-toolbox + git clone $GIT_URL_TOSCA_TOOLBOX $TOSCA_PARSER_FOLDER + + mkdir ${TOSCA_PARSER_FOLDER}examples/mec037 + cp *.yaml -t ${TOSCA_PARSER_FOLDER}examples/mec037 + + cd ${TOSCA_PARSER_FOLDER}examples/mec037 + + CLOUDNET_BINDIR=../../bin + . ${CLOUDNET_BINDIR}/cloudnet_rc.sh + + finalResult=0 + for i in *.yaml ; do + + result=0 + echo "Cloudnet-TOSCA-toolbox: Validating file $i..." >> debugCloudnet.log + ../../bin/toscaware/toscaware $i &> debug.log + #docker ${DOCKER_OPTS} run --user "$(id -u)":"$(id -g)" -v "${PWD}/${TOSCA_PARSER_FOLDER}:/work" -v "${PWD}/${TOSCA_PARSER_FOLDER}/bin/cloudnet:/cloudnet" --workdir="/work" --rm --attach=stdin --attach=stdout --attach=stderr cloudnet/toscaware python ${PYTHON_OPTS} /cloudnet/tosca/tosca2cloudnet.py --template-file "$i" ${TOSCAWARE_OPTS} + + #docker ${DOCKER_OPTS} run --user "$(id -u)":"$(id -g)" --rm --attach=stdin --attach=stdout --attach=stderr cloudnet/toscaware python ${PYTHON_OPTS} /cloudnet/tosca/tosca2cloudnet.py --template-file "$1" ${TOSCAWARE_OPTS} + #./${TOSCA_PARSER_FOLDER}/bin/toscaware/toscaware $i $> debug.log + + if [ $? == 2 ] ; then + + echo "Cloudnet-TOSCA-toolbox: ++++ Issues found with TOSCA file syntax in $i" + grep "ERROR" < debug.log + finalResult=1 + else + echo "Cloudnet-TOSCA-toolbox: ++++ TOSCA parser finished validation of $i" + #Check the debug messages, if there's at least one ERROR then res=1 + if [ `grep "ERROR" < debug.log | wc -l` == 0 ] ; then + echo "++++ TOSCA parser finished validation of $i with no errors" + else + echo "Cloudnet-TOSCA-toolbox: ++++ TOSCA parser finished validation of $i with errors" + grep "ERROR" < debug.log + finalResult=1 + fi + fi + cat debug.log >> debugCloudnet.log + done + + cp debugCloudnet.log ../../../debugCloudnet.log +elif [ ${TOSCA_PARSER} == "Puccini" ] ; then + finalResult=0 + echo "Puccini: Validation starting ..." + + docker run --rm -v "${PWD}:/mec037" puccini ./mec037/scripts/puccini_parse.sh &> debugPuccini.log + + if [ $? == 0 ] ; then + echo "Puccini: ++++ TOSCA parser finished validation with no errors" + elif [ $? == 1 ] ; then + echo "Puccini: ++++ TOSCA parser finished validation with errors" + #Check the debug messages, if there's at least one ERROR then res=1 + #if [ `grep "PROBLEMS" < debug.log | wc -l` > 0 ] ; then + # echo "Puccini: ++++ ERRORS: " + # grep "PROBLEMS" < debug.log + # res=1 + #fi + finalResult=1 + fi + +fi + +exit $finalResult \ No newline at end of file diff --git a/scripts/puccini_parse.sh b/scripts/puccini_parse.sh new file mode 100644 index 0000000..19caa48 --- /dev/null +++ b/scripts/puccini_parse.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +res=0 +for i in /mec037/*.yaml ; do + + echo "Puccini: Validating file $i..." + + puccini-tosca parse $i + + if [ $? == 1 ] ; then + res=1 + fi + +done +exit $res \ No newline at end of file -- GitLab From a6d35e97874da8c21d549405783a6ec26e70fc11 Mon Sep 17 00:00:00 2001 From: velez Date: Wed, 9 Nov 2022 12:33:53 +0100 Subject: [PATCH 3/3] update --- scripts/build_tosca_parser.sh | 0 scripts/parse_tosca_definitions.sh | 0 scripts/puccini_parse.sh | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/build_tosca_parser.sh mode change 100644 => 100755 scripts/parse_tosca_definitions.sh mode change 100644 => 100755 scripts/puccini_parse.sh diff --git a/scripts/build_tosca_parser.sh b/scripts/build_tosca_parser.sh old mode 100644 new mode 100755 diff --git a/scripts/parse_tosca_definitions.sh b/scripts/parse_tosca_definitions.sh old mode 100644 new mode 100755 diff --git a/scripts/puccini_parse.sh b/scripts/puccini_parse.sh old mode 100644 new mode 100755 -- GitLab