本文整理匯總了Golang中github.com/docker/leeroy/github.GitHub.DcoVerified方法的典型用法代碼示例。如果您正苦於以下問題:Golang GitHub.DcoVerified方法的具體用法?Golang GitHub.DcoVerified怎麽用?Golang GitHub.DcoVerified使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/docker/leeroy/github.GitHub
的用法示例。
在下文中一共展示了GitHub.DcoVerified方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: handlePullRequest
func handlePullRequest(w http.ResponseWriter, r *http.Request) {
logrus.Debugf("Got a pull request hook")
// parse the pull request
body, err := ioutil.ReadAll(r.Body)
if err != nil {
logrus.Errorf("Error reading github pull request handler body: %v", err)
w.WriteHeader(500)
return
}
prHook, err := octokat.ParsePullRequestHook(body)
if err != nil {
logrus.Errorf("Error parsing pull request hook: %v", err)
w.WriteHeader(500)
return
}
pr := prHook.PullRequest
baseRepo := fmt.Sprintf("%s/%s", pr.Base.Repo.Owner.Login, pr.Base.Repo.Name)
logrus.Infof("Received GitHub pull request notification for %s %d (%s): %s", baseRepo, pr.Number, pr.URL, prHook.Action)
// ignore everything we don't care about
if prHook.Action != "opened" && prHook.Action != "reopened" && prHook.Action != "synchronize" {
logrus.Debugf("Ignoring PR hook action %q", prHook.Action)
return
}
g := github.GitHub{
AuthToken: config.GHToken,
User: config.GHUser,
}
pullRequest, err := g.LoadPullRequest(prHook)
if err != nil {
logrus.Errorf("Error loading the pull request: %v", err)
w.WriteHeader(500)
return
}
valid, err := g.DcoVerified(pullRequest)
if err != nil {
logrus.Errorf("Error validating DCO: %v", err)
w.WriteHeader(500)
return
}
// DCO not valid, we don't start the build
if !valid {
logrus.Errorf("Invalid DCO for %s #%d. Aborting build", baseRepo, pr.Number)
w.WriteHeader(200)
return
}
mergeable, err := g.IsMergeable(pullRequest)
if err != nil {
logrus.Errorf("Error checking if PR is mergeable: %v", err)
w.WriteHeader(500)
return
}
// PR is not mergeable, so don't start the build
if !mergeable {
logrus.Errorf("Unmergeable PR for %s #%d. Aborting build", baseRepo, pr.Number)
w.WriteHeader(200)
return
}
var builds []Build
// Only run full jobs if there are code related changes
if !pullRequest.Content.IsNonCodeOnly() {
// get the builds
var err error
builds, err = config.getBuilds(baseRepo, false)
if err != nil {
logrus.Warn(err)
}
}
// If there are doc-changes validate them
if pullRequest.Content.HasDocsChanges() {
build, err := config.getBuildByContextAndRepo("doc", baseRepo)
if err != nil {
logrus.Warnf("Adding doc build to %s for %d failed: %v", baseRepo, pr.Number, err)
} else {
builds = append(builds, build)
}
}
// If there are vendoring changes validate them
if pullRequest.Content.HasVendoringChanges() {
build, err := config.getBuildByContextAndRepo("vendor", baseRepo)
if err != nil {
logrus.Warnf("Adding vendor build to %s for %d failed: %v", baseRepo, pr.Number, err)
} else {
builds = append(builds, build)
}
}
//.........這裏部分代碼省略.........
示例2: handlePullRequest
func handlePullRequest(w http.ResponseWriter, r *http.Request) {
log.Debugf("Got a pull request hook")
// parse the pull request
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Errorf("Error reading github pull request handler body: %v", err)
w.WriteHeader(500)
return
}
prHook, err := octokat.ParsePullRequestHook(body)
if err != nil {
log.Errorf("Error parsing pull request hook: %v", err)
w.WriteHeader(500)
return
}
pr := prHook.PullRequest
baseRepo := fmt.Sprintf("%s/%s", pr.Base.Repo.Owner.Login, pr.Base.Repo.Name)
log.Infof("Received GitHub pull request notification for %s %d (%s): %s", baseRepo, pr.Number, pr.URL, prHook.Action)
// ignore everything we don't care about
if prHook.Action != "opened" && prHook.Action != "reopened" && prHook.Action != "synchronize" {
log.Debugf("Ignoring PR hook action %q", prHook.Action)
return
}
g := github.GitHub{
AuthToken: config.GHToken,
User: config.GHUser,
}
pullRequest, err := g.LoadPullRequest(prHook)
if err != nil {
log.Errorf("Error loading the pull request: %v", err)
w.WriteHeader(500)
return
}
valid, err := g.DcoVerified(pullRequest)
if err != nil {
log.Errorf("Error validating DCO: %v", err)
w.WriteHeader(500)
return
}
// DCO not valid, we don't start the build
if !valid {
log.Errorf("Invalid DCO for %s #%d. Aborting build", baseRepo, pr.Number)
w.WriteHeader(200)
return
}
mergeable, err := g.IsMergeable(pullRequest)
if err != nil {
log.Errorf("Error checking if PR is mergeable: %v", err)
w.WriteHeader(500)
return
}
// PR is not mergeable, so don't start the build
if !mergeable {
log.Errorf("Unmergeable PR for %s #%d. Aborting build", baseRepo, pr.Number)
w.WriteHeader(200)
return
}
// Only docs, don't start jenkins jobs
if pullRequest.Content.IsDocsOnly() {
w.WriteHeader(200)
return
}
// get the builds
builds, err := config.getBuilds(baseRepo, false)
if err != nil {
log.Error(err)
w.WriteHeader(500)
return
}
// schedule the jenkins builds
for _, build := range builds {
if err := config.scheduleJenkinsBuild(baseRepo, pr.Number, build); err != nil {
log.Error(err)
w.WriteHeader(500)
}
}
return
}