github.com/ssube/gitlab-ci-multi-runner@v1.2.1-0.20160607142738-b8d1285632e6/commands/helpers/retry_helper.go (about)

     1  package helpers
     2  
     3  import (
     4  	"github.com/Sirupsen/logrus"
     5  	"time"
     6  )
     7  
     8  type retryHelper struct {
     9  	Retry     int           `long:"retry" description:"How many times to retry upload"`
    10  	RetryTime time.Duration `long:"retry-time" description:"How long to wait between retries"`
    11  }
    12  
    13  func (r *retryHelper) doRetry(handler func() (bool, error)) (err error) {
    14  	retry, err := handler()
    15  	for i := 0; retry && i < r.Retry; i++ {
    16  		// wait one second to retry
    17  		logrus.Warningln("Retrying...")
    18  		time.Sleep(r.RetryTime)
    19  		retry, err = handler()
    20  	}
    21  	return
    22  }