From 7bebd2bbadd10171b355306a25294cb9576ffb9b Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Fri, 14 Oct 2022 10:55:49 +0800 Subject: [PATCH] chore(runner): update runner status when start job --- poller/poller.go | 6 ++++-- runtime/reporter.go | 7 ++----- runtime/runtime.go | 26 ++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/poller/poller.go b/poller/poller.go index a4b725a..f9c46bd 100644 --- a/poller/poller.go +++ b/poller/poller.go @@ -16,8 +16,10 @@ import ( log "github.com/sirupsen/logrus" ) -const errorRetryCounterLimit = 3 -const errorRetryTimeSleepSecs = 30 +const ( + errorRetryCounterLimit = 3 + errorRetryTimeSleepSecs = 30 +) var ( ErrDataLock = errors.New("Data Lock Error") diff --git a/runtime/reporter.go b/runtime/reporter.go index b530f85..be5c3e5 100644 --- a/runtime/reporter.go +++ b/runtime/reporter.go @@ -170,15 +170,12 @@ func (r *Reporter) Close(lastWords string) error { } r.stateM.Unlock() - if err := retry.Do(func() error { + return retry.Do(func() error { if err := r.ReportLog(true); err != nil { return err } return r.ReportState() - }, retry.Context(r.ctx)); err != nil { - return err - } - return nil + }, retry.Context(r.ctx)) } func (r *Reporter) ReportLog(noMore bool) error { diff --git a/runtime/runtime.go b/runtime/runtime.go index 37b16c5..18bee20 100644 --- a/runtime/runtime.go +++ b/runtime/runtime.go @@ -6,6 +6,7 @@ import ( "gitea.com/gitea/act_runner/client" runnerv1 "gitea.com/gitea/proto-go/runner/v1" + "github.com/bufbuild/connect-go" log "github.com/sirupsen/logrus" ) @@ -22,5 +23,30 @@ func (s *Runner) Run(ctx context.Context, task *runnerv1.Task) error { WithField("task.id", task.Id) l.Info("start running pipeline") + // update runner status + // running: idle -> active + // stopped: active -> idle + if _, err := s.Client.UpdateRunner( + ctx, + connect.NewRequest(&runnerv1.UpdateRunnerRequest{ + Status: runnerv1.RunnerStatus_RUNNER_STATUS_ACTIVE, + }), + ); err != nil { + return err + } + + l.Info("update runner status to active") + defer func() { + if _, err := s.Client.UpdateRunner( + ctx, + connect.NewRequest(&runnerv1.UpdateRunnerRequest{ + Status: runnerv1.RunnerStatus_RUNNER_STATUS_IDLE, + }), + ); err != nil { + log.Errorln("update status error:", err.Error()) + } + l.Info("update runner status to idle") + }() + return NewTask(task.Id, s.Client).Run(ctx, task) }