I just put up a subversion pupppet module for automated deployment from
release tags:

http://github.com/reyjrar/svnutils

I wrote a wrapper script for deploying the /etc/puppet stuff:

#!/bin/bash

BINDIR="/opt/local/sbin"
SVNURL="svn+ssh://svn/path/to/puppet"
TARGET="/etc/puppet"
BACKUP="/etc/puppet.old"

$BINDIR/svncheckrel $SVNURL $TARGET
rc=$?;

if [ "$rc" -eq "0" ]; then
if [ -d $BACKUP ]; then
 rm -rf $BACKUP;
fi;
mv $TARGET $BACKUP;
 $BINDIR/svnexportrel $SVNURL $TARGET
fi;

That's in /etc/cron.d for every 10 minutes.  I have a post-commit hook
looking at the "tags/release-" commits and it builds a Changelog from the
last "tags/release-" and emails it to specified users.

I'll add that to my github repo today.

On Fri, Apr 30, 2010 at 3:37 AM, Maxim Ianoglo <dot...@gmail.com> wrote:

> Hello,
>
> Here it is:
> #!/bin/sh
>
> REPOS="$1"
> TXN="$2"
>
> # synthax check of commited sources
> PATH='/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/bin:/sbin:/
> usr/bin:/usr/sbin:'
> tmpfile=`mktemp`
> export HOME=/
> SVNLOOK=/usr/bin/svnlook
> $SVNLOOK changed -t "$TXN" "$REPOS" | awk '{print $2}' | grep '\.pp$'
> | while read line
> do
>    $SVNLOOK cat -t "$TXN" "$REPOS" "$line" > $tmpfile
>    if [ $? -ne 0 ]
>    then
>        echo "Warning: Failed to checkout $line" >&2
>    fi
>     /usr/bin/puppet --color=false --confdir=/tmp --vardir=/tmp --
> parseonly --ignoreimport $tmpfile >&2
>    if [ $? -ne 0 ]
>    then
>        echo "Puppet syntax error in $line." >&2
>        exit 2
>    fi
> done
> res=$?
> rm -f $tmpfile
> if [ $res -ne 0 ]
> then
>    exit $res
> fi
>
>
> Thank you.
> --
> Maxim Ianoglo
>
> On Apr 29, 10:26 pm, Joe McDonagh <joseph.e.mcdon...@gmail.com> wrote:
> > Maxim Ianoglo wrote:
> > > Hello,
> >
> > > I tried to add a pre-commit hook using this tutorial:
> > > projects.puppetlabs.com/projects/puppet/wiki/Puppet_Version_Control
> >
> > > But I get this error.
> > >
> ===========================================================================
> ==
> > > [im(1000)@tech04:~/puppet2/trunk/clients/puppet/modules/main/inetd/
> > > manifests] > svn commit
> > > Sending        manifests/init.pp
> > > Transmitting file data .svn: Commit failed (details follow):
> > > svn: 'pre-commit' hook failed with error output:
> > > /usr/lib/ruby/site_ruby/1.8/facter/util/loader.rb:73: command not
> > > found: hostname
> > > /usr/lib/ruby/site_ruby/1.8/facter/util/loader.rb:73: command not
> > > found: hostname
> > > /usr/lib/ruby/site_ruby/1.8/facter/util/loader.rb:73: command not
> > > found: dnsdomainname
> > > /usr/lib/ruby/site_ruby/1.8/facter/util/loader.rb:73: command not
> > > found: domainname
> > > /usr/lib/ruby/site_ruby/1.8/puppet/defaults.rb:216: undefined method
> > > `downcase' for nil:NilClass (NoMethodError)
> > >    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> > > `gem_original_require'
> > >    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> > > `require'
> > >    from /usr/lib/ruby/site_ruby/1.8/puppet.rb:110
> > >    from /usr/lib/ruby/site_ruby/1.8/puppet/application/puppet.rb:1:in
> > > `require'
> > >    from /usr/lib/ruby/site_ruby/1.8/puppet/application/puppet.rb:1
> > >    from /usr/bin/puppet:70:in `require'
> > >    from /usr/bin/puppet:70
> > > Puppet syntax error in trunk/clients/puppet/modules/main/inetd/
> > > manifests/init.pp.
> >
> > > svn: Your commit message was left in a temporary file:
> > > svn:    '/home/im/puppet2/trunk/clients/puppet/modules/main/inetd/svn-
> > > commit.2.tmp'
> > >
> ===========================================================================
> ==
> >
> > > If I run this from console - everything is ok.
> >
> > > I tried to add PATH variable, but no luck.
> >
> > > Did anyone faced this issue before ?
> >
> > > Puppet Version: puppet-0.25.4-1
> > > OS Version: CentOS release 5.4 (Final)
> > > Ruby Version: 1.8.6
> >
> > > Thakn you.
> > > --
> > > Maxim Ianoglo
> >
> > Please paste the code from the pre-commit.
> >
> > --
> > Joe McDonagh
> > AIM: YoosingYoonickz
> > IRC: joe-mac on freenode
> > "When the going gets weird, the weird turn pro."
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> > To post to this group, send email to puppet-us...@googlegroups.com.
> > To unsubscribe from this group, send email to
> puppet-users+unsubscr...@googlegroups.com<puppet-users%2bunsubscr...@googlegroups.com>
> .
> > For more options, visit this group athttp://
> groups.google.com/group/puppet-users?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscr...@googlegroups.com<puppet-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
>
>


-- 
Brad Lhotsky

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to