
puppet-lint expands symbolic links and use the realpath when checking for the location of manifests. This means the autoloader_layout check still fail although we tried to force the correct folder name by using a symbolic link named after the puppet module. This change brings two changes. It now copies all files to a new folder named after the puppet module. Rsync is used for the copy process. The destination folder is excluded and so are hidden folders such as .git. It also uses an alternative method to determine the module name by reading the 'name' field from the Modulefile. This allows a puppet module repository or project to be renamed without breaking puppet-lint. An example of such use case would be a rename of puppet-quantum to puppet-neutron. If the Modulefile is not found or the name cannot be determined, the puppet-lint builder falls back to its default behavior which consists of running puppet-lint in the root of the workspace. Change-Id: I6158ab3b32499820b7d09db7b31d4226650af8ae
356 lines
9.9 KiB
YAML
356 lines
9.9 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: |
|
|
if [ -f Modulefile ]; then
|
|
MODULE=$(awk '/^name/ {print $NF}' Modulefile |tr -d \"\')
|
|
if [ -z "$MODULE" ]; then
|
|
echo "Module name not defined in Modulefile"
|
|
else
|
|
mkdir -p "$MODULE"
|
|
rsync -a --exclude="$MODULE" --exclude ".*" . "$MODULE"
|
|
cd "$MODULE"
|
|
fi
|
|
fi
|
|
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
|