about summary refs log tree commit diff
path: root/scripts/builder.pl
diff options
context:
space:
mode:
authorSawyer X <xsawyerx@cpan.org>2010-10-09 18:19:20 +0200
committerJonathan "Duke" Leto <jonathan@leto.net>2011-01-05 11:10:15 -0800
commit7dd10236ed487373cda80daa1430651e6c011f11 (patch)
tree5a2cf43a31f25d2c8b7f597009f919d154fb2816 /scripts/builder.pl
parentAdd some debug output to capsule.sh (diff)
downloadjitterbug-7dd10236ed487373cda80daa1430651e6c011f11.tar.gz
Rewriting the builder as jitterbug::Builder
Diffstat (limited to '')
-rw-r--r--scripts/builder.pl77
1 files changed, 3 insertions, 74 deletions
diff --git a/scripts/builder.pl b/scripts/builder.pl
index fba8147..8b7ee2c 100644
--- a/scripts/builder.pl
+++ b/scripts/builder.pl
@@ -1,80 +1,9 @@
-#!/usr/bin/env perl
+#!/usr/bin/perl
 
 use strict;
 use warnings;
 
-use JSON;
-use YAML qw/LoadFile Dump/;
-use File::Spec;
-use File::Path qw/rmtree/;
-use File::Basename;
-use Git::Repository;
-use jitterbug::Schema;
+use jitterbug::Builder;
 
-$|++;
+exit jitterbug::Builder->new->run;
 
-my $conf_file = shift || die "config.yml is missing";
-my $conf      = LoadFile($conf_file);
-my $dbix_conf = $conf->{plugins}->{DBIC}->{schema};
-my $schema    = jitterbug::Schema->connect( @{ $dbix_conf->{connect_info} } );
-my $interval  = $conf->{jitterbug}->{builder}->{sleep} || 30;
-
-while (1) {
-    my $task = $schema->resultset('Task')->search()->single();
-
-    unless ($task) {
-        sleep $interval;
-        next;
-    }
-
-    my $desc    = JSON::decode_json($task->commit->content);
-    $desc->{build}->{start_time} = time();
-
-    my $report_path = File::Spec->catdir( $conf->{jitterbug}->{reports}->{dir},
-        $task->project->name, $task->commit->sha256 );
-    my $build_dir = File::Spec->catdir( $conf->{jitterbug}->{build}->{dir},
-        $task->project->name );
-
-    my $repo    = $task->project->url . '.git';
-    my $r = Git::Repository->create( clone => $repo => $build_dir );
-    $r->run( 'checkout', $task->commit->sha256 );
-
-    my $builder = $conf->{jitterbug}->{build_process}->{builder};
-    my $res     = `$builder $build_dir $report_path`;
-
-    rmtree($build_dir);
-
-    $desc->{build}->{end_time} = time();
-
-    my @versions = glob( $report_path . '/*' );
-    foreach my $version (@versions) {
-        open my $fh, '<', $version;
-        my ($result, $lines);
-        while (<$fh>){
-            $lines .= $_;
-        }
-        ($result) = $lines =~ /Result:\s(\w+)/;
-        my ( $name, ) = basename($version);
-        $name =~ s/\.txt//;
-        if ( !$result || ($result && $result !~ /PASS/ )) {
-            # mail author of the commit
-            $result = "FAIL";
-            my $message  = $desc->{message};
-            my $commiter = $desc->{author}->{email};
-            my $output   = "Build failed";
-            my $sha      = $desc->{id};
-            my $on_failure =
-                $conf->{jitterbug}->{build_process}->{on_failure};
-            `$on_failure $commiter $message $output $sha`;
-        }
-        $desc->{build}->{version}->{$name} = $result;
-        close $fh;
-    }
-
-    $task->commit->update({
-        content => JSON::encode_json($desc),
-    });
-    $task->delete();
-    warn "done\n";
-    sleep 5;
-}