From 7a4397699aa2a1bc64e21b12a84c918ed30e8afe Mon Sep 17 00:00:00 2001 From: Fatih Degirmenci Date: Tue, 7 May 2019 10:39:31 +0200 Subject: [PATCH] Fix scenario verification jobs Change-Id: I9d99820cd1d3493fa24d23b2af061fb455afa280 --- jjb/cloud-infra/cloud-infra-macros.yaml | 15 ++++ .../cloud-infra-scenario-deploy.sh | 72 +----------------- jjb/cloud-infra/cloud-infra-scenario-test.sh | 70 +---------------- .../cloud-infra-verify-scenario.yaml | 2 + jjb/cloud-infra/determine-scenario.sh | 75 +++++++++++++++++++ ...rify.sh => prepare-for-scenario-deploy.sh} | 19 +++++ jjb/cloud-infra/prepare-for-scenario-test.sh | 47 ++++++++++++ 7 files changed, 161 insertions(+), 139 deletions(-) create mode 100644 jjb/cloud-infra/determine-scenario.sh rename jjb/cloud-infra/{prepare-for-scenario-verify.sh => prepare-for-scenario-deploy.sh} (65%) create mode 100644 jjb/cloud-infra/prepare-for-scenario-test.sh diff --git a/jjb/cloud-infra/cloud-infra-macros.yaml b/jjb/cloud-infra/cloud-infra-macros.yaml index 499c41aeb..a7185aef8 100644 --- a/jjb/cloud-infra/cloud-infra-macros.yaml +++ b/jjb/cloud-infra/cloud-infra-macros.yaml @@ -49,17 +49,32 @@ - shell: !include-raw: ./cloud-infra-test.sh +- builder: + name: 'cloud-infra-determine-scenario-macro' + builders: + - shell: + !include-raw: ./determine-scenario.sh + - inject: + properties-file: "$WORKSPACE/change.properties" + - description-setter: + description: "Installer: $INSTALLER_TYPE - Scenario: $DEPLOY_SCENARIO" + - builder: name: 'cloud-infra-scenario-deploy-macro' builders: - shell: !include-raw: ./wait-for-pkg-manager.sh + - shell: + !include-raw: ./prepare-for-scenario-deploy.sh - shell: !include-raw: ./cloud-infra-scenario-deploy.sh - builder: name: 'cloud-infra-scenario-functest-macro' builders: + - shell: + !include-raw: ./prepare-for-scenario-test.sh - shell: !include-raw: ./cloud-infra-scenario-test.sh + # vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/cloud-infra-scenario-deploy.sh b/jjb/cloud-infra/cloud-infra-scenario-deploy.sh index 978ab61f4..e81da3362 100644 --- a/jjb/cloud-infra/cloud-infra-scenario-deploy.sh +++ b/jjb/cloud-infra/cloud-infra-scenario-deploy.sh @@ -22,73 +22,6 @@ set -o errexit set -o nounset set -o pipefail -# this function processes commit message to determine the impacted scenario -# using the input provided by the committer. -# -# installer type and scenario should be placed at the beginning of lines -# separately and the format of the entry in commit message is as below -# -# installer-type: -# deploy-scenario: -# -# example is -# -# installer-type: kubespray -# deploy-scenario: k8-calico-nofeature -function override_installer_scenario() { - echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC to determine the installer and the scenario" - cd $WORKSPACE - COMMIT_MESSAGE=$(git show -s --format=%B) - - if [[ "$COMMIT_MESSAGE" =~ "deploy-scenario:" && "$COMMIT_MESSAGE" =~ "installer-type:" ]]; then - export INSTALLER_TYPE=$(echo "$COMMIT_MESSAGE" | grep '^installer-type:' | cut -d":" -f2 | sed 's/\s*//g') - export DEPLOY_SCENARIO=$(echo "$COMMIT_MESSAGE" | grep '^deploy-scenario:' | cut -d":" -f2 | sed 's/\s*//g') - generate_temporary_sdf - else - echo "Installer type or deploy scenario is not specified." - echo "Falling back to programmatically determining them." - determine_scenario - fi -} - -# this function will process the changed files to determine the impacted scenario -# if it is no specified by the committer. only one scenario per change should be -# touched. -# TODO: this is not implented yet. -function determine_scenario() { - echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC" - cd $WORKSPACE - COMMIT_MESSAGE=$(git show -s --format=%B) - echo "Not implemented!" - exit 1 -} - -# this function generates temporary sdf file with the details of the impacted -# scenario. -function generate_temporary_sdf() { -echo "Generating temporary SDF to use for verification" - cat << EOF > $WORKSPACE/sdf.yml -scenario: - $DEPLOY_SCENARIO: - scm: git - src: $PROJECT_GIT_URL - version: $GERRIT_PATCHSET_REVISION - refspec: $GERRIT_REFSPEC - installers: - $INSTALLER_TYPE: - role: scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO - distros: - - ubuntu -EOF -} - -echo "Determining the impacted scenario" - -declare -a DEPLOY_SCENARIO - -override_installer_scenario -generate_temporary_sdf - # determine PDF if [[ $DEPLOY_TYPE == "baremetal" ]]; then PDF="https://gerrit.nordix.org/gitweb?p=infra/hwconfig.git;a=blob_plain;f=pods/${NODE_NAME}-pdf.yml" @@ -100,8 +33,7 @@ fi # clone infra/engine repository echo "Deploying scenario $DEPLOY_SCENARIO using $INSTALLER_TYPE" -cd $WORKSPACE && git clone -q $ENGINE_REPO_URL -cd engine -./engine/deploy.sh -d kubespray -s $DEPLOY_SCENARIO -p $PDF -i $IDF -b $WORKSPACE/sdf.yml -c +cd $WORKSPACE +./engine/deploy.sh -d $INSTALLER_TYPE -s $DEPLOY_SCENARIO -p $PDF -i $IDF -b $WORKSPACE/sdf.yml -c # vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/cloud-infra-scenario-test.sh b/jjb/cloud-infra/cloud-infra-scenario-test.sh index 755ad730c..e1b92d17d 100644 --- a/jjb/cloud-infra/cloud-infra-scenario-test.sh +++ b/jjb/cloud-infra/cloud-infra-scenario-test.sh @@ -26,77 +26,9 @@ set -o errexit set -o nounset set -o pipefail -# this function processes commit message to determine the impacted scenario -# using the input provided by the committer. -# -# installer type and scenario should be placed at the beginning of lines -# separately and the format of the entry in commit message is as below -# -# installer-type: -# deploy-scenario: -# -# example is -# -# installer-type: kubespray -# deploy-scenario: k8-calico-nofeature -function override_installer_scenario() { - echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC to determine the installer and the scenario" - cd $WORKSPACE - COMMIT_MESSAGE=$(git show -s --format=%B) - - if [[ "$COMMIT_MESSAGE" =~ "deploy-scenario:" && "$COMMIT_MESSAGE" =~ "installer-type:" ]]; then - export INSTALLER_TYPE=$(echo "$COMMIT_MESSAGE" | grep '^installer-type:' | cut -d":" -f2 | sed 's/\s*//g') - export DEPLOY_SCENARIO=$(echo "$COMMIT_MESSAGE" | grep '^deploy-scenario:' | cut -d":" -f2 | sed 's/\s*//g') - generate_temporary_sdf - else - echo "Installer type or deploy scenario is not specified." - echo "Falling back to programmatically determining them." - determine_scenario - fi -} - -# this function will process the changed files to determine the impacted scenario -# if it is no specified by the committer. only one scenario per change should be -# touched. -# TODO: this is not implented yet. -function determine_scenario() { - echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC" - cd $WORKSPACE - COMMIT_MESSAGE=$(git show -s --format=%B) - echo "Not implemented!" - exit 1 -} - -# this function generates temporary sdf file with the details of the impacted -# scenario. -function generate_temporary_sdf() { -echo "Generating temporary SDF to use for verification" - cat << EOF > $WORKSPACE/sdf.yml -scenario: - $DEPLOY_SCENARIO: - scm: git - src: $PROJECT_GIT_URL - version: $GERRIT_PATCHSET_REVISION - refspec: $GERRIT_REFSPEC - installers: - $INSTALLER_TYPE: - role: scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO - distros: - - ubuntu -EOF -} - -echo "Determining the impacted scenario" - -declare -a DEPLOY_SCENARIO - -override_installer_scenario -generate_temporary_sdf - # execute cloud engine test.sh script with arguments echo "Testing scenario $DEPLOY_SCENARIO deployed using $INSTALLER_TYPE" -cd $WORKSPACE && git clone -q $TEST_REPO_URL -cd test +cd $WORKSPACE ./test/test.sh -c -f $TEST_FW -t $TEST_SUITE -s $DEPLOY_SCENARIO # vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/cloud-infra-verify-scenario.yaml b/jjb/cloud-infra/cloud-infra-verify-scenario.yaml index 0d4157061..14894ec1b 100644 --- a/jjb/cloud-infra/cloud-infra-verify-scenario.yaml +++ b/jjb/cloud-infra/cloud-infra-verify-scenario.yaml @@ -160,6 +160,7 @@ files: '**' builders: + - 'cloud-infra-determine-scenario-macro' - multijob: name: deploy condition: SUCCESSFUL @@ -282,6 +283,7 @@ refspec: $GERRIT_REFSPEC builders: + - 'cloud-infra-determine-scenario-macro' - 'cloud-infra-scenario-{phase}-macro' # vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/determine-scenario.sh b/jjb/cloud-infra/determine-scenario.sh new file mode 100644 index 000000000..e9d764991 --- /dev/null +++ b/jjb/cloud-infra/determine-scenario.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# ============LICENSE_START======================================================= +# Copyright (C) 2019 The Nordix Foundation. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +set -o errexit +set -o nounset +set -o pipefail + +# this function processes commit message to determine the impacted scenario +# using the input provided by the committer. +# +# installer type and scenario should be placed at the beginning of lines +# separately and the format of the entry in commit message is as below +# +# installer-type: +# deploy-scenario: +# +# example is +# +# installer-type: kubespray +# deploy-scenario: k8-calico-nofeature +function override_installer_scenario() { + echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC to determine the installer and the scenario" + cd $WORKSPACE + COMMIT_MESSAGE=$(git show -s --format=%B) + + if [[ "$COMMIT_MESSAGE" =~ "deploy-scenario:" && "$COMMIT_MESSAGE" =~ "installer-type:" ]]; then + export INSTALLER_TYPE=$(echo "$COMMIT_MESSAGE" | grep '^installer-type:' | cut -d":" -f2 | sed 's/\s*//g') + export DEPLOY_SCENARIO=$(echo "$COMMIT_MESSAGE" | grep '^deploy-scenario:' | cut -d":" -f2 | sed 's/\s*//g') + else + echo "Installer type or deploy scenario is not specified." + echo "Falling back to programmatically determining them." + determine_scenario + fi +} + +# this function will process the changed files to determine the impacted scenario +# if it is no specified by the committer. only one scenario per change should be +# touched. +# TODO: this is not implented yet. +function determine_scenario() { + echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC" + cd $WORKSPACE + COMMIT_MESSAGE=$(git show -s --format=%B) + echo "Not implemented!" + exit 1 +} + +echo "Determining the impacted scenario and used installer" + +declare -a DEPLOY_SCENARIO +declare -a INSTALLER_TYPE +export PROJECT_GIT_URL=$GIT_BASE_HTTPS/$GERRIT_PROJECT + +override_installer_scenario + +echo "Writing change metadata to $WORKSPACE/change.properties" + +# vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/prepare-for-scenario-verify.sh b/jjb/cloud-infra/prepare-for-scenario-deploy.sh similarity index 65% rename from jjb/cloud-infra/prepare-for-scenario-verify.sh rename to jjb/cloud-infra/prepare-for-scenario-deploy.sh index f654dc842..16a823b34 100644 --- a/jjb/cloud-infra/prepare-for-scenario-verify.sh +++ b/jjb/cloud-infra/prepare-for-scenario-deploy.sh @@ -25,4 +25,23 @@ echo "Info: Cloning infra/engine repository" cd $HOME && /bin/rm -rf $WORKSPACE git clone -q $ENGINE_REPO_URL $WORKSPACE +echo "Generating temporary SDF" +cat << EOF > $WORKSPACE/sdf.yml +scenario: + $DEPLOY_SCENARIO: + scm: git + src: $PROJECT_GIT_URL + version: $GERRIT_PATCHSET_REVISION + refspec: $GERRIT_REFSPEC + installers: + $INSTALLER_TYPE: + role: scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO + distros: + - ubuntu +EOF +echo "Temporary SDF content" +echo "-------------------------------------------------------------------------" +cat $WORKSPACE/sdf.yml +echo "-------------------------------------------------------------------------" + # vim: set ts=2 sw=2 expandtab: diff --git a/jjb/cloud-infra/prepare-for-scenario-test.sh b/jjb/cloud-infra/prepare-for-scenario-test.sh new file mode 100644 index 000000000..eae6b51b1 --- /dev/null +++ b/jjb/cloud-infra/prepare-for-scenario-test.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# ============LICENSE_START======================================================= +# Copyright (C) 2019 The Nordix Foundation. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +set -o errexit +set -o nounset + +echo "Info: Cloning infra/test repository" +cd $HOME && /bin/rm -rf $WORKSPACE +git clone -q $TEST_REPO_URL $WORKSPACE + +echo "Generating temporary SDF" +cat << EOF > $WORKSPACE/sdf.yml +scenario: + $DEPLOY_SCENARIO: + scm: git + src: $PROJECT_GIT_URL + version: $GERRIT_PATCHSET_REVISION + refspec: $GERRIT_REFSPEC + installers: + $INSTALLER_TYPE: + role: scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO + distros: + - ubuntu +EOF +echo "Temporary SDF content" +echo "-------------------------------------------------------------------------" +cat $WORKSPACE/sdf.yml +echo "-------------------------------------------------------------------------" + +# vim: set ts=2 sw=2 expandtab: -- 2.25.1