Jeremy Stanley da67129d34 Remove pointless tarball-site parameter
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
2016-12-19 14:48:08 +00:00

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/*"'