diff options
author | Jonathan "Duke" Leto <jonathan@leto.net> | 2011-04-21 12:48:31 -0400 |
---|---|---|
committer | Jonathan "Duke" Leto <jonathan@leto.net> | 2011-04-21 12:48:31 -0400 |
commit | 2c43dc92b41977798f157a2e2809e55d2ef6ed33 (patch) | |
tree | b13658f6c66fad055e8e1d642dca55b6a6653fa1 /lib/jitterbug/Builder.pm | |
parent | Add a dep on DateTime::Format::SQLite (diff) | |
parent | Allow the config file to specify per-project builder and builder_variables, w... (diff) | |
download | jitterbug-2c43dc92b41977798f157a2e2809e55d2ef6ed33.tar.gz |
Merge branch 'custom_build' into reuse_repo
Conflicts: lib/jitterbug/Builder.pm
Diffstat (limited to 'lib/jitterbug/Builder.pm')
-rw-r--r-- | lib/jitterbug/Builder.pm | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm index 2af15d2..02c07bd 100644 --- a/lib/jitterbug/Builder.pm +++ b/lib/jitterbug/Builder.pm @@ -82,26 +82,34 @@ sub sleep { } sub run_task { - my $self = shift; - my ($task) = @_; - my $desc = JSON::decode_json( $task->commit->content ); - my $conf = $self->{'conf'}; + my ($self,$task) = @_; + + my $desc = JSON::decode_json( $task->commit->content ); + my $conf = $self->{'conf'}; my $buildconf = $conf->{'jitterbug'}{'build_process'}; + my $project = $task->project; my $dt = DateTime->now(); $task->update({started_when => $dt}); $desc->{'build'}{'start_time'} = $dt->epoch; debug("Build Start"); + my $report_path = dir( $conf->{'jitterbug'}{'reports'}{'dir'}, - $task->project->name, + $project->name, $task->commit->sha256, ); my $dir = $conf->{'jitterbug'}{'build'}{'dir'}; mkdir $dir unless -d $dir; - my $build_dir = dir($dir, $task->project->name); + my $build_dir = dir($dir, $project->name); + + debug("Removing $build_dir"); + rmtree($build_dir, { error => \my $err } ); + warn @$err if @$err; + + $self->sleep(1); # avoid race conditions my $r; my $repo = $task->project->url . '.git'; @@ -144,7 +152,8 @@ sub run_task { system("git checkout " . $task->commit->sha256 ); chdir $pwd; - my $builder = $conf->{'jitterbug'}{'build_process'}{'builder'}; + my $builder = $conf->{'jitterbug'}{'projects'}{$project->name}{'builder'} + || $conf->{'jitterbug'}{'build_process'}{'builder'}; my $perlbrew = $conf->{'jitterbug'}{'options'}{'perlbrew'}; my $email_on_pass = $conf->{'jitterbug'}{'options'}{'email_on_pass'}; @@ -152,7 +161,9 @@ sub run_task { debug("email_on_pass = $email_on_pass"); debug("perlbrew = $perlbrew"); - my $builder_variables = $conf->{'jitterbug'}{'build_process'}{'builder_variables'}; + # If the project has custom builder variables, use those. Otherwise, use the global setting + my $builder_variables = $conf->{'jitterbug'}{'projects'}{$project->name}{'builder_variables'} + || $conf->{'jitterbug'}{'build_process'}{'builder_variables'}; my $builder_command = "$builder_variables $builder $build_dir $report_path $perlbrew"; |