0ccf564937
This calculates the full LOG_PATH in the Zuul config and pases it to Jenkins. The new path is similar to the old but with the substitution of a short ZUUL_UUID at the end instead of the Jenkins build number in order to avoid collisions from multiple Jenkins masters. Periodic jobs add a node name to their log path to avoid collisions from multiple masters. Unfortunately, that value is not accessible to the logstash worker. This can be solved by having Zuul trigger periodic jobs. Add the ZUUL_REF to logstash as "build_ref". Requires https://review.openstack.org/#/c/39130/ Change-Id: I40bad59e3ad8ed6b4706762ed8b833fd15c13b0d
350 lines
9.7 KiB
YAML
350 lines
9.7 KiB
YAML
- builder:
|
|
name: gerrit-git-prep
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh https://review.openstack.org http://zuul.openstack.org"
|
|
|
|
- builder:
|
|
name: coverage
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-cover.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: docs
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: maven-test
|
|
builders:
|
|
- shell: "mvn test"
|
|
|
|
- builder:
|
|
name: maven-package
|
|
builders:
|
|
- shell: "mvn package"
|
|
|
|
- builder:
|
|
name: markdown-docbook
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/markdown-docbook.sh {filename}"
|
|
|
|
- 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: pep8
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pep8.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: pylint
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pylint.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: pyflakes
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-pyflakes.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: puppet-lint
|
|
builders:
|
|
- shell: |
|
|
test -d modules || {{
|
|
ln -s . {project}
|
|
cd {project}
|
|
}}
|
|
rake lint
|
|
|
|
- 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
|
|
|
|
- builder:
|
|
name: chef-cookbook-prep
|
|
builders:
|
|
- shell: |
|
|
mkdir -p .cookbooks .bundle
|
|
ruby1.9.1 /usr/bin/bundle install --path=.bundle
|
|
ruby1.9.1 /usr/bin/bundle exec berks install --path=.cookbooks
|
|
COOKBOOK=$(awk '/^name/ {print $NF}' metadata.rb |tr -d \"\')
|
|
if [ -z $COOKBOOK ]; then
|
|
echo "Cookbook name not defined in metadata.rb"
|
|
exit 1
|
|
fi
|
|
|
|
- builder:
|
|
name: chef-cookbook-style
|
|
builders:
|
|
- shell: |
|
|
COOKBOOK=$(awk '/^name/ {print $NF}' metadata.rb |tr -d \"\')
|
|
ruby1.9.1 /usr/bin/bundle exec tailor
|
|
|
|
- builder:
|
|
name: chef-cookbook-lint
|
|
builders:
|
|
- shell: |
|
|
COOKBOOK=$(awk '/^name/ {print $NF}' metadata.rb |tr -d \"\')
|
|
ruby1.9.1 /usr/bin/bundle exec foodcritic -f any -t ~FC003 -t ~FC023 .cookbooks/$COOKBOOK
|
|
|
|
- builder:
|
|
name: chef-cookbook-rspec
|
|
builders:
|
|
- shell: |
|
|
COOKBOOK=$(awk '/^name/ {print $NF}' metadata.rb |tr -d \"\')
|
|
ruby1.9.1 /usr/bin/bundle exec rspec .cookbooks/$COOKBOOK
|
|
|
|
- builder:
|
|
name: run-tests
|
|
builders:
|
|
- shell: "./run-tests.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: selenium
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-selenium.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: python26
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 26 {github-org} {project}"
|
|
|
|
- builder:
|
|
name: python27
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 27 {github-org} {project}"
|
|
|
|
- builder:
|
|
name: python33
|
|
builders:
|
|
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 33 {github-org} {project}"
|
|
|
|
- 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: "/usr/local/jenkins/slave_scripts/run-tarball.sh {github-org} {project}"
|
|
|
|
- builder:
|
|
name: devstack-checkout
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
if [[ ! -e devstack-gate ]]; then
|
|
git clone https://review.openstack.org/p/openstack-infra/devstack-gate
|
|
else
|
|
cd devstack-gate
|
|
git remote set-url origin https://review.openstack.org/p/openstack-infra/devstack-gate
|
|
git remote update
|
|
git reset --hard
|
|
git clean -x -f
|
|
git checkout master
|
|
git reset --hard remotes/origin/master
|
|
git clean -x -f
|
|
cd ..
|
|
fi
|
|
|
|
- builder:
|
|
name: devstack-inprogress
|
|
builders:
|
|
- trigger-builds:
|
|
- project: devstack-update-inprogress
|
|
block: true
|
|
predefined-parameters:
|
|
DEVSTACK_NODE_NAME=${NODE_NAME}
|
|
|
|
- builder:
|
|
name: link-logs
|
|
builders:
|
|
- shell: |
|
|
#!/bin/sh
|
|
if test "$LOG_PATH" ; then
|
|
echo "Detailed logs: http://logs.openstack.org/$LOG_PATH/"
|
|
else
|
|
echo "Detailed logs: http://logs.openstack.org/periodic/$JOB_NAME/$NODE_NAME/$BUILD_NUMBER/"
|
|
fi
|
|
|
|
- builder:
|
|
name: update-pypi-mirror
|
|
builders:
|
|
- shell: |
|
|
#!/bin/bash -xe
|
|
/usr/local/bin/run-mirror -c /home/jenkins/pypimirror/etc/pypi-mirror.yaml
|
|
find /home/jenkins/pypimirror/mirror/ \( -name index.html -or -name full.html \) -delete
|
|
rsync -a --ignore-existing --itemize-changes /home/jenkins/pypimirror/mirror/ jenkins@static.openstack.org:/srv/static/pypi/
|
|
|
|
|
|
# ======================================================================
|
|
|
|
- publisher:
|
|
name: tarball
|
|
publishers:
|
|
- archive:
|
|
artifacts: 'dist/*.tar.gz'
|
|
- scp:
|
|
site: '{site}'
|
|
files:
|
|
- target: 'tarballs/{project}/'
|
|
source: 'dist/*.tar.gz'
|
|
|
|
- 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: console-log-periodic
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/periodic/$JOB_NAME/$NODE_NAME/$BUILD_NUMBER'
|
|
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
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '**/testr_results.html.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/$LOG_PATH'
|
|
source: '**/subunit_log.txt.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: devstack-logs-periodic
|
|
publishers:
|
|
- scp:
|
|
site: 'static.openstack.org'
|
|
files:
|
|
- target: 'logs/periodic/$JOB_NAME/$NODE_NAME/$BUILD_NUMBER'
|
|
source: 'logs/**'
|
|
keep-hierarchy: true
|
|
copy-after-failure: true
|
|
- target: 'logs/periodic/$JOB_NAME/$NODE_NAME/$BUILD_NUMBER'
|
|
source: '**/testr_results.html.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
- target: 'logs/periodic/$JOB_NAME/$NODE_NAME/$BUILD_NUMBER'
|
|
source: '**/subunit_log.txt.gz'
|
|
keep-hierarchy: false
|
|
copy-after-failure: true
|
|
|
|
- publisher:
|
|
name: devstack-complete
|
|
publishers:
|
|
- trigger-parameterized-builds:
|
|
- project: devstack-update-complete
|
|
when: complete
|
|
predefined-parameters: |
|
|
DEVSTACK_NODE_NAME=${NODE_NAME}
|
|
UPSTREAM_BUILD_URL=${BUILD_URL}
|
|
UPSTREAM_JOB_NAME=${JOB_NAME}
|
|
UPSTREAM_BRANCH=${ZUUL_BRANCH}
|
|
|
|
- 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: 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
|
|
|
|
- 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
|