summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJonathan "Duke" Leto <jonathan@leto.net>2011-05-23 17:23:59 -0700
committerJonathan "Duke" Leto <jonathan@leto.net>2011-05-23 17:23:59 -0700
commita2984e576811a035b568b5ff95a436199ea5dfb5 (patch)
treed12193d91be163c923bf2a3beb1564f672d5307c /lib
parentFactor out the actual build for each task into another function (diff)
downloadjitterbug-a2984e576811a035b568b5ff95a436199ea5dfb5.tar.gz
Factor out repo cloning
Diffstat (limited to 'lib')
-rw-r--r--lib/jitterbug/Builder.pm34
1 files changed, 24 insertions, 10 deletions
diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm
index c69c675..c168a66 100644
--- a/lib/jitterbug/Builder.pm
+++ b/lib/jitterbug/Builder.pm
@@ -80,15 +80,28 @@ sub sleep {
sleep $interval;
}
+sub _clone_into {
+ my ($repo, $dir) = @_;
+ my $pwd = getcwd;
+ chdir $dir;
+
+ debug("cloning $repo into $dir");
+ system("git clone $repo $dir");
+
+ chdir $pwd;
+}
+
sub _prepare_git_repo {
- my ($self, $task, $buildconf, $build_dir) = @_;
+ my ($self, $task, $buildconf, $build_dir, $cached_repo_dir) = @_;
my $repo = $task->project->url;
unless ($buildconf->{reuse_repo}) {
debug("Removing $build_dir");
rmtree($build_dir, { error => \my $err } );
warn @$err if @$err;
- system("git clone $repo $build_dir");
+
+ _clone_into($repo, $build_dir);
+
} else {
# If this is the first time, the repo won't exist yet
debug("build_dir = $build_dir");
@@ -106,12 +119,7 @@ sub _prepare_git_repo {
system("git checkout " . $task->commit->sha256 . "&>/dev/null" );
chdir $pwd;
} else {
- debug("Creating new repo");
- my $pwd = getcwd;
- debug("pwd=$pwd");
- chdir $build_dir;
- system("git clone $repo $build_dir");
- chdir $pwd;
+ _clone_into($repo, $build_dir);
}
}
$self->sleep(1); # avoid race conditions
@@ -127,13 +135,18 @@ sub _prepare_git_repo {
sub build_task {
my ($self, $conf, $project, $task, $report_path) = @_;
+
my $buildconf = $conf->{'jitterbug'}{'build_process'};
- my $dir = $conf->{'jitterbug'}{'build'}{'dir'};
+ my $dir = $conf->{'jitterbug'}{'build'}{'dir'};
+
mkdir $dir unless -d $dir;
my $build_dir = dir($dir, $project->name);
+ my $cached_repo_dir = dir($dir, 'cached');
+
+ mkdir $cached_repo_dir unless -d $cached_repo_dir;
- $self->_prepare_git_repo($task, $buildconf, $build_dir);
+ $self->_prepare_git_repo($task, $buildconf, $build_dir, $cached_repo_dir);
my $builder = $conf->{'jitterbug'}{'projects'}{$project->name}{'builder'}
|| $conf->{'jitterbug'}{'build_process'}{'builder'};
@@ -151,6 +164,7 @@ sub build_task {
debug("Going to run builder : $builder_command");
my $res = `$builder_command`;
debug($res);
+ return $res;
}
sub run_task {