NETWORK_ID=b5fcd86e-efac-4997-b8bc-dbe0d35bc229
USER_DATA_ID=jenkins-init-script
INSTANCE_CAP=75
-SANDBOX_CAP=6
+SANDBOX_CAP=8
FLOATING_IP_POOL=
SECURITY_GROUPS=default
AVAILABILITY_ZONE=ca-ymq-2
branch: 'master'
mvn-settings: 'aaa-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: aaa
+ description: 'List of aaa jobs'
+ regex: '^aaa-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'alto-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: alto
+ description: 'List of alto jobs'
+ regex: '^alto-.*'
+ <<: *releng_view_common
project-name: 'archetypes'
branch: 'master'
mvn-settings: 'archetypes-settings'
+
+- view:
+ name: archetypes
+ regex: '^archetypes-.*'
+ description: 'List of archetypes jobs'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'atrium-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: atrium
+ description: 'List of atrium jobs'
+ regex: '^atrium-.*'
+ <<: *releng_view_common
**/hs_err_*.log
**/target/feature/feature.xml
# TODO: **/*.hprof is too large, compress with xz first
+
+- view:
+ name: autorelease
+ description: 'List of autorelease jobs'
+ regex: '^autorelease-.*'
+ <<: *releng_view_common
project: p4plugin
- packetcable:
project: packetcable
+ - serviceutils:
+ project: serviceutils
- sfc:
project: sfc
- snmp:
- 'ovsdb-maven-merge-oxygen'
- 'p4plugin-maven-merge-oxygen'
- 'packetcable-maven-merge-oxygen'
+ - 'serviceutils-maven-merge-oxygen'
- 'sfc-maven-merge-oxygen'
- 'snmp-maven-merge-oxygen'
- 'snmp4sdn-maven-merge-oxygen'
branch: 'master'
mvn-settings: 'bgpcep-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: bgpcep
+ description: 'List of bgpcep jobs'
+ regex: '^bgpcep-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'bier-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: bier
+ description: 'List of bier jobs'
+ regex: '^bier-.*'
+ <<: *releng_view_common
branch: master
mvn-settings: 'capwap-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: capwap
+ description: 'List of capwap jobs'
+ regex: '^capwap-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'cardinal-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: cardinal
+ description: 'List of cardinal jobs'
+ regex: '^cardinal-.*'
+ <<: *releng_view_common
branch: master
mvn-settings: 'centinel-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: centinel
+ description: 'List of centinel jobs'
+ regex: '^centinel-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'coe-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: coe
+ description: 'List of coe jobs'
+ regex: '^coe-.*'
+ <<: *releng_view_common
- inttest-csit-3node
- inttest-csit-verify-3node
- # The project name
project: 'controller'
-
- # The functionality under test
functionality: 'clustering'
- # Project branches
stream:
- fluorine:
branch: 'master'
- all:
scope: 'all'
- # No tools system VMs needed in JCloud configuration
tools_system_count: 0
- # Features to install
install-features: >
- odl-restconf-noauth,
+ odl-restconf,
odl-clustering-test-app
-
- # Robot custom options
- robot-options: ''
mvn-settings: 'controller-settings'
mvn-goals: 'clean deploy -Pintegrationtests,docs'
mvn-opts: '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
+
+- view:
+ name: controller
+ description: 'List of controller jobs'
+ regex: '^controller-.*'
+ <<: *releng_view_common
mvn-settings: 'coretutorials-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
build-timeout: 120
+
+- view:
+ name: coretutorials
+ description: 'List of coretutorials jobs'
+ regex: '^coretutorials-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'daexim-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: daexim
+ description: 'List of daexim jobs'
+ regex: '^daexim-.*'
+ <<: *releng_view_common
- defaults:
name: global
+ functionality: global
+ stream: global
prefix: '' # A prefix for job names sandbox for example: user-
+ testplan: '{project}-{functionality}.txt'
+ streamtestplan: '{project}-{functionality}-{stream}.txt'
karaf-version: karaf4
build-days-to-keep: 30
use-features-boot: 'True'
sm-features: ''
# CSIT images configuration
- openstack_system_image_ocata: ZZCI - CentOS 7 - devstack-ocata - 20171208-1649
+ openstack_system_image_queens: ZZCI - CentOS 7 - devstack-pike - 20171208-1649
openstack_system_image_pike: ZZCI - CentOS 7 - devstack-pike - 20171208-1649
stack-template: csit-2-instance-type.yaml
docker_system_count: 1
branch: 'master'
mvn-settings: 'didm-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: didm
+ description: 'List of didm jobs'
+ regex: '^didm-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'dlux-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: dlux
+ description: 'List of dlux jobs'
+ regex: '^dlux-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'dluxapps-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: dluxapps
+ description: 'List of dluxapps jobs'
+ regex: '^dluxapps-.*'
+ <<: *releng_view_common
build-timeout: 60
rtd-build-url: https://readthedocs.org/api/v2/webhook/opendaylight/32322/
rtd-token: 86e54dd38c651e2164ea63c183ae601d19cd1f3c
+
+- view:
+ name: docs
+ description: 'List of docs jobs'
+ regex: '^docs-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'eman-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: eman
+ description: 'List of eman jobs'
+ regex: '^eman-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'faas-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: faas
+ description: 'List of faas jobs'
+ regex: '^faas-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'federation-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: federation
+ description: 'List of federation jobs'
+ regex: '^federation-.*'
+ <<: *releng_view_common
csit-list: >
netvirt-csit-3node-openstack-{os-branch}-gate-stateful-{stream}
+ - netvirt-itm-direct-tunnels:
+ csit-list: >
+ netvirt-csit-1node-openstack-{os-branch}-gate-stateful-itm-direct-tunnels-{stream}
+
- genius:
csit-list: >
genius-csit-1node-gate-all-{stream}
build-node: centos7-builder-2c-8g
mvn-settings: 'genius-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: genius
+ description: 'List of genius jobs'
+ regex: '^genius-.*'
+ <<: *releng_view_common
install-features: 'odl-groupbasedpolicy-neutron-and-ofoverlay,odl-restconf'
openstack:
- - ocata:
- openstack-branch: 'stable/ocata'
- odl-ml2-branch: 'stable/ocata'
+ - pike:
+ openstack-branch: 'stable/pike'
+ odl-ml2-branch: 'stable/pike'
public-bridge: 'br-int'
mvn-settings: 'groupbasedpolicy-settings'
mvn-goals: '-U clean deploy findbugs:findbugs'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: groupbasedpolicy
+ description: 'List of groupbasedpolicy jobs'
+ regex: '^groupbasedpolicy-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'honeycomb-vbd-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: vbd
+ description: 'List of vbd jobs'
+ regex: '^vbd-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'infrautils-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: infrautils
+ description: 'List of infrautils jobs'
+ regex: '^infrautils-.*'
+ <<: *releng_view_common
echo "Set JAVA_HOME"
export JAVA_HOME="${java_home}"
+
# shellcheck disable=SC2037
JAVA_RESOLVED=$(readlink -e "${java_home}/bin/java")
echo "Java binary pointed at by JAVA_HOME: ${JAVA_RESOLVED}"
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "killing karaf process..."
${SSH} "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
${SSH} ${!CONTROLLERIP} "sudo journalctl > /tmp/journalctl.log"
genius-csit-3node-upstream-all-oxygen,
groupbasedpolicy-csit-1node-3-node-all-oxygen,
groupbasedpolicy-csit-1node-6node-all-oxygen,
-groupbasedpolicy-csit-1node-openstack-ocata-openstack-oxygen,
+groupbasedpolicy-csit-1node-openstack-pike-openstack-oxygen,
groupbasedpolicy-csit-1node-sxp-only-oxygen,
groupbasedpolicy-csit-3node-clustering-all-oxygen,
l2switch-csit-1node-host-scalability-daily-only-oxygen,
karaf-version: odl
# Self-Managed projects repos and features:
sm-repos: mvn:org.opendaylight.sxp/features-sxp//xml/features
- sm-features: odl-sxp-controller
+ sm-features: odl-sxp-routing
- oxygen:
branch: 'stable/oxygen'
karaf-version: karaf4
- integration-csit-archive-build
- lf-infra-publish
+- view:
+ name: distribution
+ description: 'List of distribution jobs'
+ regex: '^(integration-)?distribution-.*'
+ <<: *releng_view_common
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_before.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
done
if [ ${NUM_OPENSTACK_SYSTEM} -gt 0 ]; then
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "Killing ODL"
set +e # We do not want to create red dot just because something went wrong while fetching logs.
ssh "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
ADMIN_PASSWORD="admin"
OPENSTACK_MASTER_CLIENTS_VERSION="queens"
+pip install odltools
+odltools -V
+
# TODO: remove this work to run changes.py if/when it's moved higher up to be visible at the Robot level
printf "\nshowing recent changes that made it into the distribution used by this job:\n"
$PYTHON -m pip install --upgrade urllib3
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_before.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
done
echo "Generating mininet variables..."
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "killing karaf process..."
ssh "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
done
- integration-test-options:
test-options: '{robot-options}'
- integration-stream-test-plan:
- stream-test-plan: '{project}-{functionality}-{stream}.txt'
+ stream-test-plan: '{streamtestplan}'
- integration-test-plan:
- test-plan: '{project}-{functionality}.txt'
+ test-plan: '{testplan}'
- integration-test-suites:
test-suites: '{test-suites}'
- integration-patch-refspec:
- integration-test-options:
test-options: '{robot-options}'
- integration-stream-test-plan:
- stream-test-plan: '{project}-{functionality}-{stream}.txt'
+ stream-test-plan: '{streamtestplan}'
- integration-test-plan:
- test-plan: '{project}-{functionality}.txt'
+ test-plan: '{testplan}'
- integration-test-suites:
test-suites: '{test-suites}'
- integration-patch-refspec:
mvn-version: 'mvn35'
csit-list: !include: csit-jobs-fluorine.lst
build-order: >
- infrautils mdsal controller aaa netconf daexim bgpcep ovsdb neutron
- lispflowmapping openflowplugin coe genius sfc netvirt
+ odlparent yangtools infrautils mdsal controller aaa netconf daexim bgpcep
+ ovsdb neutron lispflowmapping openflowplugin coe genius sfc netvirt
- oxygen:
branch: 'stable/oxygen'
mvn-version: 'mvn35'
csit-list: !include: csit-jobs-oxygen.lst
build-order: >
- infrautils mdsal controller aaa netconf daexim bgpcep ovsdb neutron
- lispflowmapping openflowplugin coe genius sfc netvirt
+ odlparent yangtools infrautils mdsal controller aaa netconf daexim bgpcep
+ ovsdb neutron lispflowmapping openflowplugin coe genius sfc netvirt
- project:
name: integration-distribution
csit-blacklist: >
alto bier capwap centinel didm dluxapps groupbasedpolicy iotdm jsonrpc lacp
l2switch messaging4transport nemo netide nic ocpplugin of-config p4plugin packetcable
- sdninterfaceapp sxp tsdr unimgr usc usecplugin vtn gate longevity sanity tdd wip
+ sdninterfaceapp sxp tsdr unimgr usc usecplugin vtn gate longevity sanity tdd tempest wip
csit-list: !include: csit-jobs-fluorine.lst
csit-weekly-list: '{csit-weekly-list-fluorine}'
csit-high-frequency-list: '{csit-high-frequency-list-fluorine}'
branch: 'stable/oxygen'
csit-blacklist: >
capwap centinel didm iotdm jsonrpc lacp messaging4transport netide nic
- ocpplugin sdninterfaceapp unimgr usecplugin gate longevity sanity tdd wip
+ ocpplugin sdninterfaceapp unimgr usecplugin gate longevity sanity tdd tempest wip
csit-list: !include: csit-jobs-oxygen.lst
csit-weekly-list: '{csit-weekly-list-oxygen}'
csit-high-frequency-list: '{csit-high-frequency-list-oxygen}'
publishers:
- lf-infra-publish
+
+- view:
+ name: integration
+ description: 'List of integration jobs'
+ regex: '^integration-.*'
+ <<: *releng_view_common
set -e
-# TODO: 1) clean up inline todo's below :)
-# TODO: 2) Use just a topic branch to create a distribution. see this email:
-# https://lists.opendaylight.org/pipermail/discuss/2015-December/006040.html
-# TODO: 3) Bubble up CSIT jobs that are triggered by the multipatch job to a jenkins
-# parameter. the default can be distribution-test which calls all CSIT jobs
-# but being able to easily override it to a smaller subset (or none) will be
-# helpful
-
# create a fresh empty place to build this custom distribution
BUILD_DIR=${WORKSPACE}/patch_tester
DISTRIBUTION_BRANCH_TO_BUILD=$DISTROBRANCH #renaming variable for clarity
export GIT_COMMITTER_NAME="Multipatch Job"
# Extract a list of patches per project from an comment trigger. An example is:
-# Patch Set 1:
-#
# multipatch-build:openflowplugin:45/69445/1,genius:46/69446/1,netvirt:47/69447/1
if [ -n "$GERRIT_EVENT_COMMENT_TEXT" ]; then
if [[ "$GERRIT_EVENT_COMMENT_TEXT" == *fast* ]]; then
# get all patches number for a topic for a given project
IFS=$'\n' read -rd '' -a GERRIT_PATCH_LIST <<< "$(ssh -p 29418 jenkins-$SILO@git.opendaylight.org gerrit query status:open topic:${TOPIC} project:${PROJECT} \
| grep 'number:' | awk '{{ print $2 }}')" || true
- echo "Add ${PROJECT}:${GERRIT_PATCH_LIST[*]}"
# add project if it is the first with patches or it is not the first
if [[ -z "${PATCHES_TO_BUILD}" && ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
PATCHES_TO_BUILD="${PROJECT}"
elif [[ ! -z "${PATCHES_TO_BUILD}" ]]; then
+ if [[ ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
+ echo "Add ${PROJECT}:${DISTRIBUTION_BRANCH_TO_BUILD}"
+ fi
PATCHES_TO_BUILD="${PATCHES_TO_BUILD},${PROJECT}"
fi
# sort project patches
if [[ ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
+ echo "Add ${PROJECT}:${GERRIT_PATCH_LIST[*]}"
REF_LIST=()
# create reference list with patch number-refspec
for PATCH in "${GERRIT_PATCH_LIST[@]}"; do
declare -a PROJECTS
# For each patch:
-# * Clone the project.
-# * Optionally, checkout a specific (typically unmerged) Gerrit patch. If none,
+# 1. Clone the project.
+# 2. Optionally, checkout a specific (typically unmerged) Gerrit patch. If none,
# default to Integration/Distribution branch via {branch} JJB param.
-# * Also optionally, cherry-pick series of patches on top of the checkout.
-# * Final option: perform a 'release' by removing "-SNAPSHOT" everywhere within the project.
+# 3. Also optionally, cherry-pick series of patches on top of the checkout.
#
# Each patch is found in the ${PATCHES_TO_BUILD} variable as a comma separated
-# list of project[=checkout][:cherry-pick]* values.
+# list of project[=checkout][:cherry-pick]* values. Examples:
#
# Checkout a (typically unmerged) Gerrit patch on top of odlparent's git clone:
-#
# PATCHES_TO_BUILD='odlparent=45/30045/2'
#
# Checkout patches for both odlparent and yangtools:
-#
# PATCHES_TO_BUILD='odlparent=45/30045/2,yangtools:53/26853/25'
#
# Checkout a patch for controller, cherry-pick another patch on top of it:
-#
# PATCHES_TO_BUILD='controller=61/29761/5:45/29645/6'
distribution_status="not_included"
-for proto_patch in "${PATCHES[@]}"
+for patch in "${PATCHES[@]}"
do
- echo "working on ${proto_patch}"
+ echo "working on ${patch}"
# For patch=controller=61/29761/5:45/29645/6, this gives controller
- PROJECT="$(echo ${proto_patch} | cut -d\: -f 1 | cut -d\= -f 1)"
+ PROJECT="$(echo ${patch} | cut -d\: -f 1 | cut -d\= -f 1)"
if [ "${PROJECT}" == "integration/distribution" ]; then
distribution_status="included"
fi
echo "cloning project ${PROJECT}"
git clone "https://git.opendaylight.org/gerrit/p/${PROJECT}"
cd ${PROJECT_SHORTNAME}
- if [ "$(echo -n ${proto_patch} | tail -c 1)" == 'r' ]; then
- pure_patch="$(echo -n $proto_patch | head -c -1)"
- else
- pure_patch="$proto_patch"
- fi
# For patch = controller=61/29761/5:45/29645/6, this gives 61/29761/5
- CHECKOUT="$(echo ${pure_patch} | cut -d\= -s -f 2 | cut -d\: -f 1)"
+ CHECKOUT="$(echo ${patch} | cut -d\= -s -f 2 | cut -d\: -f 1)"
+ # If project has a patch, checkout patch, otherwise use distribution branch
if [ "x${CHECKOUT}" != "x" ]; then
echo "checking out ${CHECKOUT}"
# TODO: Make this script accept "29645/6" as a shorthand for "45/29645/6".
git fetch "https://git.opendaylight.org/gerrit/${PROJECT}" "refs/changes/$CHECKOUT"
git checkout FETCH_HEAD
+
else
- echo "checking out ${DISTRIBUTION_BRANCH_TO_BUILD}"
- git checkout "${DISTRIBUTION_BRANCH_TO_BUILD}"
+ # If project with no patch = yangtools, download master branch
+ if [ "${PROJECT}" == "yangtools" ]; then
+ echo "checking out master"
+ git checkout master
+ else
+ echo "checking out ${DISTRIBUTION_BRANCH_TO_BUILD}"
+ git checkout "${DISTRIBUTION_BRANCH_TO_BUILD}"
+ fi
fi
# For patch=controller=61/29761/5:45/29645/6, this gives 45/29645/6
- PICK_SEGMENT="$(echo "${pure_patch}" | cut -d\: -s -f 2-)"
+ PICK_SEGMENT="$(echo "${patch}" | cut -d\: -s -f 2-)"
IFS=':' read -ra PICKS <<< "${PICK_SEGMENT}"
for pick in "${PICKS[@]}"
do
git fetch "https://git.opendaylight.org/gerrit/${PROJECT}" "refs/changes/${pick}"
git cherry-pick --ff --keep-redundant-commits FETCH_HEAD
done
- # Check whether the patch ends with 'r', and the patch isn't the project
- # (to avoid releasing controller...)
- if [ "${proto_patch: -1}" = "r" ] && [ "${proto_patch}" != "${PROJECT}" ]; then
- # Here 'r' means release. Useful for testing Nitrogen Odlparent changes.
- find . -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
- fi
cd "${BUILD_DIR}"
done
+# Finally add distribution if there is no int/dist patch
if [ "${distribution_status}" == "not_included" ]; then
echo "adding integration/distribution"
PROJECTS+=(distribution)
cd "${BUILD_DIR}"
fi
+# If there is a patch for odlparent or yangtools (MRI projects), adjust version to mdsal project:
+# 1. Extract project version in patch
+# 2. Extract project MSI version from mdsal project
+# 3. Replace version in patch by MSI version
+# Otherwise release the MRI project
+if [[ -d "odlparent" ]]; then
+ if [[ -d "mdsal" ]]; then
+ # Extract patch and MSI used version
+ patch_version="$(xpath ./odlparent/odlparent-lite/pom.xml '/project/version/text()' 2> /dev/null)"
+ msi_version="$(xpath ./mdsal/pom.xml '/project/parent/version/text()' 2> /dev/null)"
+ # Replace version
+ find ./odlparent -name "*.xml" -print0 | xargs -0 sed -i "s/${patch_version}/${msi_version}/g"
+ else
+ # Release project
+ find ./odlparent -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
+ fi
+fi
+if [[ -d "yangtools" ]]; then
+ if [[ -d "mdsal" ]]; then
+ # Extract patch and MSI used version
+ patch_version="$(xpath ./yangtools/pom.xml '/project/version/text()' 2> /dev/null)"
+ msi_version="$(xpath ./mdsal/binding/yang-binding/pom.xml '/project/dependencyManagement/dependencies/dependency/version/text()' 2> /dev/null)"
+ # Replace version
+ find ./yangtools -name "*.xml" -print0 | xargs -0 sed -i "s/${patch_version}/${msi_version}/g"
+ else
+ # Release project
+ find ./yangtools -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
+ fi
+fi
+
# Second phase: build everything
for PROJECT_SHORTNAME in "${PROJECTS[@]}"; do
build-node: centos7-builder-2c-8g
mvn-settings: 'iotdm-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: iotdm
+ description: 'List of iotdm jobs'
+ regex: '^iotdm-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'jsonrpc-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: jsonrpc
+ description: 'List of jsonrpc jobs'
+ regex: '^jsonrpc-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'l2switch-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
+
+- view:
+ name: l2switch
+ description: 'List of l2switch jobs'
+ regex: '^l2switch-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'lacp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: lacp
+ description: 'List of lacp jobs'
+ regex: '^lacp-.*'
+ <<: *releng_view_common
git-url: https://gerrit.linuxfoundation.org/infra/$GERRIT_PROJECT
gerrit-server-name: LinuxFoundation
+
+- view:
+ name: lf-infra
+ description: 'List of lf-infra jobs'
+ regex: '^lf-infra-.*'
+ <<: *releng_view_common
---
- project:
- name: lf-infra-lfn-process
+ name: lfn-process
jobs:
- '{project-name}-rtd-jobs'
- gerrit-tox-verify
- project-name: lf-infra-lfn-process
+ project-name: lfn-process
project: lfn/process
project-pattern: lfn/process
build-node: centos7-builder-2c-1g
git-url: https://gerrit.linuxfoundation.org/infra/$GERRIT_PROJECT
gerrit-server-name: LinuxFoundation
+- view:
+ name: lfn
+ description: 'List of LF Networking jobs'
+ regex: '^lfn-.*'
+ <<: *releng_view_common
mvn-settings: 'lispflowmapping-settings'
mvn-goals: 'clean deploy findbugs:findbugs javadoc:aggregate -DrepoBuild'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=512m -Dmaven.compile.fork=true'
+
+- view:
+ name: lispflowmapping
+ description: 'List of lispflowmapping jobs'
+ regex: '^lispflowmapping-.*'
+ <<: *releng_view_common
mvn-settings: 'mdsal-settings'
mvn-goals: '-Dmaven.compile.fork=true clean deploy -Dintegrationtests'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=1024m'
+
+- view:
+ name: mdsal
+ description: 'List of mdsal jobs'
+ regex: '^mdsal-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'messaging4transport-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: messaging4transport
+ description: 'List of messaging4transport jobs'
+ regex: '^messaging4transport-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'natapp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: natapp
+ description: 'List of natapp jobs'
+ regex: '^natapp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'nemo-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: nemo
+ description: 'List of nemo jobs'
+ regex: '^nemo-.*'
+ <<: *releng_view_common
mvn-settings: 'netconf-settings'
mvn-goals: 'clean deploy -Pintegrationtests'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
+
+- view:
+ name: netconf
+ description: 'List of netconf jobs'
+ regex: '^netconf-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'netide-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: netide
+ description: 'List of netide jobs'
+ regex: '^netide-.*'
+ <<: *releng_view_common
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-hwvtep-openstack-integration-oxygen
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- upstream-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
- gate-stateful
+ - gate-stateful-itm-direct-tunnels:
+ enable-itm-direct-tunnels: 'true'
- gate-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
- gate-minimal-cluster:
- gate-tdd-wip:
testplan: '{project}-{topology}-tdd-wip-openstack.txt'
schedule: ''
+ - tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ schedule: '{schedule-daily}'
+ - tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
+ schedule: '{schedule-daily}'
+ - gate-tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ - gate-tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
openstack:
- pike:
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-openstack-integration-oxygen
- gate-stateful
- gate-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
+ - gate-stateful-itm-direct-tunnels:
+ enable-itm-direct-tunnels: 'true'
- gate-minimal-cluster:
testplan: '{project}-{topology}-minimal-openstack.txt'
# Job for Test Driven Development with it's own testplan to run new/non-passing suites. scheduled manually.
- gate-tdd-wip:
testplan: '{project}-{topology}-tdd-wip-openstack.txt'
schedule: ''
+ - tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ schedule: '{schedule-daily}'
+ - tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
+ schedule: '{schedule-daily}'
+ - gate-tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ - gate-tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
openstack:
- pike:
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-sfc-openstack-integration
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
coe-csit-1node-container-networking-all-{stream}
- itm-direct-tunnels:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-upstream-stateful-itm-direct-tunnels-{stream}
+ netvirt-csit-1node-openstack-{os-branch}-gate-stateful-itm-direct-tunnels-{stream}
- upgrade:
csit-list: >
netvirt-csit-1node-openstack-{os-branch}-upgrade-{stream}
+ - tempest:
+ csit-list: >
+ netvirt-csit-1node-openstack-{os-branch}-gate-tempest-stateful-{stream}
+ - cluster-tempest:
+ csit-list: >
+ netvirt-csit-3node-openstack-{os-branch}-gate-tempest-stateful-{stream}
+ - tempest-snat-conntrack:
+ csit-list: >
+ netvirt-csit-1node-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
+ - cluster-tempest-snat-conntrack:
+ csit-list: >
+ netvirt-csit-3node-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
branch: 'master'
mvn-settings: 'netvirt-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: netvirt
+ description: 'List of netvirt jobs'
+ regex: '^netvirt-.*'
+ <<: *releng_view_common
+
+- view:
+ name: netvirt-csit
+ description: 'List of netvirt-csit jobs'
+ regex: 'netvirt-csit(?!(.*gate)|(.*hwvtep)).*'
+ <<: *integration_view_csit
branch: 'master'
mvn-settings: 'neutron-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: neutron
+ description: 'List of neutron jobs'
+ regex: '^neutron-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'next-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: next
+ description: 'List of next jobs'
+ regex: '^next-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'nic-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: nic
+ description: 'List of nic jobs'
+ regex: '^nic-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ocpplugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ocpplugin
+ description: 'List of ocpplugin jobs'
+ regex: '^ocpplugin-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'odlparent-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: odlparent
+ description: 'List of odlparent jobs'
+ regex: '^odlparent-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'of-config-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: of-config
+ description: 'List of of-config jobs'
+ regex: '^of-config-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ofextensions-circuitsw-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: circuitsw
+ description: 'List of circuitsw jobs'
+ regex: '^circuitsw-.*'
+ <<: *releng_view_common
echo $CI_MESSAGE
echo "----------------------------------"
echo " Promoted ODL Autorelease artifact as release candidate!"
+
+- view:
+ name: openci
+ description: 'List of openci jobs'
+ regex: '^openci-.*'
+ <<: *releng_view_common
mvn-settings: 'openflowplugin-settings'
mvn-goals: 'clean deploy javadoc:aggregate'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: openflowplugin
+ description: 'List of openflowplugin jobs'
+ regex: '^openflowplugin-.*'
+ <<: *releng_view_common
+
+- view:
+ name: openflowplugin-oxygen
+ description: 'List of openflowplugin oxygen jobs'
+ regex: 'openflowplugin-.*-oxygen'
+ <<: *releng_view_common
email-recipients: '{email-recipients}'
email-prefix: '[opflex]'
- lf-infra-publish
+
+- view:
+ name: opflex
+ description: 'List of opflex jobs'
+ regex: '^opflex-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ovil-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ovil
+ description: 'List of ovil jobs'
+ regex: '^ovil-.*'
+ <<: *releng_view_common
# Used by the release job
staging-profile-id: a68b188166958
+
+- view:
+ name: ovsdb
+ description: 'List of ovsdb jobs'
+ regex: '^ovsdb-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'p4plugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: p4plugin
+ description: 'List of p4plugin jobs'
+ regex: '^p4plugin-.*'
+ <<: *releng_view_common
direct \
--download_url "$DOWNLOAD_URL"
-# Publish RPMs to Nexus if in production Jenkins, else host on sandbox Jenkins
-if [ "$SILO" == "sandbox" ]; then
- echo "Not uploading RPMs to Nexus because running in sandbox"
-elif [ "$SILO" == "releng" ]; then
+# Always allow push to scratch repos, only push to CD repos in RelEng Jenkins
+if [ "$DEPLOY_TO_REPO" == "opendaylight-epel-7-x86_64-devel" ]; then
# Move RPMs (SRPM and noarch) to dir of files that will be uploaded to Nexus
UPLOAD_FILES_PATH="$WORKSPACE/upload_files"
mkdir -p "$UPLOAD_FILES_PATH"
cp "$HOME/rpmbuild/RPMS/noarch/"*.rpm "$_"
cp "$HOME/rpmbuild/SRPMS/"*.rpm "$_"
else
- echo "Unknown Jenkins silo: $SILO"
- exit 1
+ # Publish RPMs to CD repos if in production Jenkins, not in sandbox Jenkins
+ if [ "$SILO" == "sandbox" ]; then
+ echo "Not uploading RPMs to Nexus because running in sandbox"
+ elif [ "$SILO" == "releng" ]; then
+ # Move RPMs (SRPM+noarch) to dir of files that will be uploaded to Nexus
+ UPLOAD_FILES_PATH="$WORKSPACE/upload_files"
+ mkdir -p "$UPLOAD_FILES_PATH"
+ cp "$HOME/rpmbuild/RPMS/noarch/"*.rpm "$_"
+ cp "$HOME/rpmbuild/SRPMS/"*.rpm "$_"
+ else
+ echo "Unknown Jenkins silo: $SILO"
+ exit 1
+ fi
fi
name: CHANGELOG_EMAIL
default: 'jenkins-donotreply@opendaylight.org'
description: 'Email of person who defined RPM'
+ - string:
+ name: DEPLOY_TO_REPO
+ default: 'opendaylight-{stream}-epel-7-x86_64-devel'
+ description: 'Repository to deploy resulting package to'
scm:
- integration-gerrit-scm:
global-settings-file: 'global-settings'
settings-file: 'packaging-settings'
mvn-version: '{mvn-version}'
- repo-id: 'opendaylight-{stream}-epel-7-x86_64-devel'
+ repo-id: '$DEPLOY_TO_REPO'
group-id: '{group-id}'
upload-files-dir: '{upload-files-dir}'
maven-repo-url: '{maven-repo-url}'
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180620.055735-63.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180626.171605-65.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
- install-test-uninstall-rpm
triggers:
- - gerrit:
- server-name: '{gerrit-server-name}'
- trigger-on:
- - comment-added-contains-event:
- comment-contains-value: 'rpm-verify'
- projects:
- - project-compare-type: ANT
- project-pattern: '{project}'
- branches:
- - branch-compare-type: ANT
- branch-pattern: '**/{branch}'
- file-paths:
- - compare-type: ANT
- pattern: 'packages/**'
+ - gerrit-trigger-patch-submitted:
+ gerrit-server-name: '{gerrit-server-name}'
+ project: '{project}'
+ branch: '{branch}'
+ files: 'packages/**'
publishers:
- lf-infra-publish
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.8.3-SNAPSHOT/karaf-0.8.3-20180620.173319-5.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.8.3-SNAPSHOT/karaf-0.8.3-20180627.184938-10.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180620.055735-63.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180626.171605-65.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
publishers:
- lf-infra-publish
+
+- view:
+ name: packaging
+ description: 'List of packaging, ansible and puppet jobs'
+ regex: '^packaging.*|ansible.*|puppet.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'packetcable-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: packetcable
+ description: 'List of packetcable jobs'
+ regex: '^packetcable-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'persistence-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: persistence
+ description: 'List of persistence jobs'
+ regex: '^persistence-.*'
+ <<: *releng_view_common
templates: devstack
platforms: centos-7
-- project:
- name: packer-devstack-pre-pip-ocata-jobs
- jobs:
- - gerrit-packer-merge
-
- project: releng/builder
- project-name: builder
- branch: master
- archive-artifacts: '**/*.log'
-
- build-node: centos7-builder-2c-1g
- build-timeout: 75
- cron: '00 H 1 * *'
-
- templates: devstack-pre-pip-ocata
- platforms: centos-7
-
- project:
name: packer-devstack-pre-pip-pike-jobs
jobs:
- view:
name: Distribution-Jobs
- description: 'List of Distribution jobs (test, check, merge, deploy, offline, verify)'
+ description: >
+ List of Distribution jobs (test, check, merge, deploy, offline, verify)
regex: '^.*-distribution-(?!(test|check|merge|deploy|offline|verify)).*'
<<: *releng_view_common
regex: '.*-gate-.*'
<<: *releng_view_common
-# Note: column plugins implementations requires JJB 2.1 to be released.
- view:
name: Integration
description: 'List of Integration jobs'
regex: '.*-integration-.*'
- view-type: list
- filter-executors: false
- filter-queue: false
- columns:
- - status
- - weather
- - job
- - last-success
- - last-failure
- - last-duration
- - build-button
- - jacoco
- - find-bugs
- - robot-list
- recurse: false
+ <<: *releng_view_common
- view:
name: Merge-Jobs
regex: '^(?!.*-csit).*-verify-.*'
<<: *releng_view_common
-- view:
- name: aaa
- description: 'List of aaa jobs'
- regex: '^aaa-.*'
- <<: *releng_view_common
-
-- view:
- name: alto
- description: 'List of alto jobs'
- regex: '^alto-.*'
- <<: *releng_view_common
-
-- view:
- name: archetypes
- regex: '^archetypes-.*'
- description: 'List of archetypes jobs'
- <<: *releng_view_common
-
-- view:
- name: atrium
- description: 'List of atrium jobs'
- regex: '^atrium-.*'
- <<: *releng_view_common
-
-- view:
- name: autorelease
- description: 'List of autorelease jobs'
- regex: '^autorelease-.*'
- <<: *releng_view_common
-
-- view:
- name: bgpcep
- description: 'List of bgpcep jobs'
- regex: '^bgpcep-.*'
- <<: *releng_view_common
-
-- view:
- name: bier
- description: 'List of bier jobs'
- regex: '^bier-.*'
- <<: *releng_view_common
-
- view:
name: builder
description: 'List of builder jobs'
- regex: '^(builder|lf-infra)-.*'
- <<: *releng_view_common
-
-- view:
- name: capwap
- description: 'List of capwap jobs'
- regex: '^capwap-.*'
- <<: *releng_view_common
-
-- view:
- name: cardinal
- description: 'List of cardinal jobs'
- regex: '^cardinal-.*'
- <<: *releng_view_common
-
-- view:
- name: centinel
- description: 'List of centinel jobs'
- regex: '^centinel-.*'
- <<: *releng_view_common
-
-- view:
- name: circuitsw
- description: 'List of circuitsw jobs'
- regex: '^circuitsw-.*'
- <<: *releng_view_common
-
-- view:
- name: coe
- description: 'List of coe jobs'
- regex: '^coe-.*'
- <<: *releng_view_common
-
-- view:
- name: controller
- description: 'List of controller jobs'
- regex: '^controller-.*'
- <<: *releng_view_common
-
-- view:
- name: coretutorials
- description: 'List of coretutorials jobs'
- regex: '^coretutorials-.*'
- <<: *releng_view_common
-
-- view:
- name: daexim
- description: 'List of daexim jobs'
- regex: '^daexim-.*'
- <<: *releng_view_common
-
-- view:
- name: didm
- description: 'List of didm jobs'
- regex: '^didm-.*'
- <<: *releng_view_common
-
-- view:
- name: distribution
- description: 'List of distribution jobs'
- regex: '^(integration-)?distribution-.*'
- <<: *releng_view_common
-
-- view:
- name: dlux
- description: 'List of dlux jobs'
- regex: '^dlux-.*'
- <<: *releng_view_common
-
-- view:
- name: dluxapps
- description: 'List of dluxapps jobs'
- regex: '^dluxapps-.*'
- <<: *releng_view_common
-
-- view:
- name: docs
- description: 'List of docs jobs'
- regex: '^docs-.*'
- <<: *releng_view_common
-
-- view:
- name: eman
- description: 'List of eman jobs'
- regex: '^eman-.*'
- <<: *releng_view_common
-
-- view:
- name: epc
- description: 'List of epc jobs'
- regex: '^epc-.*'
- <<: *releng_view_common
-
-- view:
- name: faas
- description: 'List of faas jobs'
- regex: '^faas-.*'
- <<: *releng_view_common
-
-- view:
- name: federation
- description: 'List of federation jobs'
- regex: '^federation-.*'
- <<: *releng_view_common
-
-- view:
- name: fpc
- description: 'List of fpc jobs'
- regex: '^fpc-.*'
- <<: *releng_view_common
-
-- view:
- name: genius
- description: 'List of genius jobs'
- regex: '^genius-.*'
- <<: *releng_view_common
-
-- view:
- name: gnt
- description: 'List of gnt jobs'
- regex: '^gnt-.*'
- <<: *releng_view_common
-
-- view:
- name: groupbasedpolicy
- description: 'List of groupbasedpolicy jobs'
- regex: '^groupbasedpolicy-.*'
- <<: *releng_view_common
-
-- view:
- name: infrautils
- description: 'List of infrautils jobs'
- regex: '^infrautils-.*'
- <<: *releng_view_common
-
-- view:
- name: integration
- description: 'List of integration jobs'
- regex: '^integration-.*'
- <<: *releng_view_common
-
-- view:
- name: iotdm
- description: 'List of iotdm jobs'
- regex: '^iotdm-.*'
- <<: *releng_view_common
-
-- view:
- name: jsonrpc
- description: 'List of jsonrpc jobs'
- regex: '^jsonrpc-.*'
- <<: *releng_view_common
-
-- view:
- name: kafkaproducer
- description: 'List of kafkaproducer jobs'
- regex: '^kafkaproducer-.*'
- <<: *releng_view_common
-
-- view:
- name: l2switch
- description: 'List of l2switch jobs'
- regex: '^l2switch-.*'
- <<: *releng_view_common
-
-- view:
- name: lacp
- description: 'List of lacp jobs'
- regex: '^lacp-.*'
- <<: *releng_view_common
-
-- view:
- name: lispflowmapping
- description: 'List of lispflowmapping jobs'
- regex: '^lispflowmapping-.*'
- <<: *releng_view_common
-
-- view:
- name: mdsal
- description: 'List of mdsal jobs'
- regex: '^mdsal-.*'
- <<: *releng_view_common
-
-- view:
- name: messaging4transport
- description: 'List of messaging4transport jobs'
- regex: '^messaging4transport-.*'
- <<: *releng_view_common
-
-- view:
- name: natapp
- description: 'List of natapp jobs'
- regex: '^natapp-.*'
- <<: *releng_view_common
-
-- view:
- name: nemo
- description: 'List of nemo jobs'
- regex: '^nemo-.*'
- <<: *releng_view_common
-
-- view:
- name: netconf
- description: 'List of netconf jobs'
- regex: '^netconf-.*'
- <<: *releng_view_common
-
-- view:
- name: netide
- description: 'List of netide jobs'
- regex: '^netide-.*'
- <<: *releng_view_common
-
-- view:
- name: netvirt
- description: 'List of netvirt jobs'
- regex: '^netvirt-.*'
- <<: *releng_view_common
-
-- view:
- name: netvirt-csit
- description: 'List of netvirt-csit jobs'
- regex: 'netvirt-csit(?!(.*gate)|(.*hwvtep)).*'
- <<: *integration_view_csit
-
-- view:
- name: neutron
- description: 'List of neutron jobs'
- regex: '^neutron-.*'
- <<: *releng_view_common
-
-- view:
- name: next
- description: 'List of next jobs'
- regex: '^next-.*'
- <<: *releng_view_common
-
-- view:
- name: nic
- description: 'List of nic jobs'
- regex: '^nic-.*'
- <<: *releng_view_common
-
-- view:
- name: ocpplugin
- description: 'List of ocpplugin jobs'
- regex: '^ocpplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: odlparent
- description: 'List of odlparent jobs'
- regex: '^odlparent-.*'
- <<: *releng_view_common
-
-- view:
- name: of-config
- description: 'List of of-config jobs'
- regex: '^of-config-.*'
- <<: *releng_view_common
-
-- view:
- name: openci
- description: 'List of openci jobs'
- regex: '^openci-.*'
- <<: *releng_view_common
-
-- view:
- name: openflowplugin
- description: 'List of openflowplugin jobs'
- regex: '^openflowplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: openflowplugin-oxygen
- description: 'List of openflowplugin oxygen jobs'
- regex: 'openflowplugin-.*-oxygen'
- <<: *releng_view_common
-
-- view:
- name: opflex
- description: 'List of opflex jobs'
- regex: '^opflex-.*'
- <<: *releng_view_common
-
-- view:
- name: ovil
- description: 'List of ovil jobs'
- regex: '^ovil-.*'
- <<: *releng_view_common
-
-- view:
- name: ovsdb
- description: 'List of ovsdb jobs'
- regex: '^ovsdb-.*'
- <<: *releng_view_common
-
-- view:
- name: p4plugin
- description: 'List of p4plugin jobs'
- regex: '^p4plugin-.*'
- <<: *releng_view_common
-
-- view:
- name: packaging
- description: 'List of packaging, ansible and puppet jobs'
- regex: '^packaging.*|ansible.*|puppet.*'
- <<: *releng_view_common
-
-- view:
- name: packer
- description: 'List of packer jobs'
- regex: '^builder-.*packer.*'
- <<: *releng_view_common
-
-- view:
- name: packetcable
- description: 'List of packetcable jobs'
- regex: '^packetcable-.*'
- <<: *releng_view_common
-
-- view:
- name: persistence
- description: 'List of persistence jobs'
- regex: '^persistence-.*'
- <<: *releng_view_common
-
-- view:
- name: reservation
- description: 'List of reservation jobs'
- regex: '^reservation-.*'
- <<: *releng_view_common
-
-- view:
- name: sdninterfaceapp
- description: 'List of sdninterfaceapp jobs'
- regex: '^sdninterfaceapp-.*'
- <<: *releng_view_common
-
-- view:
- name: sfc
- description: 'List of sfc jobs'
- regex: '^sfc-.*'
- <<: *releng_view_common
-
-- view:
- name: snbi
- description: 'List of snbi jobs'
- regex: '^snbi-.*'
- <<: *releng_view_common
-
-- view:
- name: snmp
- description: 'List of snmp jobs'
- regex: '^snmp-.*'
- <<: *releng_view_common
-
-- view:
- name: snmp4sdn
- description: 'List of snmp4sdn jobs'
- regex: '^snmp4sdn-.*'
- <<: *releng_view_common
-
-- view:
- name: sxp
- description: 'List of sxp jobs'
- regex: '^sxp-.*'
- <<: *releng_view_common
-
-- view:
- name: systemmetrics
- description: 'List of systemmetrics jobs'
- regex: '^systemmetrics-.*'
- <<: *releng_view_common
-
-- view:
- name: telemetry
- description: 'List of telemetry jobs'
- regex: '^telemetry-.*'
- <<: *releng_view_common
-
-- view:
- name: topoprocessing
- description: 'List of topoprocessing jobs'
- regex: '^topoprocessing-.*'
- <<: *releng_view_common
-
-- view:
- name: transportpce
- description: 'List of transportpce jobs'
- regex: '^transportpce-.*'
- <<: *releng_view_common
-
-- view:
- name: tsdr
- description: 'List of tsdr jobs'
- regex: '^tsdr-.*'
- <<: *releng_view_common
-
-- view:
- name: ttp
- description: 'List of ttp jobs'
- regex: '^ttp-.*'
- <<: *releng_view_common
-
-- view:
- name: unimgr
- description: 'List of unimgr jobs'
- regex: '^unimgr-.*'
- <<: *releng_view_common
-
-- view:
- name: usc
- description: 'List of usc jobs'
- regex: '^usc-.*'
- <<: *releng_view_common
-
-- view:
- name: uscplugin
- description: 'List of uscplugin jobs'
- regex: '^usecplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: vbd
- description: 'List of vbd jobs'
- regex: '^vbd-.*'
- <<: *releng_view_common
-
-- view:
- name: yang-push
- description: 'List of yang-push jobs'
- regex: '^yang-push-.*'
- <<: *releng_view_common
-
-- view:
- name: yangide
- description: 'List of yangide jobs'
- regex: '^yangide-.*'
- <<: *releng_view_common
-
-- view:
- name: yangtools
- description: 'List of yangtools jobs'
- regex: '^yangtools-.*'
+ regex: '^builder-.*'
<<: *releng_view_common
branch: 'master'
mvn-settings: 'reservation-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: reservation
+ description: 'List of reservation jobs'
+ regex: '^reservation-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'sdninterfaceapp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: sdninterfaceapp
+ description: 'List of sdninterfaceapp jobs'
+ regex: '^sdninterfaceapp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'sfc-settings'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
+
+- view:
+ name: sfc
+ description: 'List of sfc jobs'
+ regex: '^sfc-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snbi-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snbi
+ description: 'List of snbi jobs'
+ regex: '^snbi-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snmp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snmp
+ description: 'List of snmp jobs'
+ regex: '^snmp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snmp4sdn-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snmp4sdn
+ description: 'List of snmp4sdn jobs'
+ regex: '^snmp4sdn-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'sxp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: sxp
+ description: 'List of sxp jobs'
+ regex: '^sxp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'systemmetrics-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: systemmetrics
+ description: 'List of systemmetrics jobs'
+ regex: '^systemmetrics-.*'
+ <<: *releng_view_common
mvn-settings: 'telemetry-settings'
mvn-goals: 'clean install'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: telemetry
+ description: 'List of telemetry jobs'
+ regex: '^telemetry-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'topoprocessing-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: topoprocessing
+ description: 'List of topoprocessing jobs'
+ regex: '^topoprocessing-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'transportpce-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: transportpce
+ description: 'List of transportpce jobs'
+ regex: '^transportpce-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'tsdr-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: tsdr
+ description: 'List of tsdr jobs'
+ regex: '^tsdr-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ttp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ttp
+ description: 'List of ttp jobs'
+ regex: '^ttp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'unimgr-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: unimgr
+ description: 'List of unimgr jobs'
+ regex: '^unimgr-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'usc-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: usc
+ description: 'List of usc jobs'
+ regex: '^usc-.*'
+ <<: *releng_view_common
project-name: 'usecplugin'
mvn-settings: 'usecplugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: usecplugin
+ description: 'List of usecplugin jobs'
+ regex: '^usecplugin-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yang-push-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yang-push
+ description: 'List of yang-push jobs'
+ regex: '^yang-push-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yangide-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yangide
+ description: 'List of yangide jobs'
+ regex: '^yangide-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yangtools-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yangtools
+ description: 'List of yangtools jobs'
+ regex: '^yangtools-.*'
+ <<: *releng_view_common
# strip the "stable" off of the branch
branch_name=$(cut -d'/' -f2 <<< "${branch}")
-wget https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
+# Do not upgrade pip to v10. v10 does not allow uninstalling
+# distutils installed packages. This fails the openstack pip installs
+# below when it attempts to uninstall packages.
+# devstack patch that is trying to get pip 10 working:
+# https://review.openstack.org/#/c/561597/
+# wget https://bootstrap.pypa.io/get-pip.py
+# python get-pip.py
mkdir tmp
cd tmp
echo '---> Installing openvswitch from relevant openstack branch'
yum install -y "centos-release-openstack-${branch_name}"
-yum install -y --nogpgcheck openvswitch
+# install 2.8.2 for queens.
+# 2.9.0 is the current version in openstack-queens, but it is buggy.
+# Remove this when https://review.rdoproject.org/r/#/c/13839/ merges and 2.9.2 is in the repo.
+if [ "${branch}" == "stable/queens" ]; then
+ yum install -y --nogpgcheck openvswitch-1:2.8.2
+else
+ yum install -y --nogpgcheck openvswitch
+fi
cd "$OLDPWD"
rm -fr tmp
src: '/tmp/hbase-{{hbase_version}}.tar.gz'
dest: /tmp/Hbase
remote_src: true
- - name: Install Quagga
- block:
- - name: Fetch Quagga git repo
- git:
- repo: https://github.com/6WIND/zrpcd.git
- dest: /tmp/build_quagga/zrpcd
- version: master
- - name: Set compile script executable
- file:
- path: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
- mode: 0755
- - name: Compile Quagga
- shell: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
- args:
- chdir: /tmp/build_quagga/zrpcd
- executable: /bin/bash
- become: true
post_tasks:
- name: System Reseal
# Install netaddr package which is needed by some custom mininet topologies
apt-get install python-netaddr
-
-# Check out quagga , compile and install for router functionalities
-echo "Installing the Quagga..."
-mkdir -p /tmp/build_quagga
-cd /tmp/build_quagga
-git clone https://github.com/6WIND/zrpcd.git
-cd zrpcd
-git checkout 20170731
-chmod a+x /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
-/tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
-
-# Removing the build_quagga folder
-rm -rf /tmp/build_quagga/
# Install netaddr package which is needed by some custom mininet topologies
apt-get install python-netaddr
-
-# Check out quagga , compile and install for router functionalities
-echo "Installing the Quagga..."
-mkdir -p /tmp/build_quagga
-cd /tmp/build_quagga
-git clone https://github.com/6WIND/zrpcd.git
-cd zrpcd
-git checkout 20170731
-chmod a+x /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
-/tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
-
-# Removing the build_quagga folder
-rm -rf /tmp/build_quagga/
apt: name=vlan state=present
become: true
- - name: Install Quagga
- block:
- - name: Fetch Quagga git repo
- git:
- repo: https://github.com/6WIND/zrpcd.git
- dest: /tmp/build_quagga/zrpcd
- version: 20170731
- - name: Set compile script executable
- file:
- path: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
- mode: 0755
- - name: Compile Quagga
- shell: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
- args:
- chdir: /tmp/build_quagga/zrpcd
- executable: /bin/bash
- become: true
-
post_tasks:
- name: System Reseal
script: ../common-packer/provision/system-reseal.sh
+++ /dev/null
-{
- "variables": {
- "base_image": null,
- "distro": null,
- "cloud_auth_url": null,
- "cloud_user": null,
- "cloud_pass": null,
- "cloud_network": null,
- "cloud_tenant": null,
- "cloud_user_data": null,
- "ssh_user": null,
- "ssh_proxy_host": ""
- },
- "builders": [
- {
- "type": "openstack",
- "identity_endpoint": "{{user `cloud_auth_url`}}",
- "domain_name": "Default",
- "tenant_name": "{{user `cloud_tenant`}}",
- "username": "{{user `cloud_user`}}",
- "password": "{{user `cloud_pass`}}",
- "region": "ca-ymq-1",
- "availability_zone": "ca-ymq-2",
- "ssh_username": "{{user `ssh_user`}}",
- "ssh_proxy_host": "{{user `ssh_proxy_host`}}",
- "image_name": "ZZCI - {{user `distro`}} - devstack-ocata - {{isotime \"20060102-150405.000\"}}",
- "instance_name": "{{user `distro`}}-devstack-ocata-{{uuid}}",
- "source_image_name": "{{user `base_image`}}",
- "flavor": "v1-standard-1",
- "networks": [
- "{{user `cloud_network`}}"
- ],
- "user_data_file": "{{user `cloud_user_data`}}",
- "metadata": {
- "ci_managed": "yes"
- }
- }
- ],
- "provisioners": [
- {
- "type": "shell",
- "environment_vars": [
- "os_branch=stable/ocata"
- ],
- "scripts": [
- "provision/baseline.sh",
- "provision/devstack-pre-pip.sh",
- "provision/system_reseal_local_env.sh",
- "provision/system_reseal.sh"
- ],
- "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
- }
- ]
-}
],
"execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
},
+ {
+ "type": "shell-local",
+ "command": "./common-packer/ansible-galaxy.sh {{user `ansible_roles_path`}}"
+ },
{
"type": "ansible",
"playbook_file": "provision/mininet-ovs-2.8.yaml",
],
"execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
},
+ {
+ "type": "shell-local",
+ "command": "./common-packer/ansible-galaxy.sh {{user `ansible_roles_path`}}"
+ },
{
"type": "ansible",
"playbook_file": "provision/robot.yaml",