summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/functest/functest-daily-jobs.yml256
-rw-r--r--jjb/global/releng-macros.yml2
-rw-r--r--jjb/releng/opnfv-utils.yml38
-rwxr-xr-xutils/artifacts.opnfv.org.sh162
4 files changed, 417 insertions, 41 deletions
diff --git a/jjb/functest/functest-daily-jobs.yml b/jjb/functest/functest-daily-jobs.yml
index 099d01a59..0f1ac351d 100644
--- a/jjb/functest/functest-daily-jobs.yml
+++ b/jjb/functest/functest-daily-jobs.yml
@@ -193,22 +193,107 @@
# <<: *master
# -------------------------------
- testsuite:
- - 'suite':
- job-timeout: 60
- - 'daily':
- job-timeout: 300
- - 'arm-daily':
- job-timeout: 300
+ functest-tier:
+ - 'healthcheck':
+ job-timeout: 20
+ - 'smoke':
+ job-timeout: 180
+ - 'components':
+ job-timeout: 240
+ - 'vnf':
+ job-timeout: 240
- jobs:
- - 'functest-{installer}-{pod}-{testsuite}-{stream}'
+ features-suite:
+ - 'doctor-notification'
+ - 'promise'
+ - 'bgpvpn'
+ - 'functest-odl-sfc'
+ - 'domino-multinode'
+ - 'fds'
+ - 'barometercollectd'
+
+ exclude:
+ - features-suite: 'promise'
+ stream: 'master'
+ - features-suite: 'domino-multinode'
+ stream: 'master'
+ - features-suite: 'fds'
+ stream: 'euphrates'
+
+ build-job-settings: &build-job-settings
+ current-parameter: false
+ git-revision: true
+ node-parameters: false
+ kill-phase-on: FAILURE
+ abort-all-jobs: false
+ predefined-parameters: |
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_TIER=$FUNCTEST_TIER
+
+ features-job-settings: &features-job-settings
+ current-parameter: false
+ git-revision: true
+ node-parameters: false
+ kill-phase-on: FAILURE
+ abort-all-jobs: false
+ predefined-parameters: |
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ jobs:
+ - 'functest-{installer}-{pod}-suite-{stream}'
+ - 'functest-{installer}-{pod}-daily-{stream}'
+ - 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
+ - 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
################################
# job template
################################
- job-template:
- name: 'functest-{installer}-{pod}-{testsuite}-{stream}'
+
+ name: 'functest-{installer}-{pod}-daily-{stream}'
+
+ project-type: multijob
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - '{slave-label}-defaults'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ builders:
+ - multijob:
+ name: 'Run functest tests'
+ execution-type: SEQUENTIAL
+ projects:
+ - name: 'functest-{installer}-{pod}-daily-healthcheck-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-{installer}-{pod}-daily-smoke-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-{installer}-{pod}-daily-vnf-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-doctor-notification-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-bgpvpn-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-functest-odl-sfc-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-barometercollectd-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-fds-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-promise-{stream}'
+ <<: *features-job-settings
+ - name: 'functest-{installer}-{pod}-daily-features-domino-multinode-{stream}'
+ <<: *features-job-settings
+
+- job-template: &functest-installer-tier-job
+
+ name: 'functest-{installer}-{pod}-daily-{functest-tier}-{stream}'
concurrent: true
@@ -232,10 +317,15 @@
branch: '{branch}'
- '{installer}-defaults'
- '{slave-label}-defaults'
- - 'functest-{testsuite}-parameter'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_TIER
+ default: '{functest-tier}'
- string:
name: DEPLOY_SCENARIO
- default: 'os-odl_l2-nofeature-ha'
+ default: 'os-nosdn-nofeature-noha'
- string:
name: CLEAN_DOCKER_IMAGES
default: 'false'
@@ -249,7 +339,93 @@
builders:
- description-setter:
description: "Built on $NODE_NAME"
- - 'functest-{testsuite}-builder'
+ - 'functest-daily-builder'
+
+ publishers:
+ - 'functest-recipients'
+ - 'fuel-recipients'
+
+- job-template:
+
+ name: 'functest-{installer}-{pod}-suite-{stream}'
+ <<: *functest-installer-tier-job
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: '60'
+ abort: true
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - '{slave-label}-defaults'
+ - 'functest-suite-parameter'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-noha'
+ - string:
+ name: CLEAN_DOCKER_IMAGES
+ default: 'false'
+ description: 'Remove downloaded docker images (opnfv/functest*:*)'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ builders:
+ - description-setter:
+ description: "Built on $NODE_NAME"
+ - 'functest-suite-builder'
+
+- job-template:
+
+ name: 'functest-{installer}-{pod}-daily-features-{features-suite}-{stream}'
+ concurrent: true
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - '{slave-label}-defaults'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'testcase'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: '{features-suite}'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-noha'
+ - string:
+ name: CLEAN_DOCKER_IMAGES
+ default: 'false'
+ description: 'Remove downloaded docker images (opnfv/functest*:*)'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ scm:
+ - git-scm
+
+ builders:
+ - description-setter:
+ description: "Built on $NODE_NAME"
+ - 'functest-daily-builder'
+
+ publishers:
+ - 'functest-features-recipients'
+ - 'functest-recipients'
+ - 'fuel-recipients'
########################
@@ -264,14 +440,6 @@
description: "Daily suite name to run"
- parameter:
- name: functest-arm-daily-parameter
- parameters:
- - string:
- name: FUNCTEST_MODE
- default: 'arm-daily'
- description: "Daily suite name (Aarch64) to run"
-
-- parameter:
name: functest-suite-parameter
parameters:
- choice:
@@ -364,14 +532,6 @@
- 'functest-exit'
- builder:
- name: functest-arm-daily-builder
- builders:
- - 'functest-cleanup'
- - 'functest-arm-daily'
- - 'functest-store-results'
- - 'functest-exit'
-
-- builder:
name: functest-suite-builder
builders:
- 'functest-cleanup'
@@ -405,17 +565,6 @@
# yamllint enable rule:indentation
- builder:
- name: functest-arm-daily
- builders:
- # yamllint disable rule:indentation
- - shell:
- !include-raw:
- - ./functest-env-presetup.sh
- - ../../utils/fetch_os_creds.sh
- - ./functest-alpine.sh
-
-# yamllint enable rule:indentation
-- builder:
name: functest-store-results
builders:
- shell:
@@ -432,3 +581,30 @@
builders:
- shell:
!include-raw: ./functest-exit.sh
+
+
+- publisher:
+ name: 'functest-features-recipients'
+ publishers:
+ - email:
+ recipients:
+
+- publisher:
+ name: 'functest-recipients'
+ publishers:
+ - email:
+ recipients: >
+ jalausuch@suse.com morgan.richomme@orange.com
+ cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
+ juha.kosonen@nokia.com wangwulin@huawei.com
+ delia.popescu@enea.com cristina.pauna@enea.com
+ valentin.boucher@kontron.com
+ - email-jenkins-admins-on-failure
+
+- publisher:
+ name: 'fuel-recipients'
+ publishers:
+ - email:
+ recipients: >
+ peter.barabas@ericsson.com mpolenchuck@mirantis.com
+ alexandru.avadanii@enea.com guillermo.herrero@enea.com
diff --git a/jjb/global/releng-macros.yml b/jjb/global/releng-macros.yml
index a12a3c8a5..0bf981661 100644
--- a/jjb/global/releng-macros.yml
+++ b/jjb/global/releng-macros.yml
@@ -901,7 +901,7 @@
- email-ext:
<<: *email_ptl_defaults
recipients: >
- ManuelBuilmbuil@suse.com
+ mbuil@suse.com
- publisher:
name: 'email-snaps-ptl'
diff --git a/jjb/releng/opnfv-utils.yml b/jjb/releng/opnfv-utils.yml
index b12f663aa..93b3615ef 100644
--- a/jjb/releng/opnfv-utils.yml
+++ b/jjb/releng/opnfv-utils.yml
@@ -8,6 +8,7 @@
- 'archive-repositories'
- 'check-status-of-slaves'
- 'ansible-build-server'
+ - 'generate-artifacts-index-pages'
########################
# job templates
@@ -164,3 +165,40 @@
sudo ansible-playbook -C -D -i \
$WORKSPACE/utils/build-server-ansible/inventory.ini \
$WORKSPACE/utils/build-server-ansible/main.yml
+
+
+- job-template:
+ name: 'generate-artifacts-index-pages'
+
+ project-type: freestyle
+
+ disabled: false
+
+ concurrent: false
+
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: Build Servers
+ default-slaves:
+ - lf-build2
+ - project-parameter:
+ project: releng
+ branch: master
+
+ scm:
+ - git-scm
+
+ triggers:
+ - timed: '@hourly'
+
+ builders:
+ - generate-artifact-html
+
+
+- builder:
+ name: generate-artifact-html
+ builders:
+ - shell: |
+ cd $WORKSPACE/utils/
+ ./artifacts.opnfv.org.sh
diff --git a/utils/artifacts.opnfv.org.sh b/utils/artifacts.opnfv.org.sh
new file mode 100755
index 000000000..1984b4992
--- /dev/null
+++ b/utils/artifacts.opnfv.org.sh
@@ -0,0 +1,162 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+#export PATH=${PATH}:/root/gsutil
+
+#Step Generate index.html
+if [ -f index.html ] ; then
+ rm -f index.html
+fi
+
+OUTPUT="index.html"
+
+for index in $(gsutil ls -l gs://artifacts.opnfv.org | grep -v logs | grep -v review | awk 'NF==1'| sed s,gs://artifacts.opnfv.org/,,)
+do
+echo $index
+ echo "<LI><a href=\"${index%/*}.html\">"$index"</a></LI>" >> $OUTPUT
+done
+
+#functest logs##########################
+
+for project in functest vswitchperf
+do
+
+ for index in $(gsutil ls -l gs://artifacts.opnfv.org/logs/"$project"/ |awk 'NF==1'| sed s,gs://artifacts.opnfv.org/,, )
+ do
+ index="$(echo ${index%/*} | sed s,/,_,g)"
+ echo "<LI><a href=\"http://artifacts.opnfv.org/${index%/*}.html\">"$index"</a></LI>" >> $OUTPUT
+ done
+
+done
+#End step 1
+#####################################
+
+
+#genrate html files for all project except vswitchperf
+for index in $(gsutil ls -l gs://artifacts.opnfv.org | grep -v logs |awk 'NF==1'| sed s,gs://artifacts.opnfv.org/,,)
+do
+OUTPUT=${index%/*}.html
+rm -f $OUTPUT
+
+
+ for filepath in $(gsutil ls -R gs://artifacts.opnfv.org/"$index" | sed s,gs://artifacts.opnfv.org/,, | grep -v "favicon.ico" | grep -v "gsutil" ); do
+ echo $filepath
+
+ if [[ $filepath =~ "/:" ]]; then
+ path=$(echo $filepath| sed s,/:,,g)
+ echo "<UL>" >> $OUTPUT
+ echo "<LI>$path</LI>" >> $OUTPUT
+ echo "</UL>" >> $OUTPUT
+ else
+ echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ fi
+done
+
+gsutil cp $OUTPUT gs://artifacts.opnfv.org/
+
+gsutil -m setmeta \
+ -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/$OUTPUT \
+
+done
+
+
+
+#generate file for vswitch perf (I dont know what happend here but there is a wierd character in this bucket)
+
+index=vswitchperf
+OUTPUT=${index%/*}.html
+rm -f $OUTPUT
+
+ for filepath in $(gsutil ls -R gs://artifacts.opnfv.org/"$index" | sed s,gs://artifacts.opnfv.org/,, | grep -v "favicon.ico" | grep -v "gsutil" ); do
+ echo $filepath
+
+ if [[ $filepath =~ "/:" ]]; then
+ path=$(echo $filepath| sed s,/:,,g)
+ echo "<UL>" >> $OUTPUT
+ echo "<LI>$path</LI>" >> $OUTPUT
+ echo "</UL>" >> $OUTPUT
+ else
+ echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ fi
+
+done
+
+
+gsutil cp $OUTPUT gs://artifacts.opnfv.org/
+
+gsutil -m setmeta \
+ -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/$OUTPUT \
+
+# Gerate html for logs
+
+for project in functest vswitchperf
+do
+ for index in $(gsutil ls -l gs://artifacts.opnfv.org/logs/"$project"/ |awk 'NF==1'| sed s,gs://artifacts.opnfv.org/,, )
+ do
+
+ OUTPUT="$(echo ${index%/*}.html | sed s,/,_,g)"
+ echo $OUTPUT
+ rm -f $OUTPUT
+
+
+ for filepath in $(gsutil ls -R gs://artifacts.opnfv.org/"$index" | sed s,gs://artifacts.opnfv.org/,, | grep -v "favicon.ico" | grep -v "gsutil" ); do
+ echo $filepath
+
+ if [[ $filepath =~ "/:" ]]; then
+ path=$(echo $filepath| sed s,/:,,g)
+ echo "<UL>" >> $OUTPUT
+ echo "<LI>$path</LI>" >> $OUTPUT
+ echo "</UL>" >> $OUTPUT
+ else
+ echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ fi
+
+
+ done
+
+
+ gsutil cp $OUTPUT gs://artifacts.opnfv.org/
+
+ gsutil -m setmeta \
+ -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/$OUTPUT \
+
+
+ done
+done
+
+
+
+OUTPUT="index.html"
+echo "<p> Generated on $(date) </p>" >> $OUTPUT
+
+cat <<EOF >> $OUTPUT
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-831873-26', 'auto');
+ga('send', 'pageview');
+</script>
+EOF
+
+#copy and uplad index file genrated in first step, last
+gsutil cp $OUTPUT gs://artifacts.opnfv.org/
+
+gsutil -m setmeta \
+ -h "Content-Type:text/html" \
+ -h "Cache-Control:private, max-age=0, no-transform" \
+ gs://artifacts.opnfv.org/$OUTPUT \