
Ant's SCP job uses DirSet which only allows for paths relative to the directory from which Ant is working. It also does not search for anything outside the current directory. After Iee055beb853cbb76a073c8060d6920d317f5bd64 os-ansible-deployment will simply be able to use the devstack-logs publisher. This change needs to go in first so the os-ansible-deployment gate will unblock. Change-Id: If94e6b97c159000c83fadc6e4dd72d56ee90d3b9
690 lines
18 KiB
YAML
690 lines
18 KiB
YAML
- builder:
|
|
name: gerrit-git-prep
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org git://git.openstack.org"
|
|
|
|
- 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: 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"
|
|
|
|
- builder:
|
|
name: docs
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh"
|
|
|
|
- builder:
|
|
name: maven-test
|
|
builders:
|
|
- shell: "mvn test -B"
|
|
|
|
- builder:
|
|
name: maven-package
|
|
builders:
|
|
- shell: "mvn package -B"
|
|
|
|
- builder:
|
|
name: gerrit-package
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/package-gerrit.sh"
|
|
|
|
- builder:
|
|
name: gerrit-preclean
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
rm -fr ~/.m2
|
|
rm -fr ~/.java
|
|
./tools/version.sh --release
|
|
|
|
- builder:
|
|
name: gerrit-postrun
|
|
builders:
|
|
- shell: "./tools/version.sh --reset"
|
|
|
|
- builder:
|
|
name: bashate
|
|
builders:
|
|
- tox:
|
|
envlist: bashate
|
|
|
|
- builder:
|
|
name: pep8
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pep8.sh"
|
|
|
|
- builder:
|
|
name: pylint
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pylint.sh"
|
|
|
|
- builder:
|
|
name: npm-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y nodejs nodejs-legacy npm
|
|
|
|
- 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
|
|
|
|
- builder:
|
|
name: chrome-install
|
|
builders:
|
|
- shell: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y chromium-browser
|
|
|
|
- builder:
|
|
name: uninstall-puppet
|
|
builders:
|
|
- shell: "sudo apt-get remove -y --purge facter puppet puppet-common"
|
|
|
|
- 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
|
|
if [ -f Gemfile ]; then
|
|
mkdir .bundled_gems
|
|
export GEM_HOME=`pwd`/.bundled_gems
|
|
bundle install
|
|
bundle exec rake lint 2>&1
|
|
else
|
|
rake lint 2>&1
|
|
fi
|
|
|
|
- builder:
|
|
name: puppet-syntax
|
|
builders:
|
|
- shell: |
|
|
find . -iname *.pp | xargs puppet parser validate --modulepath=`pwd`/modules
|
|
for f in `find . -iname *.erb` ; do
|
|
erb -x -T '-' $f | ruby -c
|
|
done
|
|
|
|
# note that this job uses an in-repo script for execution
|
|
# in order to cater for differing requirements per branch
|
|
- builder:
|
|
name: ansible-check-lint
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
sudo scripts/gate-check-lint.sh
|
|
|
|
# note that this job uses an in-repo script for execution
|
|
# in order to cater for differing requirements per branch
|
|
- builder:
|
|
name: ansible-check-commit
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
sudo scripts/gate-check-commit.sh
|
|
|
|
- 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: 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-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: python26
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py26"
|
|
|
|
- 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: pypy
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh pypy"
|
|
|
|
- builder:
|
|
name: tox
|
|
builders:
|
|
- shell: "/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
|
|
/usr/local/jenkins/slave_scripts/run-wheel.sh
|
|
|
|
- builder:
|
|
name: devstack-checkout
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
if [[ ! -e devstack-gate ]]; then
|
|
git clone git://git.openstack.org/openstack-infra/devstack-gate
|
|
else
|
|
cd devstack-gate
|
|
git remote set-url origin git://git.openstack.org/openstack-infra/devstack-gate
|
|
git remote update
|
|
git reset --hard
|
|
if ! git clean -x -f ; then
|
|
sleep 1
|
|
git clean -x -f
|
|
fi
|
|
git checkout master
|
|
git reset --hard remotes/origin/master
|
|
if ! git clean -x -f ; then
|
|
sleep 1
|
|
git clean -x -f
|
|
fi
|
|
cd ..
|
|
fi
|
|
|
|
- builder:
|
|
name: experimental-devstack-checkout
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
if [[ ! -e devstack-gate ]]; then
|
|
git clone git://git.openstack.org/openstack-infra/devstack-gate
|
|
fi
|
|
cd devstack-gate
|
|
/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org git://git.openstack.org
|
|
cd ..
|
|
|
|
- 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
|
|
echo "Network interface addresses..."
|
|
ip address show
|
|
echo "Network routing tables..."
|
|
ip route show
|
|
ip -6 route show
|
|
echo "Network neighbors..."
|
|
ip neighbor show
|
|
|
|
- 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'
|
|
|
|
|
|
# ======================================================================
|
|
|
|
- wrapper:
|
|
name: build-timeout
|
|
wrappers:
|
|
- timeout:
|
|
timeout: '{timeout}'
|
|
timeout-var: 'BUILD_TIMEOUT'
|
|
fail: true
|
|
|
|
# ======================================================================
|
|
|
|
- publisher:
|
|
name: tarball
|
|
publishers:
|
|
- archive:
|
|
artifacts: 'dist/*.tar.gz'
|
|
- scp:
|
|
site: '{site}'
|
|
files:
|
|
- target: 'tarballs/{project}/'
|
|
source: 'dist/*.tar.gz'
|
|
|
|
- publisher:
|
|
name: wheel
|
|
publishers:
|
|
- archive:
|
|
artifacts: 'dist/*.whl'
|
|
- scp:
|
|
site: '{site}'
|
|
files:
|
|
- target: 'tarballs/{project}/'
|
|
source: 'dist/*.whl'
|
|
|
|
- publisher:
|
|
name: war
|
|
publishers:
|
|
- archive:
|
|
artifacts: '{warfile}'
|
|
- scp:
|
|
site: '{site}'
|
|
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: '**/*subunit_log.txt.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-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-to-docs-site
|
|
publishers:
|
|
- ftp:
|
|
site: docs.openstack.org
|
|
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
|
|
publishers:
|
|
- zuul-swift-upload-logs:
|
|
upload_source: 'logs'
|