func updateBuildRevision(c client.BuildInterface, build *api.Build, sourceInfo *git.SourceInfo) { if build.Spec.Revision != nil { return } build.Spec.Revision = &api.SourceRevision{ Git: &api.GitSourceRevision{ Commit: sourceInfo.CommitID, Message: sourceInfo.Message, Author: api.SourceControlUser{ Name: sourceInfo.AuthorName, Email: sourceInfo.AuthorEmail, }, Committer: api.SourceControlUser{ Name: sourceInfo.CommitterName, Email: sourceInfo.CommitterEmail, }, }, } // Reset ResourceVersion to avoid a conflict with other updates to the build build.ResourceVersion = "" glog.V(4).Infof("Setting build revision to %#v", build.Spec.Revision.Git) _, err := c.UpdateDetails(build) if err != nil { glog.Warningf("An error occurred saving build revision: %v", err) } }
func retryBuildStatusUpdate(build *api.Build, client client.BuildInterface, sourceRev *api.SourceRevision) error { return kclient.RetryOnConflict(kclient.DefaultBackoff, func() error { // before updating, make sure we are using the latest version of the build latestBuild, err := client.Get(build.Name) if err != nil { // usually this means we failed to get resources due to the missing // privilleges return err } if sourceRev != nil { latestBuild.Spec.Revision = sourceRev latestBuild.ResourceVersion = "" } latestBuild.Status.Reason = build.Status.Reason latestBuild.Status.Message = build.Status.Message if _, err := client.UpdateDetails(latestBuild); err != nil { return err } return nil }) }