mirror of
https://github.com/harness/drone.git
synced 2025-05-09 21:44:33 +08:00
Merge pull request #1721 from bradrydzewski/master
gracefully shutdown agent when builds running
This commit is contained in:
commit
90a15fb5bb
@ -1,7 +1,10 @@
|
|||||||
package agent
|
package agent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
"sync"
|
"sync"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/drone/drone/client"
|
"github.com/drone/drone/client"
|
||||||
@ -201,5 +204,25 @@ func start(c *cli.Context) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
handleSignals()
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tracks running builds
|
||||||
|
var running sync.WaitGroup
|
||||||
|
|
||||||
|
func handleSignals() {
|
||||||
|
// Graceful shut-down on SIGINT/SIGTERM
|
||||||
|
c := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(c, os.Interrupt)
|
||||||
|
signal.Notify(c, syscall.SIGTERM)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-c
|
||||||
|
logrus.Debugln("SIGTERM received.")
|
||||||
|
logrus.Debugln("wait for running builds to finish.")
|
||||||
|
running.Wait()
|
||||||
|
logrus.Debugln("done.")
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
@ -33,6 +33,10 @@ func (r *pipeline) run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
running.Add(1)
|
||||||
|
defer func() {
|
||||||
|
running.Done()
|
||||||
|
}()
|
||||||
|
|
||||||
logrus.Infof("Starting build %s/%s#%d.%d",
|
logrus.Infof("Starting build %s/%s#%d.%d",
|
||||||
w.Repo.Owner, w.Repo.Name, w.Build.Number, w.Job.Number)
|
w.Repo.Owner, w.Repo.Name, w.Build.Number, w.Job.Number)
|
||||||
|
Loading…
Reference in New Issue
Block a user