X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fintegration%2Fintegration-macros.yaml;h=198f7b30f855f8c2d81aa524c038144f8953b916;hb=df0f32f924e9a71436df812ae5f446e32c6e717f;hp=ba544ca79049ef30b7bf3e4e56dde64abeb7c198;hpb=b410f6e9e21fea5a89e291d8bc91e1cd6da9e4cd;p=releng%2Fbuilder.git diff --git a/jjb/integration/integration-macros.yaml b/jjb/integration/integration-macros.yaml index ba544ca79..198f7b30f 100644 --- a/jjb/integration/integration-macros.yaml +++ b/jjb/integration/integration-macros.yaml @@ -14,6 +14,14 @@ default: '{bundleurl}' description: 'URL to karaf distribution zip' +- parameter: + name: integration-jdk-version + parameters: + - string: + name: JDKVERSION + default: '{jdkversion}' + description: 'Parameter to indicate JAVA Version' + - parameter: name: integration-controller-scope parameters: @@ -30,13 +38,29 @@ default: '{controller-features}' description: 'Features to install in the controller separated by comma' +- parameter: + name: integration-distribution-stream + parameters: + - string: + name: DISTROSTREAM + default: '{stream}' + description: 'Distribution stream string, for suites to know which behavior to expect' + +- parameter: + name: integration-stream-test-plan + parameters: + - string: + name: STREAMTESTPLAN + default: '{stream-test-plan}' + description: 'Stream-specific test plan we will run' + - parameter: name: integration-test-plan parameters: - string: name: TESTPLAN default: '{test-plan}' - description: 'Test plan we will run' + description: 'General test plan we will run unless stream-specific one is found' - parameter: name: integration-test-options @@ -70,7 +94,7 @@ name: integration-gerrit-scm scm: - git: - credentials-id: '{credentials-id}' + credentials-id: 'opendaylight-jenkins-ssh' url: '$GIT_BASE' basedir: '{basedir}' refspec: '{refspec}' @@ -87,7 +111,7 @@ name: integration-distribution-scm scm: - git: - credentials-id: '{credentials-id}' + credentials-id: 'opendaylight-jenkins-ssh' basedir: 'distribution' url: '$DISTROGITURL' refspec: '' @@ -150,6 +174,26 @@ - compare-type: 'ANT' pattern: '{pattern}' +# Macro: integration-csit-only +# Operation: this macro sets a trigger on reverse job list +# Used by: csit -only- job templates + +- trigger: + name: integration-csit-only + triggers: + - reverse: + jobs: '{jobs}' + result: 'success' + +# Macro: integration-csit-all +# Operation: this macro sets a periodic trigger +# Used by: csit -all- job teamplates + +- trigger: + name: integration-csit-all + triggers: + - timed: 'H H * * *' + # Macro: integration-jclouds-controller-mininet # Operation: this macro will spin the controller and mininet vms # Used by: {project}-csit-* job templates @@ -159,19 +203,100 @@ wrappers: - jclouds: instances: - - rk-c7-java: - cloud-name: 'Rackspace DFW - Integration Dynamic Lab' + - '{controller-image}': + cloud-name: 'ODLPUB' count: '{controller-vms}' - stop-on-terminate: False - '{mininet-image}': - cloud-name: '{mininet-cloud-name}' + cloud-name: 'ODLPUB' count: '{mininet-vms}' - stop-on-terminate: False + +# Macro: integration-openstack-controller-mininet +# Operation: this macro will spin the controller and mininet vms +# Used by: {project}-csit-* job templates + +- wrapper: + name: integration-openstack-controller-mininet + wrappers: + - openstack: + instances: + - cloud-name: 'ODLRPC' + template-name: '{controller-image}' + count: '{controller-vms}' + - cloud-name: 'ODLRPC' + template-name: '{mininet-image}' + count: '{mininet-vms}' + +# Macro: integration-jclouds-controller-devstack +# Operation: this macro will spin the controller and devstack vms +# Used by: {project}-csit-openstack job templates +- wrapper: + name: integration-jclouds-controller-devstack + wrappers: + - jclouds: + instances: + - '{controller-image}': + cloud-name: 'ODLPUB' + count: '{controller-vms}' + - '{openstack-image}': + cloud-name: 'ODLPUB' + count: '{openstack-vms}' + +# Macro: integration-openstack-controller-devstack +# Operation: this macro will spin the controller and devstack vms +# Used by: {project}-csit-openstack job templates +- wrapper: + name: integration-openstack-controller-devstack + wrappers: + - openstack: + instances: + - cloud-name: 'ODLRPC' + template-name: '{controller-image}' + count: '{controller-vms}' + - cloud-name: 'ODLRPC' + template-name: '{openstack-image}' + count: '{openstack-vms}' ################# # Shell Scripts # ################# +# Macro: integration-copy-ssh-keys +# Operation: Copy ssh public key used as authentication for robot +# Used by: {project}-csit-* job templates + +- builder: + name: integration-copy-ssh-keys + builders: + - shell: | + #!/bin/bash + function copy-ssh-keys-to-slave() { + RETRIES=30 + for j in $(seq 1 $RETRIES); do + if `ssh-copy-id -i /home/jenkins/.ssh/id_rsa.pub "jenkins@${i}" > /dev/null 2>&1`; then + ssh jenkins@${i} 'echo "$(facter ipaddress_eth0) $(/bin/hostname)" | sudo tee -a /etc/hosts' + echo "Successfully copied public keys to slave ${i}" + break + elif [ $j -eq $RETRIES ]; then + echo "SSH not responding on ${i} after $RETIRES tries. Giving up." + exit 1 + else + echo "SSH not responding on ${i}. Retrying in 10 seconds..." + sleep 10 + fi + done + } + + echo "OpenStack IPS are ${JCLOUDS_IPS}" + + IFS=',' read -ra ADDR <<< "${JCLOUDS_IPS}" + + for i in "${ADDR[@]}"; do + copy-ssh-keys-to-slave & + done + + wait + echo "Copying ssh keys complete." + # Macro: integration-get-slave-addresses # Operation: this macro gets the IP addresses of the dynamic vms # Used by: {project}-csit-* job templates @@ -180,7 +305,8 @@ name: integration-get-slave-addresses builders: - shell: - !include-raw include-raw-integration-get-slave-addresses.sh + !include-raw: + - include-raw-integration-get-slave-addresses.sh # Macro: integration-get-bundle-vars # Operation: this macro gets all bundle related variables @@ -190,17 +316,30 @@ name: integration-get-bundle-vars builders: - shell: - !include-raw include-raw-integration-get-bundle-vars.sh + !include-raw: + - include-raw-integration-get-bundle-vars.sh + +# Macro: integration-distribution-check +# Operation: this macro deploys the controller with all fetures +# Used by: {project}-distribution-check-{stream} job template + +- builder: + name: integration-distribution-check + builders: + - shell: + !include-raw: + - include-raw-integration-distribution-check.sh # Macro: integration-deploy-controller-verify # Operation: this macro deploys the controller with all fetures -# Used by: integration-distrbution-deploy-{stream} job template +# Used by: integration-distribution-deploy-{stream} job template - builder: name: integration-deploy-controller-verify builders: - shell: - !include-raw include-raw-integration-deploy-controller-verify.sh + !include-raw: + - include-raw-integration-deploy-controller-verify.sh # Macro: integration-deploy-controller-offline # Operation: this macro deploys the controller with no external repo configuration @@ -210,7 +349,8 @@ name: integration-deploy-controller-offline builders: - shell: - !include-raw include-raw-integration-deploy-controller-offline.sh + !include-raw: + - include-raw-integration-deploy-controller-offline.sh # Macro: integration-deply-controller-run-test # Operation: this macro deploys single contoller and runs test @@ -220,17 +360,8 @@ name: integration-deploy-controller-run-test builders: - shell: - !include-raw include-raw-integration-deploy-controller-run-test.sh - -# Macro: integration-deploy-controller -# Operation: this macro prepares 3-node cluster controller -# Used by: {project}-csit-3node-* job templates - -- builder: - name: integration-deploy-controller - builders: - - shell: - !include-raw include-raw-integration-deploy-controller.sh + !include-raw: + - include-raw-integration-deploy-controller-run-test.sh # Macro: integration-configure-clustering # Operation: this macro configures the clustering @@ -240,7 +371,8 @@ name: integration-configure-clustering builders: - shell: - !include-raw include-raw-integration-configure-clustering.sh + !include-raw: + - include-raw-integration-configure-clustering.sh # Macro: integration-start-cluster-run-test # Operation: this macro starts the 3-node cluster and runs test @@ -250,7 +382,8 @@ name: integration-start-cluster-run-test builders: - shell: - !include-raw include-raw-integration-start-cluster-run-test.sh + !include-raw: + - include-raw-integration-start-cluster-run-test.sh # Macro: integration-get-bundle-url # Operation: this macro gets the job generated distribution URL from distribution pom.xml @@ -260,7 +393,8 @@ name: integration-get-bundle-url builders: - shell: - !include-raw include-raw-integration-get-bundle-url.sh + !include-raw: + - include-raw-integration-get-bundle-url.sh # Macro: integration-get-bundle-url-root # Operation: this macro gets the job generated distribution URL from root pom.xml @@ -270,7 +404,8 @@ name: integration-get-bundle-url-root builders: - shell: - !include-raw include-raw-integration-get-bundle-url-root.sh + !include-raw: + - include-raw-integration-get-bundle-url-root.sh # Macro: integration-install-robotframework # Operation: Installs robotframework using pip to a virtualenv @@ -280,7 +415,8 @@ name: integration-install-robotframework builders: - shell: - !include-raw include-raw-integration-install-robotframework.sh + !include-raw: + - include-raw-integration-install-robotframework.sh # Macro: integration-cleanup-tmp # Operation: Cleans up temporary files created by build @@ -290,7 +426,8 @@ name: integration-cleanup-tmp builders: - shell: - !include-raw include-raw-integration-cleanup-tmp.sh + !include-raw: + - include-raw-integration-cleanup-tmp.sh # Macro: integration-multipatch-builder # Operation: checks out multiple patches and builds custom distribution @@ -300,7 +437,8 @@ name: integration-multipatch-builder builders: - shell: - !include-raw include-raw-integration-multipatch-distribution-test.sh + !include-raw: + - include-raw-integration-multipatch-distribution-test.sh # Macro: integration-cleanup-worspace # Operation: Cleans up files possibly left there by the previous build @@ -310,8 +448,26 @@ name: integration-cleanup-workspace builders: - shell: - !include-raw include-raw-integration-cleanup-workspace.sh + !include-raw: + - include-raw-integration-cleanup-workspace.sh + +# Macro: integration-rebase-patch +# Operation: For cloned project, rebase checked-out Gerrit patch onto $BRANCH. +# Used by: integration-patch-distribution-* job template + +- builder: + name: integration-rebase-gerrit-patch + builders: + - shell: + !include-raw: + - include-raw-integration-rebase-gerrit-patch.sh +- builder: + name: integration-deploy-openstack-run-test + builders: + - shell: + !include-raw: + - include-raw-integration-deploy-openstack-run-test.sh ############## # Publishers # ############## @@ -329,3 +485,18 @@ unstable-threshold: '{unstable-if}' pass-threshold: '{pass-if}' only-critical: false + +- publisher: + name: integration-csit-archive-build + publishers: + - postbuildscript: + builders: + - shell: | + #!/bin/bash + mkdir $WORKSPACE/archives + curl --output robot-plugin.zip "$BUILD_URL/robot/report/*zip*/robot-plugin.zip" + unzip -d $WORKSPACE/archives robot-plugin.zip + mv *log* *.log *.csv *.png $WORKSPACE/archives || true # Don't fail if file missing + script-only-if-succeeded: False + script-only-if-failed: False + mark-unstable-if-failed: True