Add gitea push hook
This commit is contained in:
		@@ -285,6 +285,22 @@ sub push_github : Chained('api') PathPart('push-github') Args(0) {
 | 
			
		||||
    $c->response->body("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub push_gitea : Chained('api') PathPart('push-gitea') Args(0) {
 | 
			
		||||
    my ($self, $c) = @_;
 | 
			
		||||
 | 
			
		||||
    $c->{stash}->{json}->{jobsetsTriggered} = [];
 | 
			
		||||
 | 
			
		||||
    my $in = $c->request->{data};
 | 
			
		||||
    my $url = $in->{repository}->{clone_url} or die;
 | 
			
		||||
    print STDERR "got push from Gitea repository $url\n";
 | 
			
		||||
 | 
			
		||||
    triggerJobset($self, $c, $_, 0) foreach $c->model('DB::Jobsets')->search(
 | 
			
		||||
        { 'project.enabled' => 1, 'me.enabled' => 1 },
 | 
			
		||||
        { join => 'project'
 | 
			
		||||
        , where => \ [ 'me.flake like ? or exists (select 1 from JobsetInputAlts where project = me.project and jobset = me.name and value like ?)', [ 'flake', "%$url%"], [ 'value', "%$url%" ] ]
 | 
			
		||||
        });
 | 
			
		||||
    $c->response->body("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1;
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ sub noLoginNeeded {
 | 
			
		||||
 | 
			
		||||
  return $whitelisted ||
 | 
			
		||||
         $c->request->path eq "api/push-github" ||
 | 
			
		||||
         $c->request->path eq "api/push-gitea" ||
 | 
			
		||||
         $c->request->path eq "google-login" ||
 | 
			
		||||
         $c->request->path eq "github-redirect" ||
 | 
			
		||||
         $c->request->path eq "github-login" ||
 | 
			
		||||
@@ -77,7 +78,7 @@ sub begin :Private {
 | 
			
		||||
    $_->supportedInputTypes($c->stash->{inputTypes}) foreach @{$c->hydra_plugins};
 | 
			
		||||
 | 
			
		||||
    # XSRF protection: require POST requests to have the same origin.
 | 
			
		||||
    if ($c->req->method eq "POST" && $c->req->path ne "api/push-github") {
 | 
			
		||||
    if ($c->req->method eq "POST" && $c->req->path ne "api/push-github" && $c->req->path ne "api/push-gitea") {
 | 
			
		||||
        my $referer = $c->req->header('Referer');
 | 
			
		||||
        $referer //= $c->req->header('Origin');
 | 
			
		||||
        my $base = $c->req->base;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user