Skip to content

Commit

Permalink
Resolve GitOps comment problem with push requests
Browse files Browse the repository at this point in the history
When a user adds a GitOps comment
to a push request targeting a branch other than
the main branch, the pipelinerun should not
execute for those instances where the target
branch is set to 'main.'

Signed-off-by: Savita Ashture <[email protected]>
  • Loading branch information
savitaashture committed Nov 22, 2023
1 parent 0971fd8 commit 06aa6ec
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions pkg/provider/github/parse_payload.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,48 +393,49 @@ func (v *Provider) handleCommitCommentEvent(ctx context.Context, event *github.C
runevent.EventType = "push"
runevent.TriggerTarget = "push"

// by default head and base branch is main
runevent.HeadBranch = "main"
runevent.BaseBranch = "main"

// Set main as default branch to runevent.HeadBranch, runevent.BaseBranch
runevent.HeadBranch, runevent.BaseBranch = "main", "main"
var (
branchName string
prName string
err error
)

// if it is a /test or /retest comment with pipelinerun name figure out the pipelinerun name
// If it is a /test or /retest comment with pipelinerun name figure out the pipelinerun name
if provider.IsTestRetestComment(event.GetComment().GetBody()) {
prName, branchName, err = provider.GetPipelineRunAndBranchNameFromTestComment(event.GetComment().GetBody())
if err != nil {
return runevent, err
}
runevent.TargetTestPipelineRun = prName
}
// Check for /cancel comment
if provider.IsCancelComment(event.GetComment().GetBody()) {
action = "cancellation"
prName, branchName, err = provider.GetPipelineRunAndBranchNameFromCancelComment(event.GetComment().GetBody())
if err != nil {
return runevent, err
}
runevent.CancelPipelineRuns = true
runevent.TargetCancelPipelineRun = prName
}

if branchName != "" {
if err = v.isBranchContainsCommit(ctx, runevent, branchName); err != nil {
return runevent, err
}
runevent.HeadBranch = branchName
runevent.BaseBranch = branchName
// If no branch is specified in GitOps comments, use runevent.HeadBranch
if branchName == "" {
branchName = runevent.HeadBranch
}

if provider.IsCancelComment(event.GetComment().GetBody()) {
if err = v.isBranchContainsCommit(ctx, runevent, runevent.HeadBranch); err != nil {
// Check if the specified branch contains the commit
if err = v.isBranchContainsCommit(ctx, runevent, branchName); err != nil {
if provider.IsCancelComment(event.GetComment().GetBody()) {
runevent.CancelPipelineRuns = false
return runevent, err
}
runevent.CancelPipelineRuns = true
return runevent, err
}
// Finally update branch information to runevent.HeadBranch and runevent.BaseBranch
runevent.HeadBranch = branchName
runevent.BaseBranch = branchName

v.Logger.Infof("commit_comment: pipelinerun %s on %s/%s#%s has been requested", action, runevent.Organization, runevent.Repository, runevent.SHA)
return runevent, nil
}

0 comments on commit 06aa6ec

Please sign in to comment.