Browse Source

Use LXC for testing Koha installation

merge-requests/5/head
Jared Camins-Esakov 8 years ago
parent
commit
68fccee9de
2 changed files with 869 additions and 136 deletions
  1. +730
    -0
      debian.koha-community.org.gpg
  2. +139
    -136
      release-tool.pl

+ 730
- 0
debian.koha-community.org.gpg View File

@@ -0,0 +1,730 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

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
Z5JCppsq8GEMAA==
=fqGQ
-----END PGP PUBLIC KEY BLOCK-----

+ 139
- 136
release-tool.pl View File

@@ -53,6 +53,7 @@ use DBI;
use MIME::Lite;
use Template;
use Config::Simple;
use Net::OpenSSH;

$SIG{INT} = \&interrupt;

@@ -96,15 +97,14 @@ my %defaults = (
stats => '',
tag => 0,
tarball => '',
'tgz-install-dir' => '',
'use-dist-rnotes' => 0,
verbose => 0,
version => '',

# database settings
database => $ENV{KOHA_DATABASE} || 'koharel',
user => $ENV{KOHA_USER} || 'koharel',
password => $ENV{KOHA_PASS} || 'koharel',
database => $ENV{KOHA_DATABASE} || 'koha',
user => $ENV{KOHA_USER} || 'kohaadmin',
password => $ENV{KOHA_PASS} || 'katikoan',

# announcement settings
'email-template' => 'announcement.eml.tt',
@@ -126,12 +126,12 @@ my $built_tarball = 'no';
my $built_packages = 'no';
my $version_mismatch;
my $output;
my $drh;
my @tested_tarball_installs;
my @tested_package_installs;
my %cmdline;
my $config = new Config::Simple( syntax => 'http' );
my $log = '';
my $lxc_host = '';

=head2 General options

@@ -489,8 +489,6 @@ set_default( 'since', $lasttag );

set_default( 'errorlog', build_result('errors.log') );

set_default( 'tgz-install-dir', build_result('fresh') );

unlink $config->param('tarball');
unlink $config->param('rnotes') unless $config->param('use-dist-rnotes');
unlink $config->param('errorlog');
@@ -533,7 +531,7 @@ unless ( $config->param('skip-tests') ) {
unless ( $config->param('skip-deb') ) {
unless ( $config->param('skip-pbuilder') ) {
print_log("Updating pbuilder...");
run_cmd("sudo pbuilder update 2>&1");
run_cmd("sudo pbuilder update --keyring '$reltools/debian.koha-community.org.gpg' 2>&1");
warn colored( "Error updating pbuilder. Continuing anyway.",
'bold red' )
if ($?);
@@ -633,36 +631,25 @@ unless ( $config->param('skip-stats') ) {
}

unless ( $config->param('skip-deb') || $config->param('skip-install') ) {
shell_task( "Installing package...",
"sudo dpkg -i " . $config->param('package') . " 2>&1" );
run_cmd('sudo koha-remove pkgrel 2>&1');

open( my $koha_sites, '>', '/tmp/koha-sites.conf' );
print $koha_sites <<EOF;
OPACPORT=9003
INTRAPORT=9004
EOF
close $koha_sites;
run_cmd('sudo mv /tmp/koha-sites.conf /etc/koha/koha-sites.conf');

for my $flavour (@marcflavours) {
my $lflavour = lc $flavour;
print_log("Installing from package for $flavour...");

shell_task( "Running koha-create for $flavour",
"sudo koha-create --marcflavor=$lflavour --create-db pkgrel 2>&1",
print_log("Installing from package for $flavour...");
my ($lxc_ip, $ssh) = create_lxc();
ssh_task( $ssh, "Downloading package...", "wget -nv http://10.0.3.1" . $config->param('package') . ' 2>&1', '', 1 );
ssh_task( $ssh, "Installing package...", "sudo dpkg --no-debsig -i " . basename($config->param('package')) . ' 2>&1; sudo apt-get -y -f install 2>&1', '', 1 );
ssh_task( $ssh, "Running koha-create for $flavour",
"sudo koha-create --marcflavor=$lflavour --create-db pkgrel 2>&1", '',
1 );

unless ( $config->param('skip-webinstall') ) {
my $pkg_user =
`sudo xmlstarlet sel -t -v 'yazgfs/config/user' '/etc/koha/sites/pkgrel/koha-conf.xml'`;
my $pkg_pass =
`sudo xmlstarlet sel -t -v 'yazgfs/config/pass' '/etc/koha/sites/pkgrel/koha-conf.xml'`;
my $pkg_user = $ssh->capture("sudo xmlstarlet sel -t -v 'yazgfs/config/user' '/etc/koha/sites/pkgrel/koha-conf.xml'");
my $pkg_pass = $ssh->capture("sudo xmlstarlet sel -t -v 'yazgfs/config/pass' '/etc/koha/sites/pkgrel/koha-conf.xml'");
chomp $pkg_user;
chomp $pkg_pass;
my $harness_args = {
test_args => [
"http://localhost:9004", "http://localhost:9003",
"http://$lxc_ip:8080", "http://$lxc_ip",
"$flavour", "$pkg_user",
"$pkg_pass"
]
@@ -671,9 +658,9 @@ EOF
1, $harness_args, "$reltools/install-fresh.pl" );

push @tested_package_installs, $flavour;

clean_pkg_webinstall();
}
clean_lxc();
$lxc_host = '';
}
}

@@ -691,96 +678,44 @@ if ( $config->param('deploy') && !$config->param('skip-deb') ) {
}

unless ( $config->param('skip-tgz') || $config->param('skip-install') ) {
$drh = DBI->install_driver("mysql");
for my $flavour (@marcflavours) {
my $lflavour = lc $flavour;
print_log("Installing from tarball for $flavour...");
$ENV{INSTALL_BASE} = build_result('fresh/koha');
$ENV{DESTDIR} = build_result('fresh');
$ENV{KOHA_CONF_DIR} = build_result('fresh/etc');
$ENV{ZEBRA_CONF_DIR} = build_result('fresh/etc/zebradb');
$ENV{PAZPAR2_CONF_DIR} = build_result('fresh/etc/pazpar2');
$ENV{ZEBRA_LOCK_DIR} = build_result('fresh/var/lock/zebradb');
$ENV{ZEBRA_DATA_DIR} = build_result('fresh/var/lib/zebradb');
$ENV{ZEBRA_RUN_DIR} = build_result('fresh/var/run/zebradb');
$ENV{LOG_DIR} = build_result('fresh/var/log');
$ENV{INSTALL_MODE} = "standard";
$ENV{DB_TYPE} = "mysql";
$ENV{DB_HOST} = "localhost";
$ENV{DB_NAME} = $config->param('database');
$ENV{DB_USER} = $config->param('user');
$ENV{DB_PASS} = $config->param('password');
$ENV{INSTALL_ZEBRA} = "yes";
$ENV{INSTALL_SRU} = "no";
$ENV{INSTALL_PAZPAR2} = "no";
$ENV{ZEBRA_MARC_FORMAT} = "$lflavour";
$ENV{ZEBRA_LANGUAGE} = "en";
$ENV{ZEBRA_USER} = "kohauser";
$ENV{ZEBRA_PASS} = "zebrastripes";
$ENV{KOHA_USER} = "`id -u -n`";
$ENV{KOHA_GROUP} = "`id -g -n`";
$ENV{PERL_MM_USE_DEFAULT} = "1";
mkdir $config->param('tgz-install-dir');
shell_task( "Untarring tarball for $flavour",
"tar zxvf " . $config->param('tarball') . " -C /tmp 2>&1", 1 );
chdir '/tmp/koha-' . $config->param('version');

shell_task( "Running perl Makefile.PL for $flavour",
"perl Makefile.PL 2>&1", 1 );

shell_task( "Running make for $flavour...", "make 2>&1", 1 );

shell_task( "Running make test for $flavour...", "make test 2>&1", 1 );

shell_task( "Running make install for $flavour...",
"make install 2>&1", 1 );

run_cmd(
"sed -i -e 's/<VirtualHost 127.0.1.1:80>/<VirtualHost *:9001>/' -e 's/<VirtualHost 127.0.1.1:8080>/<VirtualHost *:9002>/' "
. build_result('fresh/etc/koha-httpd.conf') );

unless ( $config->param('skip-webinstall') ) {
clean_tgz_webinstall();
print_log(" Creating database for $flavour...");
$drh->func(
'createdb', $config->param('database'),
'localhost',
$config->param('user'),
$config->param('password'), 'admin'
) or fail("Creating database for $flavour");

shell_task(
"Adding to sites-available for $flavour",
"sudo ln -s "
. build_result('/fresh/etc/koha-httpd.conf')
. " /etc/apache2/sites-available/release-fresh 2>&1",
1
);

shell_task( "Enabling site for $flavour",
"sudo a2ensite release-fresh 2>&1", 1 );

shell_task( "Restarting Apache for $flavour",
"sudo apache2ctl restart 2>&1", 1 );
my ($lxc_ip, $ssh) = create_lxc();
my $subdir = 'koha-' . $config->param('version');
ssh_task( $ssh, "Downloading tarball...", "wget -nv http://10.0.3.1" . $config->param('tarball') . ' 2>&1', '', 1 );
ssh_task( $ssh, "Untarring tarball...", "tar zxvf " . basename($config->param('tarball')) . ' 2>&1', '', 1 );
ssh_task( $ssh, "Installing dependencies...", "sudo apt-get -y install `cat install_misc/ubuntu.12.04.packages | grep install | sed -e 's/install\$//' | tr -d ' \\t' | tr '\\n' ' '` 2>&1", $subdir, 1 );
my $env_vars = "DB_HOST=localhost DB_NAME=" . $config->param('database') . " DB_USER=" . $config->param('user') . " DB_PASS=" . $config->param('password') . " ZEBRA_MARC_FORMAT=$lflavour PERL_MM_USE_DEFAULT=1";
ssh_task( $ssh, "Running perl Makefile.PL for $flavour",
"$env_vars perl Makefile.PL 2>&1", $subdir, 1 );
ssh_task( $ssh, "Running make for $flavour...", "make 2>&1", $subdir, 1 );

ssh_task( $ssh, "Rewriting Apache config for $flavour",
"sed -i -e 's/<VirtualHost 127.0.1.1:80>/<VirtualHost *:80>/' -e 's/<VirtualHost 127.0.1.1:8080>/<VirtualHost *:8080>/' blib/KOHA_CONF_DIR/koha-httpd.conf",
$subdir, 1 );

ssh_task( $ssh, "Running make test for $flavour...", "make test 2>&1", $subdir, 1 );
ssh_task( $ssh, "Running make install for $flavour...",
"sudo make install 2>&1", $subdir, 1 );
ssh_task( $ssh, "Linking and loading Apache site for $flavour...", "sudo ln -s /etc/koha/koha-httpd.conf /etc/apache2/sites-available/koha && sudo a2ensite koha && sudo apache2ctl restart", '', 1 );

unless ( $config->param('skip-webinstall') ) {
my $harness_args = {
test_args => [
"http://localhost:9002", "http://localhost:9001",
"$flavour", $config->param('user'),
"http://$lxc_ip:8080", "http://$lxc_ip",
"$flavour", $config->param('user'),
$config->param('password')
]
};
tap_task( "Running webinstaller for $flavour",
1, $harness_args, "$reltools/install-fresh.pl" );

clean_tgz_webinstall();
clean_tgz();
push @tested_tarball_installs, $flavour;
}
else {
clean_tgz();
}

clean_lxc();
$lxc_host = '';
}
}

@@ -829,8 +764,7 @@ if ( $config->param('deploy') && $config->param('post-deploy-script') ) {
}

if ( $config->param('clean') ) {
clean_tgz_webinstall();
clean_tgz();
clean_lxc();
remove_tree( $config->param('build-result') );
$cleaned = 'yes';
}
@@ -855,33 +789,8 @@ sub set_default {
$config->param( $key, $value ) unless $config->param($key);
}

sub clean_tgz_webinstall {
print_log(" Cleaning up tarball install...");
$drh->func(
'dropdb', $config->param('database'),
'localhost',
$config->param('user'),
$config->param('password'), 'admin'
);
run_cmd("sudo a2dissite release-fresh 2>&1");
run_cmd("sudo apache2ctl restart 2>&1");
run_cmd("sudo rm /etc/apache2/sites-available/release-fresh 2>&1");
}

sub clean_tgz {
chdir( $config->param('kohaclone') );
remove_tree(
'/tmp/koha-' . $config->param('version'),
$config->param('tgz-install-dir')
);
}

sub clean_pkg_webinstall {
shell_task( "Stopping package Zebra daemon",
"sudo koha-stop-zebra pkgrel", 1 );
run_cmd( "ps ax | grep pkgrel | sed -e 's/ .*\$//' | grep -v grep | sudo xargs kill -9 2>&1 > /dev/null" );
shell_task( "Cleaning up package install",
"sudo koha-remove pkgrel 2>&1", 1 );
sub clean_lxc {
shell_task( "Shutting down lxc container...", "sudo lxc-stop -n $lxc_host", 1 ) if $lxc_host;
}

sub summary {
@@ -1038,6 +947,33 @@ sub tap_dir {
return sort @tests;
}

sub create_lxc {
# Sorry, creating the lxc container sucks. Deal with it.
print_log(" Creating lxc container...");
my $command = "sudo lxc-start-ephemeral -d -o ubuntu";
$log .= "> $command\n";
print colored( "> $command\n", 'cyan' )
if ( $config->param('verbose') >= 1 );
my $pid = open( my $outputfh, "-|", "$command" )
or die "Unable to run $command\n";
while (<$outputfh>) {
print $_ if ( $config->param('verbose') >= 2 );
$output .= $_;
if ($_ =~ /^([^ ]*) is running/) {
$lxc_host = $1;
last;
}
}
close($outputfh);

my $lxc_ip = `host -s $lxc_host 10.0.3.1 | grep 'has address' | sed -e 's/^.*has address //'`;
chomp($lxc_ip);
print_log(" Connecting to lxc container...");
my $ssh = Net::OpenSSH->new("ubuntu\@$lxc_ip", master_opts => [-o => "StrictHostKeyChecking=no"]);

return ($lxc_ip, $ssh);
}

sub run_cmd {
my $command = shift;
$log .= "> $command\n";
@@ -1066,6 +1002,32 @@ sub shell_task {
fail( $message, $callback ) if ($?);
}

sub ssh_task {
my $ssh = shift;
my $message = shift;
my $command = shift;
my $dir = shift;
my $callback;
$callback = pop @_ if ( $#_ && ref $_[$#_] eq 'CODE' );
my $subtask = shift || 0;
my $logmsg = ( ' ' x $subtask ) . $message;
print_log("$logmsg...");
$command = "cd $dir && $command" if $dir;
$log .= "> $command\n";
print colored( "> $command\n", 'cyan' )
if ( $config->param('verbose') >= 1 );
$output = '';
my ($outputfh, $pid) = $ssh->pipe_out($command);
die "Unable to run $command\n" unless $pid;
while (<$outputfh>) {
print $_ if ( $config->param('verbose') >= 2 );
$output .= $_;
}
close($outputfh);
$log .= $output . "\n";
fail( $message, $callback ) if ($ssh->error);
}

sub tap_task {
my $message = shift;
my $subtask = shift;
@@ -1182,11 +1144,52 @@ one, you can use the following command:

sudo pbuilder create \
--othermirror 'deb http://debian.koha-community.org/koha squeeze main' \
--mirror http://ftp.debian.org/debian
--mirror http://ftp.debian.org/debian \
--keyring '${release-tools-repo}/debian.koha-community.org.gpg'

=head1 LXC CONFIGURATION

Testing the Koha installation process requires an LXC container called "ubuntu"
configured with the following features:

=over 8

=item Ubuntu Precise chosen as the distro

=item The following line in the sudoers file:

ubuntu ALL=NOPASSWD: /usr/bin/make, /usr/bin/apt-get, /sbin/poweroff, \
/bin/ln, /usr/sbin/apache2ctl, /usr/sbin/a2ensite, /usr/bin/dpkg, \
/usr/sbin/koha-create, /usr/bin/xmlstarlet

=item The current user's SSH key must be in /home/ubuntu/.ssh/authorized_keys2
in the container.

=item mysql-server must be installed and a database and user created for the
tarball installation.

=item You must make your build result directory available via HTTP on the
lxcbr interface. A configuration similar to the one nginx configuration below
is recommended:

server {
listen 10.0.3.1:80;
server_name 10.0.3.1;
root /var/www;

location /home/jcamins/releases {
alias /home/jcamins/releases;
}
}

=item An apt cache set up with apt-cacher-ng is recommended to speed up the
process.

=back

=head1 SEE ALSO

L<dch(1)>, L<dput(1)>, L<pbuilder(8)>, L<reprepro(1)>
L<dch(1)>, L<dput(1)>, L<lxc(7)>, L<pbuilder(8)>, L<reprepro(1)>

=head1 AUTHOR



Loading…
Cancel
Save