mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-24 09:20:31 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
5ac2f8c55f
4 changed files with 54 additions and 6 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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}
|
||||||
|
if Build.Event != "deployment"
|
||||||
span authored
|
span authored
|
||||||
|
else
|
||||||
|
span deployed
|
||||||
em[data-livestamp=Build.Created]
|
em[data-livestamp=Build.Created]
|
||||||
span to
|
span to
|
||||||
|
if Build.Event != "deployment"
|
||||||
em #{Build.Branch}
|
em #{Build.Branch}
|
||||||
|
else
|
||||||
|
em #{Build.Deploy}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,10 +42,16 @@ block content
|
||||||
h3 #{$build.Message}
|
h3 #{$build.Message}
|
||||||
p.card-text
|
p.card-text
|
||||||
em #{$build.Author}
|
em #{$build.Author}
|
||||||
|
if $build.Event != "deployment"
|
||||||
span authored
|
span authored
|
||||||
|
else
|
||||||
|
span deployed
|
||||||
em[data-livestamp=$build.Created]
|
em[data-livestamp=$build.Created]
|
||||||
span to
|
span to
|
||||||
|
if $build.Event != "deployment"
|
||||||
em #{$build.Branch}
|
em #{$build.Branch}
|
||||||
|
else
|
||||||
|
em #{$build.Deploy}
|
||||||
|
|
||||||
|
|
||||||
block append scripts
|
block append scripts
|
||||||
|
|
Loading…
Reference in a new issue