Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Brad Rydzewski 2016-03-30 13:15:40 -07:00
commit 5ac2f8c55f
4 changed files with 54 additions and 6 deletions

View file

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
"regexp"
"strconv" "strconv"
"strings" "strings"
@ -25,6 +26,8 @@ const (
DefaultMergeRef = "merge" DefaultMergeRef = "merge"
) )
var githubDeployRegex = regexp.MustCompile(".+/deployments/(\\d+)")
type Github struct { type Github struct {
URL string URL string
API string API string
@ -236,7 +239,14 @@ func (g *Github) File(u *model.User, r *model.Repo, b *model.Build, f string) ([
// An example would be the GitHub pull request status. // An example would be the GitHub pull request status.
func (g *Github) Status(u *model.User, r *model.Repo, b *model.Build, link string) error { func (g *Github) Status(u *model.User, r *model.Repo, b *model.Build, link string) error {
client := NewClient(g.API, u.Token, g.SkipVerify) client := NewClient(g.API, u.Token, g.SkipVerify)
if b.Event == "deployment" {
return deploymentStatus(client, r, b, link)
} else {
return repoStatus(client, r, b, link)
}
}
func repoStatus(client *github.Client, r *model.Repo, b *model.Build, link string) error {
status := getStatus(b.Status) status := getStatus(b.Status)
desc := getDesc(b.Status) desc := getDesc(b.Status)
data := github.RepoStatus{ data := github.RepoStatus{
@ -249,6 +259,25 @@ func (g *Github) Status(u *model.User, r *model.Repo, b *model.Build, link strin
return err return err
} }
func deploymentStatus(client *github.Client, r *model.Repo, b *model.Build, link string) error {
matches := githubDeployRegex.FindStringSubmatch(b.Link)
// if the deployment was not triggered from github, don't send a deployment status
if len(matches) != 2 {
return nil
}
// the deployment ID is only available in the the link to the build as the last element in the URL
id, _ := strconv.Atoi(matches[1])
status := getStatus(b.Status)
desc := getDesc(b.Status)
data := github.DeploymentStatusRequest{
State: github.String(status),
Description: github.String(desc),
TargetURL: github.String(link),
}
_, _, err := client.Repositories.CreateDeploymentStatus(r.Owner, r.Name, id, &data)
return err
}
// Netrc returns a .netrc file that can be used to clone // Netrc returns a .netrc file that can be used to clone
// private repositories from a remote system. // private repositories from a remote system.
func (g *Github) Netrc(u *model.User, r *model.Repo) (*model.Netrc, error) { func (g *Github) Netrc(u *model.User, r *model.Repo) (*model.Netrc, error) {

View file

@ -19,6 +19,13 @@ function RepoViewModel(repo) {
// construct the build entry if it doesn't already exist // construct the build entry if it doesn't already exist
// so that we can append to the DOM. The code may not be // so that we can append to the DOM. The code may not be
// pretty, but it is simple enough and it works. // pretty, but it is simple enough and it works.
var authoredOrDeployed = "authored"
var branchOrDeploy = data.branch
if ( data.event == "deployment" ) {
authoredOrDeployed = "deployed"
branchOrDeploy = data.deploy_to
}
el = $("<a>").attr("class", "card").attr("href", "/"+repo+"/"+data.number).attr("data-build", data.number) el = $("<a>").attr("class", "card").attr("href", "/"+repo+"/"+data.number).attr("data-build", data.number)
.append( .append(
$("<div>").attr("class", "card-header").append( $("<div>").attr("class", "card-header").append(
@ -36,13 +43,13 @@ function RepoViewModel(repo) {
$("<p>").attr("class","card-text").append( $("<p>").attr("class","card-text").append(
$("<em>").text(data.author) $("<em>").text(data.author)
).append( ).append(
$("<span>").text("authored") $("<span>").text(authoredOrDeployed)
).append( ).append(
$("<em>").attr("data-livestamp", data.created_at) $("<em>").attr("data-livestamp", data.created_at)
).append( ).append(
$("<span>").text("to") $("<span>").text("to")
).append( ).append(
$("<em>").text(data.branch) $("<em>").text(branchOrDeploy)
) )
) )
).css("display", "flex").hide().fadeIn(1000); ).css("display", "flex").hide().fadeIn(1000);

View file

@ -26,10 +26,16 @@ block content
a.material-icons[href=Build.Link][target="_blank"] link a.material-icons[href=Build.Link][target="_blank"] link
p p
em #{Build.Author} em #{Build.Author}
span authored if Build.Event != "deployment"
span authored
else
span deployed
em[data-livestamp=Build.Created] em[data-livestamp=Build.Created]
span to span to
em #{Build.Branch} if Build.Event != "deployment"
em #{Build.Branch}
else
em #{Build.Deploy}

View file

@ -42,10 +42,16 @@ block content
h3 #{$build.Message} h3 #{$build.Message}
p.card-text p.card-text
em #{$build.Author} em #{$build.Author}
span authored if $build.Event != "deployment"
span authored
else
span deployed
em[data-livestamp=$build.Created] em[data-livestamp=$build.Created]
span to span to
em #{$build.Branch} if $build.Event != "deployment"
em #{$build.Branch}
else
em #{$build.Deploy}
block append scripts block append scripts