diff --git a/pkg/gitscm/scm.go b/pkg/gitscm/scm.go index 35507f082..5ac8a3d22 100644 --- a/pkg/gitscm/scm.go +++ b/pkg/gitscm/scm.go @@ -218,7 +218,7 @@ func (s SCM) CreateStatus(repo, sha, url string, state scm.State) error { case scm.StateSuccess: message = "Abstruse CI build successful." case scm.StatePending: - message = "Abstruse CI build running." + message = "Abstruse CI build is running." case scm.StateFailure: message = "Abstruse CI build failed." case scm.StateRunning: diff --git a/server/scheduler/scheduler.go b/server/scheduler/scheduler.go index 251ca9628..08e953254 100644 --- a/server/scheduler/scheduler.go +++ b/server/scheduler/scheduler.go @@ -71,7 +71,7 @@ func (s *scheduler) Next(job *core.Job) error { job.StartTime = nil job.EndTime = nil if err := s.saveJob(job); err != nil { - return err + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) } s.logger.Infof("job %d scheduled", job.ID) @@ -89,6 +89,7 @@ func (s *scheduler) Stop(id uint) (bool, error) { if err := s.saveJob(job); err == nil { return true, nil } + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) return false, nil } @@ -106,7 +107,9 @@ func (s *scheduler) Stop(id uint) (bool, error) { s.logger.Infof("job %d stopped", id) job.job.Status = "failing" job.job.EndTime = lib.TimeNow() - s.saveJob(job.job) + if err := s.saveJob(job.job); err != nil { + s.logger.Errorf("error saving job %d: %v", job.job.ID, err.Error()) + } return stopped, nil } @@ -122,6 +125,7 @@ func (s *scheduler) RestartBuild(id uint) error { build.StartTime = nil build.EndTime = nil if err := s.buildStore.Update(build); err != nil { + s.logger.Errorf("error saving build %d: %v", build.ID, err.Error()) return err } for _, job := range build.Jobs { @@ -198,7 +202,9 @@ func (s *scheduler) startJob(job *core.Job, worker *core.Worker) error { job.Log = "" job.StartTime = lib.TimeNow() job.EndTime = nil - s.saveJob(job) + if err := s.saveJob(job); err != nil { + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) + } j := &pb.Job{ Id: uint64(job.ID), @@ -230,8 +236,12 @@ func (s *scheduler) startJob(job *core.Job, worker *core.Worker) error { job.Log = strings.Join(j.GetLog(), "") job.EndTime = lib.TimeNow() if err := s.saveJob(job); err != nil { - job.Log = strings.Join(j.GetLog(), "")[0:65536] - s.saveJob(job) + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) + log := strings.Join(j.GetLog(), "") + job.Log = log[len(log)-65536:] + if err := s.saveJob(job); err != nil { + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) + } } s.mu.Lock() @@ -287,9 +297,6 @@ func (s *scheduler) removeJob(id uint) { } func (s *scheduler) findWorker() (*core.Worker, error) { - s.mu.Lock() - defer s.mu.Unlock() - workers, err := s.workers.List() if err != nil { return nil, err @@ -326,7 +333,7 @@ func (s *scheduler) getWorker(id string) (*core.Worker, error) { func (s *scheduler) saveJob(job *core.Job) error { if err := s.jobStore.Update(job); err != nil { - return err + s.logger.Errorf("error saving job %d: %v", job.ID, err.Error()) } go s.broadcastJobStatus(job) return s.updateBuildTime(job.BuildID) @@ -376,20 +383,21 @@ func (s *scheduler) updateBuildTime(id uint) error { if startTime != nil { build.StartTime = startTime if err := s.buildStore.Update(build); err != nil { + s.logger.Errorf("error saving build %d: %v", build.ID, err.Error()) return err } } + if alldone && endTime != nil { build.EndTime = endTime if err := s.buildStore.Update(build); err != nil { + s.logger.Errorf("error saving build %d: %v", build.ID, err.Error()) return err } - } - if build.EndTime != nil { success := true for _, j := range build.Jobs { - if j.Status != "success" { + if j.Status != "passing" { success = false break } @@ -425,8 +433,10 @@ func (s *scheduler) sendStatus(build *core.Build, status scm.State) error { fmt.Sprintf("%s/builds/%d", build.Repository.Provider.Host, build.ID), status, ); err != nil { + s.logger.Errorf("error sending build status to scm provider: %v", err.Error()) return err } + s.logger.Debugf("successfully sent build status to scm provider for repo %s", build.Repository.FullName) return nil } diff --git a/server/store/build/build.go b/server/store/build/build.go index 124e7d8f5..16d263432 100644 --- a/server/store/build/build.go +++ b/server/store/build/build.go @@ -25,7 +25,7 @@ type buildStore struct { func (s buildStore) Find(id uint) (*core.Build, error) { var build core.Build - err := s.db.Model(&build).Preload("Jobs").Preload("Repository").Where("id = ?", id).First(&build).Error + err := s.db.Model(&build).Preload("Jobs").Preload("Repository.Provider").Where("id = ?", id).First(&build).Error return &build, err }