diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml index 4fc458a63e..2e8f469587 100644 --- a/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml +++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml @@ -19,3 +19,32 @@ publishers: - console-log + + +- job: + name: ci-puppet-compare-xml + project-type: freestyle + concurrent: true + node: precise + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + logrotate: + daysToKeep: 1 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit-git-prep + - shell: "./tools/run-compare-xml.sh" + + publishers: + - console-log diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml index 2df6d99c35..154a742308 100644 --- a/modules/openstack_project/files/zuul/layout.yaml +++ b/modules/openstack_project/files/zuul/layout.yaml @@ -63,6 +63,10 @@ jobs: voting: false failure-message: XML output has changed. success-message: XML output is unchanged. + - name: ci-puppet-compare-xml + voting: false + failure-message: Jenkins XML output has changed. + success-message: Jenkins XML output is unchanged. projects: @@ -165,6 +169,7 @@ projects: check: - gate-ci-puppet-merge: - gate-ci-puppet-syntax + - ci-puppet-compare-xml gate: - gate-ci-puppet-merge: - gate-ci-puppet-syntax diff --git a/tools/run-compare-xml.sh b/tools/run-compare-xml.sh new file mode 100755 index 0000000000..06fa59ab7a --- /dev/null +++ b/tools/run-compare-xml.sh @@ -0,0 +1,68 @@ +#!/bin/bash -e + +# Copyright (c) 2012, AT&T Labs, Yun Mao +# All Rights Reserved. +# Copyright 2012 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +rm -fr .test +mkdir .test +cd .test +git clone https://review.openstack.org/p/openstack-ci/jenkins-job-builder --depth 1 +cd jenkins-job-builder +# These are $WORKSPACE/.test/jenkins-job-builder/.test/... +mkdir -p .test/old/config +mkdir -p .test/old/out +mkdir -p .test/new/config +mkdir -p .test/new/out +cd ../.. + +GITHEAD=`git rev-parse HEAD` + +# First generate output from HEAD~1 +git checkout HEAD~1 +cp modules/openstack_project/files/jenkins_job_builder/config/* .test/jenkins-job-builder/.test/old/config + +# Then use that as a reference to compare against HEAD +git checkout $GITHEAD +cp modules/openstack_project/files/jenkins_job_builder/config/* .test/jenkins-job-builder/.test/new/config + +cd .test/jenkins-job-builder + +tox -e compare-xml-old +tox -e compare-xml-new + +CHANGED=0 +for x in `(cd .test/old/out && find -type f)` +do + if ! diff -u .test/old/out/$x .test/new/out/$x >/dev/null 2>&1 + then + CHANGED=1 + echo "============================================================" + echo $x + echo "------------------------------------------------------------" + fi + diff -u .test/old/out/$x .test/new/out/$x || /bin/true +done +cd ../.. + +echo +echo "You are in detached HEAD mode. If you are a developer" +echo "and not very familiar with git, you might want to do" +echo "'git checkout branch-name' to go back to your branch." + +if [ "$CHANGED" -eq "1" ]; then + exit 1 +fi +exit 0