
Across the entirety of our job config corpus, we only ever set the tarball-site parameter to tarballs.openstack.org. Instead just set it directly in the publishers where it's needed and reduce unwarranted confusion for people writing job configs. This also allows us to get rid of the parameterized sites in the tarball, wheel and war publishers. Change-Id: I31109f41177b8c07177d7ed8ef16cbfd135131ef
1359 lines
40 KiB
YAML
1359 lines
40 KiB
YAML
- builder:
|
|
name: contact
|
|
builders:
|
|
- shell: |
|
|
#!/bin/sh
|
|
echo "For problems with this job, contact {name} <{email}> freenode: {irc}"
|
|
|
|
- builder:
|
|
name: print-template-name
|
|
builders:
|
|
- shell: 'echo JJB template: {template-name}'
|
|
|
|
- builder:
|
|
name: gerrit-git-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
count=0
|
|
until /usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org git://git.openstack.org ; do
|
|
echo "git failed, retrying"
|
|
count=$(($count + 1))
|
|
if [ $count -eq 3 ]; then
|
|
echo "Maximum of 3 git retries reached"
|
|
exit 1
|
|
fi
|
|
sleep 5
|
|
done
|
|
|
|
- builder:
|
|
name: zuul-git-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
CLONEMAP=`mktemp`
|
|
function cleanup {
|
|
# In cases where zuul-cloner is aborted during a git
|
|
# clone operation, git will remove the git work tree in
|
|
# its cleanup. The work tree in these jobs is the
|
|
# workspace directory, which means that subsequent
|
|
# jenkins post-build actions can not run because the
|
|
# workspace has been removed.
|
|
# To reduce the likelyhood of this having an impact,
|
|
# recreate the workspace directory if needed
|
|
mkdir -p $WORKSPACE
|
|
rm -f $CLONEMAP
|
|
}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: $ZUUL_PROJECT
|
|
dest: .
|
|
EOF
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
git://git.openstack.org $ZUUL_PROJECT
|
|
|
|
- builder:
|
|
name: zuul-git-prep-upper-constraints
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
CLONEMAP=`mktemp`
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {
|
|
mkdir -p $WORKSPACE
|
|
rm -rf $CLONEMAP $REQS_DIR
|
|
}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: $ZUUL_PROJECT
|
|
dest: .
|
|
EOF
|
|
# zuul cloner works poorly if there are 2 names that are the
|
|
# same in here.
|
|
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
|
|
cat >> $CLONEMAP << EOF
|
|
- name: openstack/requirements
|
|
dest: $REQS_DIR
|
|
EOF
|
|
fi
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
git://git.openstack.org $ZUUL_PROJECT openstack/requirements
|
|
# REQS_DIR is not set for openstack/requirements and there's also
|
|
# no need to copy in this case.
|
|
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
fi
|
|
|
|
- builder:
|
|
name: zuul-git-branch-prep-upper-constraints
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
export BRANCH={branch}
|
|
CLONEMAP=`mktemp`
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {{
|
|
mkdir -p $WORKSPACE
|
|
rm -rf $CLONEMAP $REQS_DIR
|
|
}}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: $ZUUL_PROJECT
|
|
dest: .
|
|
EOF
|
|
# zuul cloner works poorly if there are 2 names that are the
|
|
# same in here.
|
|
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
|
|
cat >> $CLONEMAP << EOF
|
|
- name: openstack/requirements
|
|
dest: $REQS_DIR
|
|
EOF
|
|
fi
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
--branch=$BRANCH \
|
|
git://git.openstack.org $ZUUL_PROJECT openstack/requirements
|
|
# REQS_DIR is not set for openstack/requirements and there's also
|
|
# no need to copy in this case.
|
|
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
fi
|
|
|
|
- builder:
|
|
name: zuul-git-prep-upper-constraints-cross
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
CLONEMAP=`mktemp`
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {{
|
|
mkdir -p $WORKSPACE
|
|
rm -rf $CLONEMAP $REQS_DIR
|
|
}}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: '{project}'
|
|
dest: .
|
|
EOF
|
|
# zuul cloner works poorly if there are 2 names that are the
|
|
# same in here.
|
|
if [[ "{project}" != "openstack/requirements" ]]; then
|
|
cat >> $CLONEMAP << EOF
|
|
- name: openstack/requirements
|
|
dest: $REQS_DIR
|
|
EOF
|
|
fi
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
git://git.openstack.org {project} openstack/requirements
|
|
# REQS_DIR is not set for openstack/requirements and there's also
|
|
# no need to copy in this case.
|
|
if [[ "{project}" != "openstack/requirements" ]]; then
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
fi
|
|
|
|
- builder:
|
|
name: zuul-git-prep-upper-constraints-api-ref
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
CLONEMAP=`mktemp`
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {{
|
|
mkdir -p $WORKSPACE
|
|
rm -rf $CLONEMAP $REQS_DIR
|
|
}}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: '{project}'
|
|
dest: .
|
|
EOF
|
|
# clone os-api-ref into a subdir of the main project, makes
|
|
# it easy to find later for installing.
|
|
cat >> $CLONEMAP << EOF
|
|
- name: openstack/os-api-ref
|
|
dest: os-api-ref
|
|
- name: openstack/requirements
|
|
dest: $REQS_DIR
|
|
EOF
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
git://git.openstack.org '{project}' openstack/os-api-ref openstack/requirements
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
|
|
- builder:
|
|
name: zuul-git-branch-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
CLONEMAP=`mktemp`
|
|
function cleanup {{
|
|
mkdir -p $WORKSPACE
|
|
rm -f $CLONEMAP
|
|
}}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: $ZUUL_PROJECT
|
|
dest: .
|
|
EOF
|
|
# If this is called in a periodic job, these will not be set
|
|
export ZUUL_BRANCH=${{ZUUL_BRANCH:-master}}
|
|
export ZUUL_REF=${{ZUUL_REF:-None}}
|
|
export BRANCH_OVERRIDE={branch-override}
|
|
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
|
|
BRANCH_ARG="--branch $BRANCH_OVERRIDE"
|
|
fi
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
$BRANCH_ARG git://git.openstack.org $ZUUL_PROJECT
|
|
|
|
- builder:
|
|
# Use this macro in the release pipeline to get a tagged repo with
|
|
# tag checked out and requirements repo with the branch the tag is
|
|
# on.
|
|
# The macro also works in other pipelines.
|
|
name: zuul-release-git-prep-upper-constraints
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
function get_branch_tag {
|
|
|
|
BRANCHES=`git branch -a --contains $ZUUL_REFNAME`
|
|
|
|
TARGET_BRANCH=`echo "$BRANCHES"|grep '^ remotes/origin/stable'|cut -d/ -f3-|sort|head -n1`
|
|
|
|
if [ -z $TARGET_BRANCH ] ; then
|
|
TARGET_BRANCH=`echo "$BRANCHES"|grep '^ remotes/origin/'|cut -d/ -f3-|sort|grep -v ^HEAD|head -n1`
|
|
fi
|
|
# Nothing found.
|
|
# Note that zuul-cloner will also fallback to master if
|
|
# the TARGET_BRANCH does not exist.
|
|
if [ -z $TARGET_BRANCH ] ; then
|
|
echo "Tag not found, falling back to master"
|
|
TARGET_BRANCH=master
|
|
fi
|
|
}
|
|
|
|
CLONEMAP=`mktemp`
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {
|
|
mkdir -p $WORKSPACE
|
|
rm -rf $CLONEMAP $REQS_DIR
|
|
}
|
|
trap cleanup EXIT
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: $ZUUL_PROJECT
|
|
dest: .
|
|
EOF
|
|
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
git://git.openstack.org $ZUUL_PROJECT
|
|
|
|
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
|
|
# Figure out branch for requirements checkout
|
|
if [[ "$ZUUL_REFNAME" =~ ^refs/tags/ ]] ; then
|
|
get_branch_tag
|
|
else
|
|
# ZUUL_REFNAME is only available in post jobs
|
|
TARGET_BRANCH=${ZUUL_REFNAME:-$ZUUL_REF}
|
|
fi
|
|
|
|
cat > $CLONEMAP << EOF
|
|
clonemap:
|
|
- name: openstack/requirements
|
|
dest: $REQS_DIR
|
|
EOF
|
|
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
|
|
--branch $TARGET_BRANCH \
|
|
git://git.openstack.org openstack/requirements
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
fi
|
|
|
|
|
|
- builder:
|
|
name: branch-git-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
export BRANCH={branch}
|
|
/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org git://git.openstack.org
|
|
|
|
- builder:
|
|
name: constraints-branch-git-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
|
|
# No need to copy for openstack/requirements
|
|
if [[ "$ZUUL_PROJECT" == "openstack/requirements" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
# Check out requirements repository for coresponding branch
|
|
REQS_DIR=`mktemp -d`
|
|
function cleanup {{
|
|
rm -rf $REQS_DIR
|
|
}}
|
|
trap cleanup EXIT
|
|
export BRANCH={branch}
|
|
# TODO(jaegerandi): Remove once stable/newton branch for
|
|
# requirements repo is created.
|
|
if [[ "$BRANCH" == "stable/newton" ]] ; then
|
|
BRANCH="master"
|
|
fi
|
|
export ZUUL_REF=""
|
|
export ZUUL_NEWREV=""
|
|
export ZUUL_CHANGE=""
|
|
export ZUUL_PROJECT="openstack/requirements"
|
|
pushd $REQS_DIR
|
|
/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org git://git.openstack.org
|
|
popd
|
|
cp $REQS_DIR/upper-constraints.txt ./
|
|
|
|
- builder:
|
|
name: zuul-clone
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
/usr/zuul-env/bin/zuul-cloner --cache-dir /opt/git \
|
|
git://git.openstack.org {project}
|
|
|
|
- builder:
|
|
name: revoke-sudo
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
sudo rm -f /etc/sudoers.d/jenkins-sudo
|
|
# Prove that general sudo access is actually revoked
|
|
! sudo -n true
|
|
|
|
- builder:
|
|
name: coverage
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-cover.sh {env}"
|
|
|
|
- builder:
|
|
name: docs-env
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh {env}"
|
|
|
|
- builder:
|
|
name: docs-tags-only-env
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh {env} tags-only"
|
|
|
|
- builder:
|
|
name: docs
|
|
builders:
|
|
- docs-env:
|
|
env: venv
|
|
|
|
- builder:
|
|
name: add-docs-root-marker
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
MARKER_TEXT="Project: $ZUUL_PROJECT Ref: $ZUUL_REFNAME Build: $ZUUL_UUID Revision: $ZUUL_NEWREV"
|
|
echo $MARKER_TEXT > {docsrootdir}/.root-marker
|
|
|
|
- builder:
|
|
name: gerrit-package
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/package-gerrit.sh"
|
|
|
|
- builder:
|
|
name: linters
|
|
builders:
|
|
- run-tox:
|
|
envlist: linters
|
|
|
|
- builder:
|
|
name: bashate
|
|
builders:
|
|
- run-tox:
|
|
envlist: bashate
|
|
|
|
- builder:
|
|
name: pep8
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pep8.sh {env}"
|
|
|
|
- builder:
|
|
name: pylint
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pylint.sh {env}"
|
|
|
|
- builder:
|
|
name: nodejs-install
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -eux
|
|
# Prerequisites
|
|
sudo apt-get update
|
|
sudo apt-get install -y apt-transport-https lsb-release curl
|
|
|
|
DISTRO=$(lsb_release -c -s)
|
|
|
|
# Install via nodesource
|
|
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
|
|
|
|
echo "deb https://deb.nodesource.com/node_{version}.x $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
|
|
echo "deb-src https://deb.nodesource.com/node_{version}.x $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list
|
|
|
|
sudo apt-get update
|
|
sudo apt-get install -y nodejs
|
|
|
|
# Output to the log for debugging's sake.
|
|
node --version
|
|
npm --version
|
|
npm config set registry https://registry.npmjs.org/
|
|
|
|
- builder:
|
|
name: npm-run
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -eux
|
|
export DISPLAY=:99
|
|
npm install
|
|
|
|
# Try running as a standard lifecycle script, otherwise try custom.
|
|
npm_lifecycle_phases="publish install version test stop start restart pack"
|
|
|
|
if [[ $npm_lifecycle_phases =~ (^| ){command}($| ) ]]; then
|
|
npm {command} --silent
|
|
else
|
|
npm run {command} --silent
|
|
fi
|
|
|
|
# If no shrinkwrap exists, generate it.
|
|
if [ ! -f ./npm-shrinkwrap.json ]; then
|
|
npm prune # https://github.com/npm/npm/issues/6298
|
|
npm shrinkwrap
|
|
fi
|
|
|
|
- builder:
|
|
name: npm-dsvm-run
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -eux
|
|
export PYTHONUNBUFFERED=true
|
|
export DEVSTACK_GATE_TEMPEST=0
|
|
export DEVSTACK_GATE_EXERCISES=0
|
|
export DEVSTACK_GATE_INSTALL_TESTONLY=1
|
|
export DEVSTACK_GATE_NEUTRON=1
|
|
|
|
# Xvfb Buffer...
|
|
export DISPLAY=:99
|
|
npm install
|
|
npm_lifecycle_phases="publish install version test stop start restart pack"
|
|
|
|
# Run any custom devstack configuration required by the project
|
|
function pre_test_hook {{
|
|
# Try running as a standard lifecycle script, otherwise try custom.
|
|
if [[ $npm_lifecycle_phases =~ (^| ){pre_test_command}($| ) ]]; then
|
|
npm {pre_test_command} --silent
|
|
else
|
|
npm run {pre_test_command} --silent
|
|
fi
|
|
}}
|
|
export -f pre_test_hook
|
|
|
|
function post_test_hook {{
|
|
# If you need access to devstack's clouds.yaml file, it is available
|
|
# at its canonical location at /etc/openstack/clouds.yaml
|
|
|
|
# Try running as a standard lifecycle script, otherwise try custom.
|
|
if [[ $npm_lifecycle_phases =~ (^| ){post_test_command}($| ) ]]; then
|
|
npm {post_test_command} --silent
|
|
else
|
|
npm run {post_test_command} --silent
|
|
fi
|
|
}}
|
|
export -f post_test_hook
|
|
|
|
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
|
./safe-devstack-vm-gate-wrap.sh
|
|
|
|
- builder:
|
|
name: xvfb-start
|
|
builders:
|
|
- shell: |
|
|
DIMENSIONS='1280x1024x24'
|
|
/usr/bin/Xvfb :99 -screen 0 ${DIMENSIONS} -ac +extension GLX +render -noreset 2>&1 > /dev/null &
|
|
|
|
- builder:
|
|
name: xvfb-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y xvfb
|
|
|
|
- builder:
|
|
name: firefox-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y firefox dbus
|
|
|
|
- builder:
|
|
name: chrome-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chromium-browser
|
|
|
|
- builder:
|
|
name: diskimage-builder-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y qemu kpartx debootstrap
|
|
sudo -H pip install dib-utils
|
|
sudo -H pip install diskimage-builder
|
|
|
|
- builder:
|
|
name: proposal-slave-cleanup
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
cd /
|
|
rm -rf `dirname $WORKSPACE`/*
|
|
mkdir $WORKSPACE
|
|
cd $WORKSPACE
|
|
|
|
- builder:
|
|
name: puppet-prepare-node
|
|
builders:
|
|
- shell: |
|
|
if [ -f /usr/bin/yum ]; then
|
|
sudo yum -y remove facter puppet hiera rdo-release
|
|
sudo yum -y install libxml2-devel libxslt-devel ruby-devel zlib-devel
|
|
sudo yum -y groupinstall "Development Tools"
|
|
# Uninstall python-requests from pip, since we install it in
|
|
# system-config/install_puppet.sh
|
|
sudo pip uninstall requests -y || true
|
|
elif [ -f /usr/bin/apt-get ]; then
|
|
sudo apt-get remove -y --purge facter puppet puppet-common hiera
|
|
sudo apt-get update
|
|
sudo apt-get install -y libxml2-dev libxslt-dev zlib1g-dev
|
|
# /etc/default/puppet is not purged when removing Puppet
|
|
# but need to be dropped if we want to re-install puppet-agent on Xenial
|
|
sudo rm -rf /etc/default/puppet
|
|
fi
|
|
|
|
- builder:
|
|
name: puppet-lint
|
|
builders:
|
|
- shell: |
|
|
if [ -f Modulefile -o -f metadata.json ]; then
|
|
if [ -f Modulefile ]; then
|
|
MODULE=$(awk '/^name/ {print $NF}' Modulefile |tr -d \"\')
|
|
elif [ -f metadata.json ]; then
|
|
MODULE=$(python -c 'import json;print json.load(open("metadata.json"))["name"]')
|
|
fi
|
|
if [ -z "$MODULE" ]; then
|
|
echo "Module name not defined in Modulefile or metadata.json"
|
|
else
|
|
mkdir -p "$MODULE"
|
|
rsync -a --exclude="$MODULE" --exclude ".*" . "$MODULE"
|
|
cd "$MODULE"
|
|
fi
|
|
fi
|
|
mkdir .bundled_gems
|
|
export GEM_HOME=`pwd`/.bundled_gems
|
|
if [ -f Gemfile ]; then
|
|
gem install bundler --no-rdoc --no-ri --verbose
|
|
$GEM_HOME/bin/bundle install --without system_tests
|
|
$GEM_HOME/bin/bundle exec rake lint 2>&1
|
|
else
|
|
gem install rake -n ./.bundled_gems/
|
|
gem install puppet-lint
|
|
gem install puppetlabs_spec_helper
|
|
./.bundled_gems/rake lint 2>&1
|
|
fi
|
|
|
|
- builder:
|
|
name: puppet-syntax
|
|
builders:
|
|
- shell: |
|
|
export LANG=en_US.utf8
|
|
find . -iname *.pp | xargs puppet parser validate --modulepath=`pwd`/modules
|
|
for f in `find . -iname *.erb` ; do
|
|
erb -x -T '-' $f | ruby -c
|
|
done
|
|
|
|
- builder:
|
|
name: pin-pip
|
|
builders:
|
|
- shell: sudo pip install "pip<8" "virtualenv<14"
|
|
|
|
- builder:
|
|
name: ansible-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
sudo -H pip install -U ansible
|
|
|
|
- builder:
|
|
name: ansible-syntax
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
cd tests
|
|
ansible-playbook --syntax-check -i inventory test.yml -e rolename=$(basename $(dirname $(pwd)))
|
|
|
|
- builder:
|
|
name: ansible-lint-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
sudo -H pip install ansible-lint
|
|
|
|
- builder:
|
|
name: ansible-lint
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
ansible-lint **/*.yml
|
|
|
|
- builder:
|
|
name: salt-check-commit
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
scripts/gate-check-commit.sh
|
|
|
|
- builder:
|
|
name: salt-formula-test
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
[[ $SALT_VERSION == "latest" ]] && export SALT_VERSION=""
|
|
cd tests
|
|
./run_tests.sh
|
|
|
|
- builder:
|
|
name: ruby-191-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
# Set 1.9.1 ruby and gem as default
|
|
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 20
|
|
sudo update-alternatives --set ruby /usr/bin/ruby1.9.1
|
|
sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.1 10
|
|
sudo update-alternatives --set gem /usr/bin/gem1.9.1
|
|
sudo gem install bundler --no-rdoc --no-ri --verbose
|
|
sudo gem install rake --no-rdoc --no-ri --verbose
|
|
|
|
- builder:
|
|
name: chef-bundler-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
mkdir -p .bundle
|
|
grep -E .*berkshelf.*3\.\d*\.\d*.* Gemfile
|
|
if [ $? -eq 0 ]; then
|
|
# For Berkshelf 3.x use the system gecode 3.x libraries
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgecode-dev libxml2-dev libxml2 libxslt-dev build-essential
|
|
USE_SYSTEM_GECODE=1 bundle install --path=.bundle --jobs 1 --retry 3 --verbose
|
|
else
|
|
bundle install --path=.bundle --jobs 1 --retry 3 --verbose
|
|
fi
|
|
|
|
- builder:
|
|
name: chef-bootstrap
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
./bootstrap.sh
|
|
|
|
- builder:
|
|
name: chef-rake-test
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
chef exec rake
|
|
|
|
- builder:
|
|
name: chef-rake-integration
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
chef exec rake integration
|
|
|
|
- builder:
|
|
name: chef-berkshelf-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
grep -E .*berkshelf.*3\.\d*\.\d*.* Gemfile
|
|
if [ $? -eq 0 ]; then
|
|
bundle exec berks vendor .cookbooks
|
|
else
|
|
mkdir -p .cookbooks
|
|
bundle exec berks install --path=.cookbooks
|
|
fi
|
|
|
|
- builder:
|
|
name: chef-cookbook-rubocop
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
if grep rubocop: Strainerfile; then
|
|
bundle exec strainer test --cookbooks-path=.cookbooks --only=rubocop
|
|
else
|
|
bundle exec rubocop
|
|
fi
|
|
|
|
- builder:
|
|
name: chef-cookbook-foodcritic
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
if grep foodcritic: Strainerfile; then
|
|
bundle exec strainer test --cookbooks-path=.cookbooks --only=foodcritic
|
|
else
|
|
bundle exec foodcritic -f any -t ~FC003 -t ~FC023 .
|
|
fi
|
|
|
|
- builder:
|
|
name: chef-cookbook-chefspec
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
if grep chefspec: Strainerfile; then
|
|
bundle exec strainer test --cookbooks-path=.cookbooks --only=chefspec
|
|
else
|
|
bundle exec rspec --format documentation
|
|
fi
|
|
|
|
- builder:
|
|
name: run-tests
|
|
builders:
|
|
- shell: "./run-tests.sh"
|
|
|
|
- builder:
|
|
name: selenium
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-selenium.sh"
|
|
|
|
- builder:
|
|
name: js-build
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-jsbuild.sh {command}"
|
|
|
|
- builder:
|
|
name: python27
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py27"
|
|
|
|
- builder:
|
|
name: python33
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py33"
|
|
|
|
- builder:
|
|
name: python34
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py34"
|
|
|
|
- builder:
|
|
name: python35
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py35"
|
|
|
|
- builder:
|
|
name: pypy
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh pypy"
|
|
|
|
- builder:
|
|
name: run-tox
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh {envlist}"
|
|
|
|
- builder:
|
|
name: tox-with-tmpdir-passed-in
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
export TMPDIR={new_tmpdir_loc}
|
|
/usr/local/jenkins/slave_scripts/run-tox.sh {envlist}
|
|
|
|
- builder:
|
|
name: assert-no-extra-files
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
OUT=`git ls-files --other --exclude-standard --directory`
|
|
if [ -z "$OUT" ]; then
|
|
echo "No extra files created during test."
|
|
exit 0
|
|
else
|
|
echo "The following un-ignored files were created during the test:"
|
|
echo "$OUT"
|
|
exit 0 # TODO: change to 1 to fail tests.
|
|
fi
|
|
|
|
- builder:
|
|
name: tarball
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
/usr/local/jenkins/slave_scripts/run-tarball.sh {env}
|
|
/usr/local/jenkins/slave_scripts/run-wheel.sh {env}
|
|
|
|
- builder:
|
|
name: devstack-checkout
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
cat > clonemap.yaml << EOF
|
|
clonemap:
|
|
- name: openstack-infra/devstack-gate
|
|
dest: devstack-gate
|
|
EOF
|
|
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
|
git://git.openstack.org \
|
|
openstack-infra/devstack-gate
|
|
|
|
- builder:
|
|
name: link-logs
|
|
builders:
|
|
- shell: |
|
|
#!/bin/sh
|
|
echo "Detailed logs: http://logs.openstack.org/$LOG_PATH/"
|
|
|
|
|
|
- builder:
|
|
name: net-info
|
|
builders:
|
|
- shell: |
|
|
#!/bin/sh
|
|
export PATH=$PATH:/sbin
|
|
if [ -f /etc/dib-builddate.txt ]; then
|
|
echo "Image build date"
|
|
echo "================"
|
|
cat /etc/dib-builddate.txt
|
|
fi
|
|
echo "Host & kernel"
|
|
echo "============="
|
|
uname -a
|
|
echo "Network interface addresses..."
|
|
echo "=============================="
|
|
ip address show
|
|
echo "Network routing tables..."
|
|
echo "========================="
|
|
ip route show
|
|
ip -6 route show
|
|
echo "Network neighbors..."
|
|
echo "===================="
|
|
ip neighbor show
|
|
echo "Route to Git mirror..."
|
|
echo "======================"
|
|
traceroute6 -n git.openstack.org \
|
|
|| traceroute -n git.openstack.org \
|
|
|| true
|
|
|
|
- builder:
|
|
name: install-distro-packages
|
|
builders:
|
|
- shell: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
|
|
|
|
- builder:
|
|
name: install-distro-packages-fallback-test
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
# use the fallback list instead of existing other-requirements.txt
|
|
export PACKAGES=/usr/local/jenkins/common_data/bindep-fallback.txt
|
|
if [ "$ZUUL_PROJECT" == "openstack-infra/bindep" ] ; then
|
|
# if testing a change to bindep, use its entrypoint
|
|
virtualenv bindep-env
|
|
bindep-env/bin/pip install -U .
|
|
export BINDEP=bindep-env/bin/bindep
|
|
elif [ "$ZUUL_PROJECT" == "openstack-infra/project-config" ] ; then
|
|
# if testing a change to project-config, use its fallback list
|
|
export PACKAGES=jenkins/data/bindep-fallback.txt
|
|
fi
|
|
/usr/local/jenkins/slave_scripts/install-distro-packages.sh
|
|
|
|
- builder:
|
|
name: mysql-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
DB_ROOT_PW=insecure_slave
|
|
DB_USER=openstack_citest
|
|
DB_PW=openstack_citest
|
|
sudo -H mysqladmin -u root password $DB_ROOT_PW
|
|
# note; we remove anonymous users first
|
|
sudo -H mysql -u root -p$DB_ROOT_PW -h localhost -e "
|
|
DELETE FROM mysql.user WHERE User='';
|
|
FLUSH PRIVILEGES;
|
|
GRANT ALL PRIVILEGES ON *.*
|
|
TO '$DB_USER'@'%' identified by '$DB_PW' WITH GRANT OPTION;"
|
|
|
|
- builder:
|
|
name: pgsql-prep
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
DB_ROOT_PW=insecure_slave
|
|
DB_USER=openstack_citest
|
|
DB_PW=openstack_citest
|
|
root_roles=$(sudo -H -u postgres psql -t -c "
|
|
SELECT 'HERE' from pg_roles where rolname='$DB_USER'")
|
|
if [[ ${root_roles} == *HERE ]];then
|
|
sudo -H -u postgres psql -c "
|
|
ALTER ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
|
|
else
|
|
sudo -H -u postgres psql -c "
|
|
CREATE ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
|
|
fi
|
|
cat << EOF > $HOME/.pgpass
|
|
*:*:*:$DB_USER:$DB_PW
|
|
EOF
|
|
chmod 0600 $HOME/.pgpass
|
|
|
|
- builder:
|
|
name: mysql-db
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
DB_USER=openstack_citest
|
|
DB_PW=openstack_citest
|
|
mysql -u $DB_USER -p$DB_PW -h 127.0.0.1 -e "
|
|
SET default_storage_engine=MYISAM;
|
|
DROP DATABASE IF EXISTS {db_name};
|
|
CREATE DATABASE {db_name} CHARACTER SET utf8;"
|
|
|
|
- builder:
|
|
name: pgsql-db
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
DB_USER=openstack_citest
|
|
DB_PW=openstack_citest
|
|
psql -h 127.0.0.1 -U $DB_USER -d template1 -c "
|
|
DROP DATABASE IF EXISTS {db_name}"
|
|
createdb -h 127.0.0.1 -U $DB_USER -l C -T template0 -E utf8 {db_name}
|
|
|
|
- builder:
|
|
name: static-publish-prep
|
|
|
|
# We want to publish to the docroot but the scp publisher cannot remove
|
|
# paths, so use a shell builder to move the content in the right place and
|
|
# publish from there.
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
rm -rf ,content
|
|
mv {source} ,content
|
|
rm -rf .[^.]* [^,]*
|
|
# Disable errexit here because there might not be any dotfiles.
|
|
set +e
|
|
mv ,content/.[^.]* ./
|
|
set -e
|
|
mv ,content/* ./
|
|
rm -r ,content
|
|
|
|
- builder:
|
|
name: install-buck
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
if [[ ! -d "buck" ]]
|
|
then
|
|
git clone https://gerrit.googlesource.com/buck
|
|
cd buck
|
|
ant
|
|
fi
|
|
|
|
|
|
- builder:
|
|
name: zuul-swift-upload
|
|
builders:
|
|
- shell: "/usr/zuul-swift-logs-env/bin/python /usr/local/jenkins/slave_scripts/zuul_swift_upload.py --name {zuul_log_instruction_set} {upload_source}"
|
|
|
|
|
|
- builder:
|
|
name: zuul-swift-upload-logs
|
|
builders:
|
|
- zuul-swift-upload:
|
|
zuul_log_instruction_set: logs
|
|
upload_source: '{upload_source}'
|
|
|
|
|
|
- builder:
|
|
name: zuul-swift-upload-console-log
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/grab_console_log.sh"
|
|
- zuul-swift-upload-logs:
|
|
upload_source: '/tmp/console.html'
|
|
|
|
|
|
- builder:
|
|
name: zuul-swift-upload-logs-with-console
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/grab_console_log.sh"
|
|
- zuul-swift-upload-logs:
|
|
upload_source: '{upload_source} /tmp/console.html'
|
|
|
|
|
|
- builder:
|
|
name: print-node-uuid
|
|
builders:
|
|
- shell: |
|
|
#!/bin/sh
|
|
[ -f /etc/nodepool/uuid ] && echo "Node UUID: $(cat /etc/nodepool/uuid)"
|
|
|
|
- builder:
|
|
name: bundle-install
|
|
builders:
|
|
- shell: |
|
|
mkdir .bundled_gems
|
|
export GEM_HOME=`pwd`/.bundled_gems
|
|
bundle install
|
|
|
|
- builder:
|
|
name: exec-rake
|
|
builders:
|
|
- shell: |
|
|
mkdir -p .bundled_gems
|
|
export GEM_HOME=`pwd`/.bundled_gems
|
|
bundle exec rake
|
|
|
|
|
|
# This builder runs tools/test-setup.sh if its exists. This allows
|
|
# projects to setup unit tests in a specific way.
|
|
- builder:
|
|
name: extra-test-setup
|
|
builders:
|
|
- shell: |
|
|
if [ -x tools/test-setup.sh ] ; then
|
|
tools/test-setup.sh
|
|
fi
|
|
|
|
- builder:
|
|
name: allow-local-ssh-root
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash
|
|
echo "" | sudo tee -a /etc/ssh/sshd_config
|
|
echo "Match address 127.0.0.1" | sudo tee -a /etc/ssh/sshd_config
|
|
echo " PermitRootLogin without-password" | sudo tee -a /etc/ssh/sshd_config
|
|
echo "" | sudo tee -a /etc/ssh/sshd_config
|
|
echo "Match address ::1" | sudo tee -a /etc/ssh/sshd_config
|
|
echo " PermitRootLogin without-password" | sudo tee -a /etc/ssh/sshd_config
|
|
mkdir -p .ssh
|
|
ssh-keygen -f ~/.ssh/id_rsa -b 2048 -P ""
|
|
sudo mkdir -p /root/.ssh
|
|
cat ~/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
|
|
if [ -f /usr/bin/yum ]; then
|
|
sudo systemctl restart sshd
|
|
elif [ -f /usr/bin/apt-get ]; then
|
|
sudo service ssh restart
|
|
fi
|
|
|
|
- builder:
|
|
name: mount-xfs-tmp-space
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
# create a large-ish file that we'll mount as a loopback
|
|
truncate -s 1GB {xfs_file}
|
|
# format the new file as xfs
|
|
mkfs.xfs {xfs_file}
|
|
# loopback mount the file
|
|
mkdir -p {xfs_mount_point}
|
|
sudo mount -o loop,noatime,nodiratime {xfs_file} {xfs_mount_point}
|
|
sudo chmod 777 {xfs_mount_point}
|
|
|
|
# ======================================================================
|
|
|
|
- wrapper:
|
|
name: build-timeout
|
|
wrappers:
|
|
- timeout:
|
|
timeout: '{timeout}'
|
|
timeout-var: 'BUILD_TIMEOUT'
|
|
fail: true
|
|
|
|
# ======================================================================
|
|
|
|
- publisher:
|
|
name: tarball
|
|
publishers:
|
|
- scp:
|
|
site: tarballs.openstack.org
|
|
files:
|
|
- target: 'tarballs/{project}/'
|
|
source: 'dist/*.tar.gz'
|
|
|
|
- publisher:
|
|
name: deb-pkgs
|
|
publishers:
|
|
- scp:
|
|
site: 'tarballs.openstack.org'
|
|
files:
|
|
- target: 'tarballs/packaging-deb/{project}/'
|
|
source: 'uploads/**'
|
|
keep-hierarchy: true
|
|
|
|
- publisher:
|
|
name: wheel
|
|
publishers:
|
|
- scp:
|
|
site: tarballs.openstack.org
|
|
files:
|
|
- target: 'tarballs/{project}/'
|
|
source: 'dist/*.whl'
|
|
|
|
- publisher:
|
|
name: war
|
|
publishers:
|
|
- scp:
|
|
site: tarballs.openstack.org
|
|
files:
|
|
- target: '{target}'
|
|
source: '{warfile}'
|
|
|
|
- publisher:
|
|
name: console-log
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
copy-console: true
|
|
copy-after-failure: true
|
|
|
|
|
|
- publisher:
|
|
name: devstack-logs
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
source: 'logs/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
|
|
- publisher:
|
|
name: coverage-log
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
source: 'cover/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: coverage-log-ruby
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
source: 'coverage/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: test-results
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '**/*nose_results.html'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '**/*testr_results.html.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '.testrepository/tmp*'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '**/*testrepository.subunit.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/$LOG_PATH/tox'
|
|
source: '.tox/*/log/*'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-sphinx-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH'
|
|
source: 'doc/build/html/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-api-guide-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH'
|
|
source: 'api-guide/build/html/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-api-ref-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH'
|
|
source: 'api-ref/build/html/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-docs-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH/'
|
|
source: 'publish-docs/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-swagger-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH'
|
|
source: 'swagger/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-releasenotes-draft
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'docs-draft/$LOG_PATH'
|
|
source: 'releasenotes/build/html/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: upload-to-docs-site
|
|
publishers:
|
|
- ftp:
|
|
site: docs.openstack.org
|
|
source: 'publish-docs/**'
|
|
target: '/'
|
|
remove-prefix: 'publish-docs/'
|
|
- afs:
|
|
site: afs-docs
|
|
source: 'publish-docs/**'
|
|
target: '/'
|
|
remove-prefix: 'publish-docs/'
|
|
|
|
- publisher:
|
|
name: upload-doc-build-results
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/$LOG_PATH'
|
|
source: 'build-*.log.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: zuul-swift-upload
|
|
publishers:
|
|
- postbuildscript:
|
|
builders:
|
|
- zuul-swift-upload:
|
|
zuul_log_instruction_set: '{zuul_log_instruction_set}'
|
|
upload_source: '{upload_source}'
|
|
# These flags really mean only if on * when
|
|
# checked. When both set to false the post script
|
|
# should run on every job regardless of status.
|
|
onfailure: False
|
|
onsuccess: False
|
|
|
|
- publisher:
|
|
name: zuul-swift-upload-logs
|
|
publishers:
|
|
- postbuildscript:
|
|
builders:
|
|
- zuul-swift-upload-logs:
|
|
upload_source: '{upload_source}'
|
|
# These flags really mean only if on * when
|
|
# checked. When both set to false the post script
|
|
# should run on every job regardless of status.
|
|
onfailure: False
|
|
onsuccess: False
|
|
|
|
- publisher:
|
|
name: zuul-swift-upload-console-log
|
|
publishers:
|
|
- postbuildscript:
|
|
builders:
|
|
- zuul-swift-upload-console-log
|
|
# These flags really mean only if on * when
|
|
# checked. When both set to false the post script
|
|
# should run on every job regardless of status.
|
|
onfailure: False
|
|
onsuccess: False
|
|
|
|
- publisher:
|
|
name: zuul-swift-upload-logs-with-console
|
|
publishers:
|
|
- postbuildscript:
|
|
builders:
|
|
- zuul-swift-upload-logs-with-console:
|
|
upload_source: '{upload_source}'
|
|
# These flags really mean only if on * when
|
|
# checked. When both set to false the post script
|
|
# should run on every job regardless of status.
|
|
onfailure: False
|
|
onsuccess: False
|
|
|
|
- publisher:
|
|
name: zuul-swift-devstack-logs-with-console
|
|
publishers:
|
|
- postbuildscript:
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -x
|
|
cp devstack-gate/help/tempest-logs.html logs/index_footer.html
|
|
mkdir zuul_swift_devstack_logs_extra
|
|
cp devstack-gate/help/tempest-overview.html zuul_swift_devstack_logs_extra/index_footer.html
|
|
- zuul-swift-upload-logs-with-console:
|
|
upload_source: 'logs zuul_swift_devstack_logs_extra/index_footer.html'
|
|
|
|
- publisher:
|
|
name: zuul-swift-test-results-with-console
|
|
publishers:
|
|
- zuul-swift-upload-logs-with-console:
|
|
upload_source: '"**/*nose_results.html" "**/*testr_results.html.gz" ".testrepository/tmp*" "**/*testrepository.subunit.gz" ".tox/*/log/*"'
|