mirror of
https://gitea.com/gitea/act_runner.git
synced 2026-06-21 17:24:23 +02:00
- Adds `runner.post_task_script` and `runner.post_task_script_timeout` (default `5m`) to run a host executable after each task’s built-in cleanup (post-steps, container teardown, bind-workdir removal). - Stops task heartbeats via `Reporter.StopHeartbeats()` while the script runs so Gitea won’t assign overlapping work; the final task acknowledgement still happens in `reporter.Close()`. - Script output goes to the runner process log; non-zero exits are warned only and do not change the job result. - Documents lifecycle, offline behavior, timeouts, and Windows limits (`.ps1` not supported yet) in `docs/post-task-script.md`. Reviewed-on: https://gitea.com/gitea/runner/pulls/1026 Reviewed-by: Zettat123 <39446+zettat123@noreply.gitea.com>
30 lines
711 B
Go
30 lines
711 B
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
//go:build plan9
|
|
|
|
package process
|
|
|
|
import "os"
|
|
|
|
// Killer falls back to single-process termination on platforms without a
|
|
// process-group / Job Object tree-kill. The Job Object (Windows) and process
|
|
// group (Unix) based tree-kills live in killer_windows.go / killer_unix.go;
|
|
// here we just kill the direct child, matching the previous default behaviour.
|
|
type Killer struct {
|
|
p *os.Process
|
|
}
|
|
|
|
func NewKiller(p *os.Process) (*Killer, error) {
|
|
return &Killer{p: p}, nil
|
|
}
|
|
|
|
func (k *Killer) Kill() error {
|
|
if k == nil || k.p == nil {
|
|
return nil
|
|
}
|
|
return k.p.Kill()
|
|
}
|
|
|
|
func (k *Killer) Close() error { return nil }
|