Tags:
archive_me1Add my vote for this tag create new tag
, view all tags

AutomatedBuild

here's a script i've used to perform a completely automated installation, from building the TWikiKernel from SVN, including packaging all conformant plugins, addons, and contrib modules; mirrors cpan modules used by twiki and plugins; to an actual unattended, automated installation. ( if you have your ssh keys setup properly, that is, otherwise you'll need to type the password in (twice) frown )

#!/usr/bin/perl -w
use strict;
use Data::Dumper qw( Dumper );

use Cwd qw( getcwd );
use File::Copy qw( cp );

my $platform = qw( darwin sourceforge )[0];

# BUILD OPTIONS
my $twikiplugins = '/Users/wbniv/twiki/twikiplugins';

# INSTALL OPTIONS
my $account = 'twiki';
my $host = 'localhost';
my $dir = '~/Sites';

my $twiki_config = extensions2uri({
    contrib => [ qw( DistributionContrib ) ],   # AttrsContrib DBCacheContrib DistributionContrib JSCalendarContrib TWikiShellContrib
    plugin => [ qw( PerlDocPlugin 
          FindElsewherePlugin InterwikiPlugin SpreadSheetPlugin TablePlugin TocPlugin 
          SpacedWikiWordPlugin ChartPlugin SvgPlugin
          TWikiReleaseTrackerPlugin
          ) ],
    # ActionTrackerPlugin BeautifierPlugin CalendarPlugin CommentPlugin FindElsewherePlugin InterwikiPlugin 
    # SpacedWikiWordPlugin SpreadSheetPlugin TWikiReleaseTrackerPlugin TablePlugin TocPlugin
    addon => [ qw( GetAWebAddOn ) ],      # GetAWebAddOn PluginBenchmarkAddOn
});

################################################################################
# BUILD

my $dirInstaller = "${twikiplugins}/lib/TWiki/Contrib/TWikiInstallerContrib";

chomp( my $newDistro = (`perl ./build-twiki-kernel.pl`)[-1] );
die "no TWikiKernel built?: [$newDistro]" unless $newDistro =~ /TWikiKernel-[^-]+-\d{8}.\d{6}.tar.gz/;
cp( $newDistro, "${dirInstaller}/downloads/releases/" ) or die $!;

chdir "${dirInstaller}" or die $!;
unlink "twiki-${platform}.tar.bz2";
#system qq{make platform=\U$platform\E distro};
system qq{make platform=\U$platform\E twiki-${platform}.tar.bz2};

################################################################################
# (PUSH) INSTALL (TO REMOTE SITE)

system qq{scp twiki-${platform}.tar.bz2 ${account}\@${host}:${dir}};
system qq{ssh ${account}\@${host} "cd ${dir}; tar xjf twiki-${platform}.tar.bz2; time ./pre-twiki.sh; time curl 'http://${host}/~${account}/cgi-bin/install_twiki.cgi?${twiki_config};twiki=${newDistro};install=install' -o 'TWikiInstallationReport.html'; ./post-twiki.pl"};

################################################################################
################################################################################

sub extensions2uri
{
    my $config = shift or die;

    my @config;
    foreach my $ext ( keys %$config )
    {
   push @config, join( ';', map { "${ext}=$_" } @{$config->{$ext}} );
    }
    return join( ';', @config );
}

this is obviously too hardcoded for my setup, but i wanted to give a heads up on how this is proceeding.

-- WillNorris - 12 Nov 2004

this is actually half an AutomatedBuild and half an AutomatedInstall? ; i'll update the docs tomorrow when i'm less sleepy wink

-- WillNorris - 12 Nov 2004

 
Topic revision: r5 - 14 Nov 2004 - 16:37:30 - WillNorris
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback