3 # NOTE: This file takes two jobs from the OpenStack infra and
4 # puts them here. See here:
6 # https://github.com/openstack-infra/project-config/blob/master/jenkins/jobs/networking-odl.yaml
8 export PATH="$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin"
10 # *SIGH*. This is required to get lsb_release
11 sudo yum -y install redhat-lsb-core indent python-testrepository
13 echo "Making /opt/stack/new jenkins:jenkins"
14 sudo /usr/sbin/groupadd jenkins
15 sudo mkdir -p /opt/stack/new
16 sudo chown -R jenkins:jenkins /opt/stack/new
17 sudo bash -c 'echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'
19 # We need to install some scripts from openstack/os-testr project
21 echo "Setting up infra scripts"
22 sudo mkdir -p /usr/local/jenkins/slave_scripts
23 git clone https://github.com/openstack/os-testr.git
24 cd os-testr/os_testr || exit 1
25 sudo cp subunit2html.py /usr/local/jenkins/slave_scripts
27 # Save existing WORKSPACE
28 SAVED_WORKSPACE="$WORKSPACE"
29 export WORKSPACE=~/workspace
31 cd "$WORKSPACE" || exit 1
33 # This is the job which checks out devstack-gate
34 if [[ ! -e devstack-gate ]]; then
35 echo "Cloning devstack-gate"
36 git clone https://git.openstack.org/openstack-infra/devstack-gate
38 echo "Fixing devstack-gate git remotes"
39 cd devstack-gate || exit 1
40 git remote set-url origin https://git.openstack.org/openstack-infra/devstack-gate
43 if ! git clean -x -f ; then
48 git reset --hard remotes/origin/master
49 if ! git clean -x -f ; then
56 # Set the pieces we want to test
57 if [ "$GERRIT_PROJECT" == "openstack/neutron" ]; then
58 export ZUUL_PROJECT=$GERRIT_PROJECT
59 export ZUUL_BRANCH=$GERRIT_REFSPEC
60 elif [ "$GERRIT_PROJECT" == "openstack-dev/devstack" ]; then
61 export ZUUL_PROJECT=$GERRIT_PROJECT
62 export ZUUL_BRANCH=$GERRIT_REFSPEC
65 echo "Setting environment variables"
67 # Enable ODL debug logs and set memory parameters
68 DEVSTACK_LOCAL_CONFIG=""
69 DEVSTACK_LOCAL_CONFIG+="ODL_NETVIRT_DEBUG_LOGS=True;"
70 DEVSTACK_LOCAL_CONFIG+="ODL_JAVA_MIN_MEM=512m;"
71 DEVSTACK_LOCAL_CONFIG+="ODL_JAVA_MAX_MEM=784m;"
72 DEVSTACK_LOCAL_CONFIG+="ODL_JAVA_MAX_PERM_MEM=784m;"
74 # Set ODL_URL_PREFIX if "nexus proxy" is provided
75 export URL_PREFIX="${ODLNEXUSPROXY:-https://nexus.opendaylight.org}"
76 if [ -n "$ODLNEXUSPROXY" ] ; then
77 DEVSTACK_LOCAL_CONFIG+="ODL_URL_PREFIX=$ODLNEXUSPROXY;"
80 ## # Trim down the boot wait time
81 ## export ODL_BOOT_WAIT=30
83 # Use specific build, if asked to do so
84 if [ "${ODL_VERSION}" == "beryllium" ] ; then
85 DEVSTACK_LOCAL_CONFIG+="ODL_RELEASE=beryllium-snapshot-0.4.0;"
88 # And this runs devstack-gate
89 export PYTHONUNBUFFERED=true
90 export DEVSTACK_GATE_TIMEOUT=120
91 export DEVSTACK_GATE_NEUTRON=1
92 export DEVSTACK_GATE_TEMPEST=1
93 export BRANCH_OVERRIDE=master
94 if [ "$BRANCH_OVERRIDE" != "default" ] ; then
95 export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
97 # Because we are testing a non standard project, add
98 # our project repository. This makes zuul do the right
99 # reference magic for testing changes.
100 export PROJECTS="openstack/networking-odl $PROJECTS"
101 # Note the actual url here is somewhat irrelevant because it
102 # caches in nodepool, however make it a valid url for
103 # documentation purposes.
104 if [ "$GERRIT_PROJECT" == "openstack/networking-odl" ]; then
105 export DEVSTACK_LOCAL_CONFIG+="enable_plugin networking-odl https://$GERRIT_HOST/$GERRIT_PROJECT $GERRIT_REFSPEC"
107 export DEVSTACK_LOCAL_CONFIG+="enable_plugin networking-odl https://git.openstack.org/openstack/networking-odl"
111 # Keep localrc to be able to set some vars in pre_test_hook
112 export KEEP_LOCALRC=1
114 # Unset this because it's set by the underlying Jenkins node ...
117 # By default, only run certain tempest tests
118 export DEVSTACK_GATE_TEMPEST_REGEX=${TEMPEST_REGEX:-"tempest.api.network.test_networks_negative tempest.api.network.test_networks.NetworksTestJSON"}
120 # Specifically set the services we want
121 #OVERRIDE_ENABLED_SERVICES=q-svc,q-dhcp,q-l3,q-meta,quantum,key,g-api,g-reg,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-xvnc,n-cauth,h-eng,h-api,h-api-cfn,h-api-cw,rabbit,tempest,mysql
123 echo "Copying devstack-vm-gate-wrap.sh"
124 cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
125 echo "Running safe-devstack-vm-gate-wrap.sh"
126 ./safe-devstack-vm-gate-wrap.sh
127 # Save the return value so we can exit with this
131 OS_WORKSPACE="$WORKSPACE"
132 export WORKSPACE="$SAVED_WORKSPACE"
134 # Copy and display all the logs
135 cat /opt/stack/new/devstacklog*
136 ls /opt/stack/; ls /opt/stack/new; ls /opt/stack/new/opendaylight;
137 cp -r "$OS_WORKSPACE/logs" "$WORKSPACE"
138 cp -a /opt/stack/new/logs/screen-odl-karaf* "$WORKSPACE/logs"
139 mkdir -p "$WORKSPACE/logs/opendaylight"
140 cp -a /opt/stack/new/opendaylight/distribution*/etc "$WORKSPACE/logs/opendaylight"
141 # Unzip the logs to make them easier to view
142 gunzip "$WORKSPACE"/logs/*.gz