forked from lix-project/hydra
RunCommand: Capture the output of the commands
This commit is contained in:
parent
001539c3d2
commit
4cb5e6cd94
|
@ -275,7 +275,11 @@ in
|
||||||
|
|
||||||
mkdir -m 0700 -p ${baseDir}/queue-runner
|
mkdir -m 0700 -p ${baseDir}/queue-runner
|
||||||
mkdir -m 0750 -p ${baseDir}/build-logs
|
mkdir -m 0750 -p ${baseDir}/build-logs
|
||||||
chown hydra-queue-runner.hydra ${baseDir}/queue-runner ${baseDir}/build-logs
|
mkdir -m 0750 -p ${baseDir}/runcommand-logs
|
||||||
|
chown hydra-queue-runner.hydra \
|
||||||
|
${baseDir}/queue-runner \
|
||||||
|
${baseDir}/build-logs \
|
||||||
|
${baseDir}/runcommand-logs
|
||||||
|
|
||||||
${optionalString haveLocalDB ''
|
${optionalString haveLocalDB ''
|
||||||
if ! [ -e ${baseDir}/.db-created ]; then
|
if ! [ -e ${baseDir}/.db-created ]; then
|
||||||
|
@ -457,6 +461,7 @@ in
|
||||||
script =
|
script =
|
||||||
''
|
''
|
||||||
find /var/lib/hydra/build-logs -type f -name "*.drv" -mtime +3 -size +0c | xargs -r bzip2 -v -f
|
find /var/lib/hydra/build-logs -type f -name "*.drv" -mtime +3 -size +0c | xargs -r bzip2 -v -f
|
||||||
|
find /var/lib/hydra/runcommand-logs -type f -name "*.drv" -mtime +3 -size +0c | xargs -r bzip2 -v -f
|
||||||
'';
|
'';
|
||||||
startAt = "Sun 01:45";
|
startAt = "Sun 01:45";
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,6 +5,8 @@ use warnings;
|
||||||
use parent 'Hydra::Plugin';
|
use parent 'Hydra::Plugin';
|
||||||
use experimental 'smartmatch';
|
use experimental 'smartmatch';
|
||||||
use JSON::MaybeXS;
|
use JSON::MaybeXS;
|
||||||
|
use Digest::SHA1 qw(sha1_hex);
|
||||||
|
use Hydra::Model::DB;
|
||||||
|
|
||||||
sub isEnabled {
|
sub isEnabled {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
@ -160,7 +162,18 @@ sub buildFinished {
|
||||||
|
|
||||||
$runlog->started();
|
$runlog->started();
|
||||||
|
|
||||||
system("$command") == 0
|
# Prepare log collection
|
||||||
|
my $filename = sha1_hex($command) . "-" . $build->get_column('id');
|
||||||
|
my $dir = Hydra::Model::DB::getHydraPath . "/runcommand-logs/" . substr($filename, 0, 2);
|
||||||
|
my $logpath = "$dir/$filename";
|
||||||
|
mkdir($dir, oct(755));
|
||||||
|
# This creates the file with the correct permissions
|
||||||
|
open(my $f, '>', $logpath);
|
||||||
|
close($f);
|
||||||
|
chmod(oct(644), $logpath);
|
||||||
|
|
||||||
|
# Run the command
|
||||||
|
system("$command 1>$logpath 2>&1") == 0
|
||||||
or warn "notification command '$command' failed with exit status $? ($!)\n";
|
or warn "notification command '$command' failed with exit status $? ($!)\n";
|
||||||
|
|
||||||
$runlog->completed_with_child_error($?, $!);
|
$runlog->completed_with_child_error($?, $!);
|
||||||
|
|
Loading…
Reference in a new issue