</tr>
<tr>
<td colspan="4">
- A CentOS 7 build minion. This system has OpenJDK 1.7 (Java7) and OpenJDK
- 1.8 (Java8) installed on it along with all the other components and
- libraries needed for building any current OpenDaylight project. This is
- the label that is used for all basic verify, merge and daily builds for
+ CentOS 7 build minion configured with OpenJDK 1.7 (Java7) and OpenJDK
+ 1.8 (Java8) along with all the other components and libraries needed
+ for building any current OpenDaylight project. This is the label that
+ is used for all basic verify, merge and daily builds for
projects.
</td>
</tr>
</tr>
<tr>
<td colspan="4">
- A CentOS 7 minion that is configured with OpenJDK 1.7 (Java7), OpenJDK
+ CentOS 7 minion configured with OpenJDK 1.7 (Java7), OpenJDK
1.8 (Java8) and all the current packages used by the integration
project for doing robot driven jobs. If you are executing robot
framework jobs then your job should be using this as the minion that
</tr>
<tr>
<td colspan="4">
- Basic Ubuntu system with ovs 2.0.2 and mininet 2.1.0
+ Basic Ubuntu 14.04 (Trusty) system with ovs 2.0.2 and mininet 2.1.0
</td>
</tr>
</tr>
<tr>
<td colspan="4">
- Basic Ubuntu system with ovs 2.3 and mininet 2.2.1
+ Ubuntu 14.04 (Trusty) system with ovs 2.3 and mininet 2.2.1
</td>
</tr>
</tr>
<tr>
<td colspan="4">
- Basic Ubuntu system with ovs 2.5 and mininet 2.2.2
+ Ubuntu 14.04 (Trusty) system with ovs 2.5 and mininet 2.2.2
+ </td>
+ </tr>
+
+ <tr class="warning">
+ <td><b>Jenkins Labels</b><br/> ubuntu1604-mininet-ovs-25-2c-4g</td>
+ <td><b>Minion Template names</b><br/> ubuntu1604-mininet-ovs-25-2c-4g</td>
+ <td><b>Packer Template</b><br/> releng/builder/packer/templates/mininet-ovs-2.5.json</td>
+ <td><b>Spinup Script</b><br/> releng/builder/jenkins-scripts/mininet-ubuntu.sh</td>
+ </tr>
+ <tr>
+ <td colspan="4">
+ Ubuntu 16.04 (Xenial) system with ovs 2.5 and mininet 2.2.1
</td>
</tr>
</tr>
<tr>
<td colspan="4">
- A CentOS 7 system purpose built for doing OpenStack testing using
+ CentOS 7 system purpose built for doing OpenStack testing using
DevStack. This minion is primarily targeted at the needs of the OVSDB
project. It has OpenJDK 1.7 (aka Java7) and OpenJDK 1.8 (Java8) and
other basic DevStack related bits installed.
</tr>
<tr>
<td colspan="4">
- A CentOS 7 system that is configured with OpenJDK 1.7 (aka Java7),
+ CentOS 7 system configured with OpenJDK 1.7 (aka Java7),
OpenJDK 1.8 (Java8) and Docker. This system was originally custom
built for the test needs of the OVSDB project but other projects have
expressed interest in using it.
</tr>
<tr>
<td colspan="4">
- A basic Ubuntu node with latest OVS and docker installed. Used by Group Based Policy.
+ Ubuntu 14.04 (Trusty) node with latest OVS and docker installed. Used by Group Based Policy.
</td>
</tr>
+
+ <tr class="warning">
+ <td><b>Jenkins Labels</b><br/> ubuntu1604-gbp-2c-4g</td>
+ <td><b>Minion Template names</b><br/> ubuntu1604-gbp-2c-4g</td>
+ <td><b>Packer Template</b><br/> releng/builder/packer/templates/gbp.json</td>
+ <td><b>Spinup Script</b><br/> releng/builder/jenkins-scripts/ubuntu-docker-ovs.sh</td>
+ </tr>
+ <tr>
+ <td colspan="4">
+ Ubuntu 16.04 (Xenial) node with latest OVS and docker installed. Used by Group Based Policy.
+ </td>
+ </tr>
+
</table>
Pool: ODLPUB - HOT (Heat Orchestration Templates)
archive-artifacts: >
**/*.prop
**/*.log
- **/patches/*.bundle
- **/patches/*.patch
+ patches/**
patches.tar.gz
###
# way for downstream jobs to pull the latest version of this file
# in their builds.
artifacts: 'dependencies.log'
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[autorelease]'
- trigger-parameterized-builds:
- project: 'integration-distribution-test-{integration-test}'
condition: UNSTABLE_OR_BETTER
fail-on-missing: true
- opendaylight-infra-shiplogs:
maven-version: 'mvn33'
-
# get console logs
wget -O "$CONSOLE_LOG" "${BUILD_URL}consoleText"
-# extract the failing project or artifactid
+# TODO: This section is still required since some of the projects use
+# description. Remove this section when the reactor info is more consistant.
+# extract failing project from reactor information
REACTOR_INFO=$(awk '/Reactor Summary:/ { flag=1 }
flag {
if ( sub(/^\[(INFO)\]/,"") && sub(/FAILURE \[.*/,"") ) {
# check for project format
if [[ ${REACTOR_INFO} =~ .*::*.*::*. ]]; then
- # extract project and artifactid from full format
+ # extract project and artifactId from full format
ODL=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $1); print $1 }')
- PROJECT=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2 }')
- ARTIFACTID=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $3); print $3 }')
+ PROJECT_=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2 }')
+ NAME=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $3); print $3 }')
else
# set ARTIFACTID to partial format
ODL=""
- PROJECT=""
- ARTIFACTID=$(echo "${REACTOR_INFO}" | awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }')
+ PROJECT_=""
+ NAME=$(echo "${REACTOR_INFO}" | awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }')
+fi
+
+
+# determine ARTIFACT_ID for project mailing list
+ARTIFACT_ID=$(awk -F: '/\[ERROR\].*mvn <goals> -rf :/ { print $2}' $CONSOLE_LOG)
+
+# determine project mailing list using xpaths
+# if project.groupId:
+# project.groupId is set and is not inherited
+# else if project.parent.groupId:
+# project.groupId is not set but IS inherited from project.parent.groupId
+# else
+# exclude project mailing list
+grouplist=()
+while IFS="" read -r p; do
+ GROUP=$(xmlstarlet sel\
+ -N "x=http://maven.apache.org/POM/4.0.0"\
+ -t -m "/x:project[x:artifactId='$ARTIFACT_ID']"\
+ --if "/x:project/x:groupId"\
+ -v "/x:project/x:groupId"\
+ --elif "/x:project/x:parent/x:groupId"\
+ -v "/x:project/x:parent/x:groupId"\
+ --else -o ""\
+ "$p" 2>/dev/null)
+ if [ ! -z "${GROUP}" ]; then
+ grouplist+=($(echo "${GROUP}" | awk -F'.' '{ print $3 }'))
+ fi
+done < <(find . -name "pom.xml")
+
+if [ "${#grouplist[@]}" -eq 1 ]; then
+ PROJECT="${grouplist[0]}"
+else
+ GROUPLIST="NOTE: The artifactId: $ARTIFACT_ID matches multiple groups: ${grouplist[*]}"
fi
# Construct email subject & body
PROJECT_STRING=${PROJECT:+" from $PROJECT"}
-SUBJECT="[release] Autorelease $STREAM failed to build $ARTIFACTID$PROJECT_STRING"
+SUBJECT="[release] Autorelease $STREAM failed to build $ARTIFACT_ID$PROJECT_STRING"
BODY="Attention ${PROJECT:-"OpenDaylight"}-devs,
-Autorelease $STREAM failed to build $ARTIFACTID$PROJECT_STRING in build
+Autorelease $STREAM failed to build $ARTIFACT_ID$PROJECT_STRING in build
$BUILD_NUMBER. Attached is a snippet of the error message related to the
failure that we were able to automatically parse as well as console logs.
+${PROJECT:+"$GROUPLIST"}
Console Logs:
https://logs.opendaylight.org/$SILO/$ARCHIVES_DIR
BUILD_STATUS=$(awk '/\[INFO\] Remote staging finished/{flag=1;next}/Total time:/{flag=0}flag' $CONSOLE_LOG \
| grep '\] BUILD' | awk '{print $3}')
-if [ ! -z "${ARTIFACTID}" ] && [[ "${BUILD_STATUS}" != "SUCCESS" ]]; then
+if ([ ! -z "${NAME}" ] || [ ! -z "${ARTIFACT_ID}" ]) && [[ "${BUILD_STATUS}" != "SUCCESS" ]]; then
# project search pattern should handle both scenarios
- # 1. Full format: ODL :: $PROJECT :: $ARTIFACTID
- # 2. Partial format: Building $ARTIFACTID
- sed -e "/\[INFO\] Building \(${ARTIFACTID} \|${ODL} :: ${PROJECT} :: ${ARTIFACTID} \)/,/Reactor Summary:/!d;//d" \
+ # 1. Full format: ODL :: $PROJECT :: $ARTIFACT_ID
+ # 2. Partial format: Building $ARTIFACT_ID
+ sed -e "/\[INFO\] Building \(${NAME} \|${ARTIFACT_ID} \|${ODL} :: ${PROJECT_} :: ${NAME} \)/,/Reactor Summary:/!d;//d" \
$CONSOLE_LOG > /tmp/error.txt
if [ -n "${PROJECT}" ]; then
--- /dev/null
+---
+- project:
+ name: bier-csit-basic
+ jobs:
+ - '{project}-csit-1node-{functionality}-{install}-{stream}'
+ - '{project}-csit-verify-1node-{functionality}'
+
+ # The project name
+ project: 'bier'
+
+ # The functionality under test
+ functionality: 'basic'
+
+ # Project branches
+ stream:
+ - carbon:
+ branch: 'master'
+ jre: 'openjdk8'
+
+ install:
+ - only:
+ scope: 'only'
+ - all:
+ scope: 'all'
+
+ # Features to install
+ install-features: 'odl-bier-all'
+
+ # Robot custom options
+ robot-options: ''
# Ignore logging if archives doesn't exist
mv "$WORKSPACE/archives/" "$ARCHIVES_DIR" > /dev/null 2>&1
touch "$ARCHIVES_DIR/_build-details.txt"
-echo "build-url: ${{BUILD_URL}}" >> "$ARCHIVES_DIR/_build-details.txt"
+echo "build-url: ${BUILD_URL}" >> "$ARCHIVES_DIR/_build-details.txt"
env | grep -v PASSWORD > "$ARCHIVES_DIR/_build-enviroment-variables.txt"
# capture system info
| cut -d: -f1 \
| xargs -d'\n' -r gzip
# Compress Java heap dumps using xz
-find "$ARCHIVES_DIR" -type -f -name \*.hprof -print0 | xargs -0 xz
+find "$ARCHIVES_DIR" -type f -name \*.hprof -print0 | xargs -0 xz
zip -r archives.zip "$JENKINS_HOSTNAME/" >> "$ARCHIVES_DIR/_archives.log"
du -sh archives.zip
bgpcep-csit-3node-periodic-bgpclustering-all-carbon,
bgpcep-csit-3node-periodic-bgpclustering-ha-only-carbon,
bgpcep-csit-3node-periodic-bgpclustering-only-carbon,
+ bier-csit-1node-basic-all-carbon,
+ bier-csit-1node-basic-only-carbon,
capwap-csit-1node-ac-all-carbon,
capwap-csit-1node-ac-only-carbon,
centinel-csit-1node-basic-all-carbon,
sxp-csit-1node-topology-only-carbon,
sxp-csit-3node-periodic-clustering-all-carbon,
sxp-csit-3node-periodic-clustering-only-carbon,
+ sxp-csit-3node-periodic-routing-all-carbon,
+ sxp-csit-3node-periodic-routing-only-carbon,
topoprocessing-csit-1node-topology-operations-all-carbon,
topoprocessing-csit-1node-topology-operations-only-carbon,
tsdr-csit-1node-cassandra-datastore-only-carbon,
topoprocessing-csit-1node-topology-operations-all-boron,
topoprocessing-csit-1node-topology-operations-only-boron,
tsdr-csit-1node-cassandra-datastore-only-boron,
- tsdr-csit-1node-elasticsearch-datastore-only-boron,
tsdr-csit-1node-hbase-datastore-all-boron,
tsdr-csit-1node-hbase-datastore-only-boron,
tsdr-csit-1node-hsqldb-datastore-all-boron,
topoprocessing-csit-1node-topology-operations-all-beryllium,
topoprocessing-csit-1node-topology-operations-only-beryllium,
tsdr-csit-1node-cassandra-datastore-only-beryllium,
- tsdr-csit-1node-elasticsearch-datastore-only-beryllium,
tsdr-csit-1node-hbase-datastore-all-beryllium,
tsdr-csit-1node-hbase-datastore-only-beryllium,
tsdr-csit-1node-hsqldb-datastore-all-beryllium,
virtualenv $WORKSPACE/venv
source $WORKSPACE/venv/bin/activate
pip install --upgrade pip
- pip freeze
pip install jenkins-job-builder
+ pip freeze
jenkins-jobs -l DEBUG test --recursive -o archives/job_output jjb/
gzip archives/job_output/*
- releng-check-unicode
virtualenv $WORKSPACE/venv
source $WORKSPACE/venv/bin/activate
pip install --upgrade pip
- pip freeze
pip install jenkins-job-builder
+ pip freeze
jenkins-jobs --version
jenkins-jobs update --recursive --delete-old --workers 4 jjb/
virtualenv $WORKSPACE/venv
source $WORKSPACE/venv/bin/activate
pip install --upgrade pip
- pip freeze
pip install jenkins-job-builder
+ pip freeze
jenkins-jobs --flush-cache update --recursive --workers 4 jjb/
publishers:
--- /dev/null
+---
+- project:
+ name: sxp-csit-routing
+ jobs:
+ - '{project}-csit-3node-periodic-{functionality}-{install}-{stream}'
+
+ # The project name
+ project: 'sxp'
+
+ # The functionality under test
+ functionality: 'routing'
+
+ # Project branches
+ stream:
+ - carbon:
+ branch: 'master'
+ jre: 'openjdk8'
+
+ install:
+ - only:
+ scope: 'only'
+ - all:
+ scope: 'all'
+
+ # Features to install
+ install-features: 'odl-restconf,odl-sxp-controller,odl-sxp-route'
+
+ # Tools VMs:
+ tools_system_count: 2
+
+ # Robot custom options:
+ robot-options: ''
- carbon:
branch: 'master'
jre: 'openjdk8'
- - boron:
- branch: 'stable/boron'
- jre: 'openjdk8'
- - beryllium:
- branch: 'stable/beryllium'
- jre: 'openjdk7'
install:
- only:
do
# shellcheck disable=SC2046
if [ $(dpkg-query -W -f='${Status}' $pkg 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
+ apt-cache policy $pkg
apt-get install $pkg
fi
done
yum install -y @development perl-{Digest-SHA,ExtUtils-MakeMaker} \
ant {boost,gtest,json-c,libcurl,libxml2,libvirt,openssl}-devel \
{readline,unixODBC}-devel yum-utils fedora-packager \
- libxslt-devel crudini npm
+ libxslt-devel crudini
# Install python3 and dependencies, needed for Coala linting at least
yum install -y python34
# rename packer to avoid conflict with binary in cracklib
mv /usr/local/bin/packer /usr/local/bin/packer.io
-# Needed for Coala linting, Markdown and Dockerfile bears in particular
-npm install remark-cli dockerfile_lint
-#!/bin/bash
+#!/bin/bash -x
# vim: sw=4 ts=4 sts=4 et tw=72 :
# ups
echo 'PS1="[\u@\h \W]> "' >> /etc/skel/.bashrc
-# remove all force-yes with --allow*
echo '---> Install OpenVSwitch 2.5.0'
-apt-get update -y --force-yes
-apt-get install -y --force-yes openvswitch-switch openvswitch-vtep
+apt-get update -m
+apt-get install openvswitch-switch openvswitch-vtep
echo '---> Installing mininet'
-apt-get install -y --force-yes mininet
+apt-get install mininet
echo '---> Installing build pre-requisites'
-apt-get install -y --force-yes build-essential snmp libsnmp-dev snmpd libpcap-dev \
+apt-get install build-essential snmp libsnmp-dev snmpd libpcap-dev \
autoconf make automake libtool libconfig-dev libssl-dev libffi-dev libssl-doc pkg-config
git clone https://github.com/intracom-telecom-sdn/mtcbench.git
cp cbench /usr/local/bin/
echo '---> Installing exabgp'
-apt-get install -y --force-yes exabgp
+apt-get install exabgp
echo '---> All Python package installation should happen in virtualenv'
-apt-get install -y --force-yes python-virtualenv python-pip
+apt-get install python-virtualenv python-pip
# Install vlan for vlan based tests in VTN suites
-apt-get install -y --force-yes -qq vlan
+apt-get install vlan
# Install netaddr package which is needed by some custom mininet topologies
-apt-get install -y --force-yes -qq python-netaddr
+apt-get install python-netaddr
# Install minimal python requirements to get virtualenv going
# Additional python dependencies should be installed via JJB configuration
# inside project jobs using a virtualenv setup.
-yum install -y python-{devel,setuptools,virtualenv} @development
+yum install -y @development \
+ python-devel \
+ python-setuptools \
+ python-virtualenv
+
+# TODO: Move docker-py and netaddr to virtualenv in the csit jobs.
+yum install -y python-docker-py \
+ python-netaddr
# Install dependencies for robotframework and robotframework-sshlibrary
# installed elsewhere