Skip to content

Commit

Permalink
fix(bitbucket): trigger pipeline on pr:from_ref_updated event (#1517)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jian Zeng committed Nov 10, 2020
1 parent 4319aaf commit e747dc8
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 16 deletions.
4 changes: 3 additions & 1 deletion pkg/server/biz/scm/bitbucket/server/repos_webhooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ const (
RefsChanged = "repo:refs_changed"
// PrOpened is the event key about pull request opened.
PrOpened = "pr:opened"
// PrModified is the event key about pull request modified.
// PrModified means a pull request's description, title, or target branch is changed.
// It be supported after the version is 5.10. Ref to: https://confluence.atlassian.com/bitbucketserver/bitbucket-server-5-10-release-notes-948214779.html
PrModified = "pr:modified"
// PrFromRefUpdated means a pull request's source branch has been updated.
PrFromRefUpdated = "pr:from_ref_updated"
// PrCommentAdded is the event key about a comment added on the pull request.
PrCommentAdded = "pr:comment:added"
)
Expand Down
34 changes: 24 additions & 10 deletions pkg/server/biz/scm/bitbucket/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,19 @@ import (
"github.com/caicloud/cyclone/pkg/util/cerr"
)

// SupportAccessTokenVersion represents the lowest version
// that support personal access token.
const SupportAccessTokenVersion = "5.5.0"

// SupportPrModifiedEvent represents the lowest version
// that support event key named pr:modified.
const SupportPrModifiedEvent = "5.10.0"
const (
// SupportAccessTokenVersion represents the lowest version
// that support personal access token.
SupportAccessTokenVersion = "5.5.0"

// SupportPrModifiedEvent represents the lowest version
// that support event key named pr:modified.
SupportPrModifiedEvent = "5.10.0"

// SupportPrFromRefUpdatedEvent represents the lowest version
// that support pr:from_ref_updated event.
SupportPrFromRefUpdatedEvent = "7.0.0"
)

// Property represents BitBucket Server property.
type Property struct {
Expand Down Expand Up @@ -334,18 +340,26 @@ func (b *BitbucketServer) CreateWebhook(repo string, webhook *scm.Webhook) error
for _, e := range webhook.Events {
switch e {
case scm.PullRequestEventType:
webhookReq.Events = append(webhookReq.Events, PrOpened)

version, err := GetBitbucketVersion(b.v1Client.client, b.v1Client.baseURL)
if err != nil {
return err
}
isSupportPrFromRefUpdated, err := IsHigherVersion(version, SupportPrFromRefUpdatedEvent)
if err != nil {
return err
}
if isSupportPrFromRefUpdated {
webhookReq.Events = append(webhookReq.Events, PrFromRefUpdated)
}

isSupportPrModified, err := IsHigherVersion(version, SupportPrModifiedEvent)
if err != nil {
return err
}
if isSupportPrModified {
webhookReq.Events = append(webhookReq.Events, PrOpened, PrModified)
} else {
webhookReq.Events = append(webhookReq.Events, PrOpened)
webhookReq.Events = append(webhookReq.Events, PrModified)
}
case scm.PullRequestCommentEventType:
webhookReq.Events = append(webhookReq.Events, PrCommentAdded)
Expand Down
11 changes: 6 additions & 5 deletions pkg/server/biz/scm/bitbucket/server/webhooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ const (
)

var supportEventMap = map[string]bool{
RefsChanged: true,
PrOpened: true,
PrModified: true,
PrCommentAdded: true,
RefsChanged: true,
PrOpened: true,
PrModified: true,
PrFromRefUpdated: true,
PrCommentAdded: true,
}

// EventPayload represents the event information.
Expand Down Expand Up @@ -107,7 +108,7 @@ func ParseEvent(request *http.Request) *scm.EventData {
CommitSHA: payload.PullRequest.FromRef.LatestCommit,
Branch: payload.PullRequest.ToRef.DisplayID,
}
case PrModified:
case PrFromRefUpdated, PrModified:
return &scm.EventData{
Type: scm.PullRequestEventType,
Repo: fmt.Sprintf("%s/%s", strings.ToLower(payload.PullRequest.ToRef.Repository.Project.Key), payload.PullRequest.ToRef.Repository.Slug),
Expand Down

0 comments on commit e747dc8

Please sign in to comment.