Mathieu Gagné 5c1dacbd81 Fix puppet-lint for bare puppet modules
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
2013-08-05 19:05:31 -04:00

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