diff options
-rw-r--r-- | jjb/fuel/fuel-ci-jobs-master.yml | 154 | ||||
-rw-r--r-- | jjb/fuel/fuel-ci-jobs.yml | 48 | ||||
-rwxr-xr-x | jjb/fuel/fuel-deploy-master.sh | 59 | ||||
-rwxr-xr-x | jjb/fuel/fuel-deploy.sh | 2 | ||||
-rw-r--r-- | jjb/functest/functest-ci-jobs.yml | 2 | ||||
-rw-r--r-- | jjb/joid/joid-ci-jobs.yml | 16 | ||||
-rw-r--r-- | jjb/joid/joid-deploy.sh | 64 | ||||
-rw-r--r-- | jjb/opnfv/installer-params.yml | 4 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.sh | 37 | ||||
-rw-r--r-- | jjb/opnfv/opnfv-docker.yml | 4 | ||||
-rw-r--r-- | jjb/opnfv/slave-params.yml | 5 | ||||
-rw-r--r-- | jjb/qtip/qtip.yml | 48 |
12 files changed, 363 insertions, 80 deletions
diff --git a/jjb/fuel/fuel-ci-jobs-master.yml b/jjb/fuel/fuel-ci-jobs-master.yml new file mode 100644 index 000000000..dffafe850 --- /dev/null +++ b/jjb/fuel/fuel-ci-jobs-master.yml @@ -0,0 +1,154 @@ +- project: + + name: 'fuel-master' + + project: 'fuel' + + installer: '{project}' + +#-------------------------------- +# BRANCH ANCHORS +#-------------------------------- + master: &master + stream: master + branch: '{stream}' + gs-pathname: '' +#-------------------------------- +# POD, INSTALLER, AND BRANCH MAPPING +#-------------------------------- + pod: + - ericsson-pod2: + <<: *master +#-------------------------------- + +# new scenario descriptions + scenario: + - 'os_ha' + - 'os_odl-l2_ha' + - 'os_odl-l3_ha' + - 'os_onos_ha' + - 'os_kvm_ha' + - 'os_ovs_ha' + - 'os_kvm_ovs_ha' + + jobs: + - 'fuel-{scenario}-{pod}-daily-{stream}' + - 'fuel-deploy-{pod}-daily-{stream}-development' + +######################## +# job templates - new type of defining the scenario +######################## +- job-template: + name: 'fuel-{scenario}-{pod}-daily-{stream}' + + project-type: multijob + + concurrent: false + + properties: + - throttle: + enabled: true + max-total: 1 + max-per-node: 1 + - build-blocker: + use-build-blocker: true + blocking-jobs: + - 'fuel-os_.*' + + wrappers: + - build-name: + name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' + + parameters: + - project-parameter: + project: '{project}' + - '{pod}-defaults' + - '{installer}-defaults' + - string: + name: DEPLOY_SCENARIO + default: '{scenario}' + - fuel-ci-parameter: + gs-pathname: '{gs-pathname}' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' + + builders: + - multijob: + name: deploy + condition: SUCCESSFUL + projects: + - name: 'fuel-deploy-{pod}-daily-{stream}' + current-parameters: true + git-revision: true + kill-phase-on: FAILURE + - multijob: + name: functest + condition: COMPLETED + projects: + - name: 'functest-fuel-{pod}-daily-{stream}' + current-parameters: true + kill-phase-on: NEVER + - multijob: + name: yardstick + condition: COMPLETED + projects: + - name: 'yardstick-fuel-{pod}-daily-{stream}' + current-parameters: true + kill-phase-on: NEVER + +- job-template: + name: 'fuel-deploy-{pod}-daily-{stream}-development' + + concurrent: false + + properties: + - throttle: + enabled: true + max-total: 1 + max-per-node: 1 + + parameters: + - project-parameter: + project: 'fuel' + - 'ericsson-pod2-defaults' + - 'fuel-defaults' + - fuel-ci-parameter-new: + gs-pathname: '' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: 'master' + + wrappers: + - build-name: + name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' + + builders: + - shell: + !include-raw-escape: ./fuel-download-artifact.sh + - shell: + !include-raw-escape: ./fuel-deploy-master.sh +######################## +# parameter macros +######################## +- parameter: + name: fuel-ci-parameter-new + parameters: + - string: + name: BUILD_DIRECTORY + default: $WORKSPACE/build_output + description: "Directory where the build artifact will be located upon the completion of the build." + - string: + name: CACHE_DIRECTORY + default: $HOME/opnfv/cache/$INSTALLER_TYPE + description: "Directory where the cache to be used during the build is located." + - string: + name: GS_URL + default: artifacts.opnfv.org/$PROJECT{gs-pathname} + description: "URL to Google Storage." diff --git a/jjb/fuel/fuel-ci-jobs.yml b/jjb/fuel/fuel-ci-jobs.yml index 37cf78849..c90d930c1 100644 --- a/jjb/fuel/fuel-ci-jobs.yml +++ b/jjb/fuel/fuel-ci-jobs.yml @@ -36,30 +36,20 @@ # please check the triggers before enabling any of the controllers!!! sdn-controller: - - 'nosdn': - disabled: false -# commented out below controllers to get nosdn scenario settled first -# - 'odl': -# disabled: true -# - 'onos': -# disabled: true -# - 'opencontrail': -# disabled: true + - 'nosdn' jobs: - 'fuel-{sdn-controller}-{pod}-daily-{stream}' - 'fuel-deploy-{pod}-daily-{stream}' ######################## -# job templates +# job templates - old type of defining the scenario ######################## - job-template: name: 'fuel-{sdn-controller}-{pod}-daily-{stream}' project-type: multijob - disabled: '{obj:disabled}' - concurrent: false properties: @@ -67,6 +57,10 @@ enabled: true max-total: 1 max-per-node: 1 + - build-blocker: + use-build-blocker: true + blocking-jobs: + - 'fuel-{sdn-controller}-{pod}-daily-{stream}' wrappers: - build-name: @@ -129,6 +123,12 @@ enabled: true max-total: 1 max-per-node: 1 + - build-blocker: + use-build-blocker: true + blocking-jobs: + - 'fuel-deploy-{pod}-daily-{stream}.*' + - 'functest-fuel-{pod}-daily-{stream}' + - 'yardstick-fuel-{pod}-daily-{stream}' parameters: - project-parameter: @@ -146,13 +146,10 @@ wrappers: - build-name: - name: '$BUILD_NUMBER - SDN: $SDN_CONTROLLER Scenario: $DEPLOY_SCENARIO' + name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' builders: - - shell: - !include-raw-escape: ./fuel-download-artifact.sh - - shell: - !include-raw-escape: ./fuel-deploy.sh + - 'builder-{stream}' publishers: - email: @@ -176,6 +173,23 @@ default: artifacts.opnfv.org/$PROJECT{gs-pathname} description: "URL to Google Storage." ######################## +# builder macros +######################## +- builder: + name: 'builder-master' + builders: + - shell: + !include-raw: ./fuel-download-artifact.sh + - shell: + !include-raw: ./fuel-deploy-master.sh +- builder: + name: 'builder-brahmaputra' + builders: + - shell: + !include-raw: ./fuel-download-artifact.sh + - shell: + !include-raw: ./fuel-deploy.sh +######################## # trigger macros ######################## # trigger for opnfv-jump-2 is set to run 1 hour ahead of others diff --git a/jjb/fuel/fuel-deploy-master.sh b/jjb/fuel/fuel-deploy-master.sh new file mode 100755 index 000000000..4a7d1d9fb --- /dev/null +++ b/jjb/fuel/fuel-deploy-master.sh @@ -0,0 +1,59 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail + +# source the file so we get OPNFV vars +source latest.properties + +# echo the info about artifact that is used during the deployment +echo "Using $OPNFV_ARTIFACT_URL for deployment" + +# checkout the commit that was used for building the downloaded artifact +# to make sure the ISO and deployment mechanism uses same versions +echo "Checking out $OPNFV_GIT_SHA1" +git checkout $OPNFV_GIT_SHA1 --quiet + +# set deployment parameters +BRIDGE=pxebr +export TMPDIR=$HOME/tmpdir +LAB_NAME=${NODE_NAME/-*} +POD_NAME=${NODE_NAME/*-} + +# create TMPDIR if it doesn't exist +mkdir -p $TMPDIR + +# change permissions down to TMPDIR +chmod a+x $HOME +chmod a+x $TMPDIR + +# clone the securedlab repo +cd $WORKSPACE +echo "Cloning securedlab repo" +git clone ssh://jenkins-ericsson@gerrit.opnfv.org:29418/securedlab --quiet + +# construct the command +DEPLOY_COMMAND="sudo $WORKSPACE/ci/deploy.sh -b file://$WORKSPACE/securedlab -l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://$WORKSPACE/opnfv.iso -H -B $BRIDGE -S $TMPDIR" + +# log info to console +echo "Deployment parameters" +echo "--------------------------------------------------------" +echo "Scenario: $DEPLOY_SCENARIO" +echo "Lab: $LAB_NAME" +echo "POD: $POD_NAME" +echo "ISO: $(echo $OPNFV_ARTIFACT_URL | cut -d'/' -f3)" +echo +echo "Starting the deployment using $INSTALLER_TYPE. This could take some time..." +echo "--------------------------------------------------------" +echo + +# start the deployment +echo "Issuing command" +echo "$DEPLOY_COMMAND" +echo + +$DEPLOY_COMMAND + +echo +echo "--------------------------------------------------------" +echo "Done!" diff --git a/jjb/fuel/fuel-deploy.sh b/jjb/fuel/fuel-deploy.sh index 334307448..dc3d81a3a 100755 --- a/jjb/fuel/fuel-deploy.sh +++ b/jjb/fuel/fuel-deploy.sh @@ -7,7 +7,7 @@ set -o pipefail source latest.properties # echo the info about artifact that is used during the deployment -echo "Using $(echo $OPNFV_ARTIFACT_URL | cut -d'/' -f3) for deployment" +echo "Using $OPNFV_ARTIFACT_URL for deployment" # checkout the commit that was used for building the downloaded artifact # to make sure the ISO and deployment mechanism uses same versions diff --git a/jjb/functest/functest-ci-jobs.yml b/jjb/functest/functest-ci-jobs.yml index bd7affef3..3c993c6a3 100644 --- a/jjb/functest/functest-ci-jobs.yml +++ b/jjb/functest/functest-ci-jobs.yml @@ -208,7 +208,7 @@ $res_volume="-v ${dir_result}:/home/opnfv/functest/results" docker pull opnfv/functest:latest_stable - cmd="docker run -id -e $envs ${labconfig} ${sshkey} ${res_volume} opnfv/functest:latest_stable /bin/bash" + cmd="sudo docker run --privileged=true -id -e $envs ${labconfig} ${sshkey} ${res_volume} opnfv/functest:latest_stable /bin/bash" echo "Functest: Running docker run command: ${cmd}" ${cmd} docker ps -a diff --git a/jjb/joid/joid-ci-jobs.yml b/jjb/joid/joid-ci-jobs.yml index 0cc931085..e3b010028 100644 --- a/jjb/joid/joid-ci-jobs.yml +++ b/jjb/joid/joid-ci-jobs.yml @@ -43,8 +43,8 @@ # commented out below controllers to get Arno scenario settled first # - 'nosdn': # disabled: true -# - 'onos': -# disabled: true + - 'onos': + disabled: true # - 'opencontrail': # disabled: true @@ -173,3 +173,15 @@ name: 'joid-orange-pod2-odl-trigger' triggers: - timed: '' +- trigger: + name: 'joid-intel-pod5-onos-trigger' + triggers: + - timed: '' +- trigger: + name: 'joid-intel-pod6-onos-trigger' + triggers: + - timed: '' +- trigger: + name: 'joid-orange-pod2-onos-trigger' + triggers: + - timed: '' diff --git a/jjb/joid/joid-deploy.sh b/jjb/joid/joid-deploy.sh index 1348ca0be..e23afac1c 100644 --- a/jjb/joid/joid-deploy.sh +++ b/jjb/joid/joid-deploy.sh @@ -5,6 +5,19 @@ set -o nounset PWD_FILENAME="passwords.sh" ## +## +## +function exit_on_error { + RES=$1 + MSG=$2 + if [ $RES != 0 ]; then + echo "FAILED - $MSG" + exit $RES + fi +} + + +## ## Create LAB_CONFIG folder if not exists ## mkdir -p $LAB_CONFIG @@ -49,11 +62,7 @@ else sed -i -- "s/password: ubuntu/password: $MAAS_PASSWORD/" $MAASCONFIG echo "------ Redeploy MAAS ------" ./02-maasdeploy.sh $POD_NAME - RES=$? - if [ $RES != 0 ]; then - echo "MAAS Deploy FAILED" - exit $RES - fi + exit_on_error $? "MAAS Deploy FAILED" fi ## @@ -92,11 +101,7 @@ echo "------ Deploy with juju ------" echo "Execute: ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME" ./deploy.sh -t $HA_MODE -o $OS_RELEASE -s $SDN_CONTROLLER -l $POD_NAME -RES=$? -if [ $RES != 0 ]; then - echo "Deploy FAILED" - exit $RES -fi +exit_on_error $? "Main deploy FAILED" ## ## Set Admin RC @@ -141,10 +146,39 @@ curl -i -sw '%{http_code}' -H "Content-Type: application/json" -d " } } }" http://$KEYSTONE:5000/v3/auth/tokens |grep "HTTP/1.1 20" 2>&1 >/dev/null; -RES=$? -if [ $RES == 0 ]; then - echo "Deploy SUCCESS" +exit_on_error $? "Deploy FAILED to auth to openstack" + + +## +## Create external network if needed +## + +EXTERNAL_NETWORK=${EXTERNAL_NETWORK:-} +# split EXTERNAL_NETWORK=name;type;first ip;last ip; gateway;network +IFS=';' read -r -a EXTNET <<< "$EXTERNAL_NETWORK" +EXTNET_NAME=${EXTNET[0]} +EXTNET_TYPE=${EXTNET[1]} +EXTNET_FIP=${EXTNET[2]} +EXTNET_LIP=${EXTNET[3]} +EXTNET_GW=${EXTNET[4]} +EXTNET_NET=${EXTNET[5]} +# If we have more information than only the name, try to create it +if [ -z "$EXTNET_TYPE" ]; then + echo "------ No data for external network creation, pass ------" else - echo "Deploy FAILED to auth to openstack" + echo "------ External network creation ------" + neutron net-create $EXTNET_NAME --router:external True \ + --provider:physical_network external --provider:network_type $EXTNET_TYPE + exit_on_error $? "External network creation failed" + neutron subnet-create $EXTNET_NAME --name $EXTNET_NAME \ + --allocation-pool start=$EXTNET_FIP,end=$EXTNET_LIP \ + --disable-dhcp --gateway $EXTNET_GW $EXTNET_NET + exit_on_error $? "External subnet creation failed" fi -exit $RES + +## +## Exit success +## + +echo "Deploy success" +exit 0 diff --git a/jjb/opnfv/installer-params.yml b/jjb/opnfv/installer-params.yml index b8d729796..4980889fd 100644 --- a/jjb/opnfv/installer-params.yml +++ b/jjb/opnfv/installer-params.yml @@ -99,8 +99,8 @@ description: 'OpenStack release (kilo|liberty)' - string: name: EXTERNAL_NETWORK - default: 'net04_ext' - description: 'external network for test' + default: ext-net;flat;192.168.0.2;192.168.0.253;192.168.0.1;192.168.0.0/24 + description: "External network to create (name;type;first ip;last ip; gateway;network)" - string: name: CEPH_DISKS default: '/srv' diff --git a/jjb/opnfv/opnfv-docker.sh b/jjb/opnfv/opnfv-docker.sh index 545aef6dd..81bab33bb 100644 --- a/jjb/opnfv/opnfv-docker.sh +++ b/jjb/opnfv/opnfv-docker.sh @@ -53,22 +53,6 @@ if [[ "$UPDATE_LATEST_STABLE" == "true" ]]; then fi -# Get tag version -cd $WORKSPACE -git clone https://gerrit.opnfv.org/gerrit/releng - -DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \ - -n $DOCKER_REPO_NAME) - -ret_val=$? -if [ $ret_val -ne 0 ]; then - echo "Error retrieving the version tag." - exit 1 -else - echo "Tag version to be build and pushed: $DOCKER_TAG" -fi - - # cd to directory where Dockerfile is located if [[ "$DOCKER_REPO_NAME" == "opnfv/functest" ]]; then cd $WORKSPACE/docker @@ -83,6 +67,27 @@ else exit 1 fi + +# Get tag version +branch=$(git rev-parse --abbrev-ref HEAD) +if [ $branch == "master" ]; then + DOCKER_TAG="master" +else + cd $WORKSPACE + git clone https://gerrit.opnfv.org/gerrit/releng + + DOCKER_TAG=$($WORKSPACE/releng/utils/calculate_version.sh -t docker \ + -n $DOCKER_REPO_NAME) + + ret_val=$? + if [ $ret_val -ne 0 ]; then + echo "Error retrieving the version tag." + exit 1 + fi +fi +echo "Tag version to be build and pushed: $DOCKER_TAG" + + # Start the build echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG..." diff --git a/jjb/opnfv/opnfv-docker.yml b/jjb/opnfv/opnfv-docker.yml index fcbe60be2..13063e39b 100644 --- a/jjb/opnfv/opnfv-docker.yml +++ b/jjb/opnfv/opnfv-docker.yml @@ -17,7 +17,9 @@ stream: - master: - branch: 'master' + branch: '{stream}' + - brahmaputra: + branch: 'stable/{stream}' ######################## # job templates diff --git a/jjb/opnfv/slave-params.yml b/jjb/opnfv/slave-params.yml index 6dc0a2591..734343d88 100644 --- a/jjb/opnfv/slave-params.yml +++ b/jjb/opnfv/slave-params.yml @@ -374,6 +374,10 @@ name: CEPH_DISKS_CONTROLLERS default: /dev/sdb description: "Disks to use by ceph on controler nodes (space separated list)" + - string: + name: EXTERNAL_NETWORK + default: ext-net;flat;161.105.231.2;161.105.231.62;161.105.231.1;161.105.231.0/26 + description: "External network to create (name;type;first ip;last ip; gateway;network)" - parameter: name: 'orange-test1-defaults' @@ -427,4 +431,3 @@ name: SSH_KEY default: /root/.ssh/id_rsa description: 'SSH key to use for Apex' - diff --git a/jjb/qtip/qtip.yml b/jjb/qtip/qtip.yml index 1b8a05178..c442c6cd9 100644 --- a/jjb/qtip/qtip.yml +++ b/jjb/qtip/qtip.yml @@ -136,7 +136,7 @@ name: qtip-run-suite builders: - shell: | - #! /bin/bash + #!/bin/bash QTIP_REPO=/home/opnfv/repos/qtip docker exec -t ${container_id} $QTIP_REPO/docker/run_qtip.sh @@ -145,34 +145,34 @@ name: qtip-cleanup builders: - shell: | - #! /bin/bash - - echo "Cleaning up QTIP docker containers/images..." - # Remove previous running containers if exist - if [[ ! -z $(docker ps -a | grep opnfv/qtip) ]]; then - echo "Removing existing opnfv/qtip containers..." - running_containers= $(docker ps | grep opnfv/qtip | awk '{print $1}') - docker stop ${running_containers} - all_containers= $(docker ps -a | grep opnfv/qtip | awk '{print $1}') - docker rm ${all_containers} - fi - - # Remove existing images if exist - if [[ ! -z $(docker images | grep opnfv/qtip) ]]; then - echo "Docker images to remove:" - docker images | head -1 && docker images | grep opnfv/qtip - image_tags=($(docker images | grep opnfv/qtip | awk '{print $2}')) - for tag in "${image_tags[@]}"; do - echo "Removing docker image opnfv/qtip:$tag..." - docker rmi opnfv/qtip:$tag - done - fi + #!/bin/bash + + echo "Cleaning up QTIP docker containers/images..." + # Remove previous running containers if exist + if [[ ! -z $(docker ps -a | grep opnfv/qtip) ]]; then + echo "Removing existing opnfv/qtip containers..." + running_containers= $(docker ps | grep opnfv/qtip | awk '{print $1}') + docker stop ${running_containers} + all_containers= $(docker ps -a | grep opnfv/qtip | awk '{print $1}') + docker rm ${all_containers} + fi + + # Remove existing images if exist + if [[ ! -z $(docker images | grep opnfv/qtip) ]]; then + echo "Docker images to remove:" + docker images | head -1 && docker images | grep opnfv/qtip + image_tags=($(docker images | grep opnfv/qtip | awk '{print $2}')) + for tag in "${image_tags[@]}"; do + echo "Removing docker image opnfv/qtip:$tag..." + docker rmi opnfv/qtip:$tag + done + fi - builder: name: qtip-fetch-os-cred builders: - shell: | - + #!/bin/bash echo $HOME echo $WORKSPACE |