#! /usr/bin/env perl use strict; use utf8; use Hydra::Plugin; use Hydra::Helper::Nix; use Hydra::Helper::PluginHooks; use Hydra::Helper::AddBuilds; STDERR->autoflush(1); binmode STDERR, ":encoding(utf8)"; my $config = getHydraConfig(); my $db = Hydra::Model::DB->new(); my @plugins = Hydra::Plugin->instantiate(db => $db, config => $config); my $cmd = shift @ARGV or die "Syntax: hydra-notify CMD BUILD-ID [BUILD-IDs...]\n"; my $buildId = shift @ARGV or die; my $build = $db->resultset('Builds')->find($buildId) or die "build $buildId does not exist\n"; if ($cmd eq "build-finished") { my $project = $build->project; my $jobset = $build->jobset; if (length($project->declfile) && $jobset->name eq ".jobsets" && $build->iscurrent) { handleDeclarativeJobsetBuild($db, $project, $build); } my @dependents; foreach my $id (@ARGV) { my $dep = $db->resultset('Builds')->find($id) or die "build $id does not exist\n"; push @dependents, $dep; } notifyBuildFinished(\@plugins, $build, [@dependents]); } elsif ($cmd eq "build-started") { notifyBuildStarted(\@plugins, $build); } else { die "unknown action ‘$cmd’"; }