summaryrefslogtreecommitdiffstats
path: root/services/actions
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2024-08-19 18:25:41 +0200
committerGergely Nagy <forgejo@gergo.csillger.hu>2024-08-25 10:41:24 +0200
commitbdf477f6ef195bec83aa8ad4e77d471d1f019f69 (patch)
tree538c877dc320c34ec1307f15706a2656ba65a569 /services/actions
parentMerge pull request 'fix: include last line in file previews with no trailing ... (diff)
downloadforgejo-bdf477f6ef195bec83aa8ad4e77d471d1f019f69.tar.xz
forgejo-bdf477f6ef195bec83aa8ad4e77d471d1f019f69.zip
Fix actions notify bug (#31866)
Try to fix https://github.com/go-gitea/gitea/issues/31757#issuecomment-2295131062 (cherry picked from commit 4f5c96627b4622d64593db2d436b1f3befa5f3c3)
Diffstat (limited to 'services/actions')
-rw-r--r--services/actions/notifier.go2
-rw-r--r--services/actions/notifier_helper.go25
2 files changed, 16 insertions, 11 deletions
diff --git a/services/actions/notifier.go b/services/actions/notifier.go
index 1166bbbfd2..e97afad990 100644
--- a/services/actions/notifier.go
+++ b/services/actions/notifier.go
@@ -396,7 +396,7 @@ func (n *actionsNotifier) ForkRepository(ctx context.Context, doer *user_model.U
// Add to hook queue for created repo after session commit.
if u.IsOrganization() {
newNotifyInput(repo, doer, webhook_module.HookEventRepository).
- WithRef(oldRepo.DefaultBranch).
+ WithRef(git.RefNameFromBranch(oldRepo.DefaultBranch).String()).
WithPayload(&api.RepositoryPayload{
Action: api.HookRepoCreated,
Repository: convert.ToRepo(ctx, repo, access_model.Permission{AccessMode: perm_model.AccessModeOwner}),
diff --git a/services/actions/notifier_helper.go b/services/actions/notifier_helper.go
index 86897d5cba..751b896162 100644
--- a/services/actions/notifier_helper.go
+++ b/services/actions/notifier_helper.go
@@ -69,7 +69,7 @@ type notifyInput struct {
Event webhook_module.HookEventType
// optional
- Ref string
+ Ref git.RefName
Payload api.Payloader
PullRequest *issues_model.PullRequest
}
@@ -93,7 +93,7 @@ func (input *notifyInput) WithDoer(doer *user_model.User) *notifyInput {
}
func (input *notifyInput) WithRef(ref string) *notifyInput {
- input.Ref = ref
+ input.Ref = git.RefName(ref)
return input
}
@@ -105,7 +105,7 @@ func (input *notifyInput) WithPayload(payload api.Payloader) *notifyInput {
func (input *notifyInput) WithPullRequest(pr *issues_model.PullRequest) *notifyInput {
input.PullRequest = pr
if input.Ref == "" {
- input.Ref = pr.GetGitRefName()
+ input.Ref = git.RefName(pr.GetGitRefName())
}
return input
}
@@ -148,20 +148,25 @@ func notify(ctx context.Context, input *notifyInput) error {
defer gitRepo.Close()
ref := input.Ref
- if ref != input.Repo.DefaultBranch && actions_module.IsDefaultBranchWorkflow(input.Event) {
+ if ref.BranchName() != input.Repo.DefaultBranch && actions_module.IsDefaultBranchWorkflow(input.Event) {
if ref != "" {
log.Warn("Event %q should only trigger workflows on the default branch, but its ref is %q. Will fall back to the default branch",
input.Event, ref)
}
- ref = input.Repo.DefaultBranch
+ ref = git.RefNameFromBranch(input.Repo.DefaultBranch)
}
if ref == "" {
log.Warn("Ref of event %q is empty, will fall back to the default branch", input.Event)
- ref = input.Repo.DefaultBranch
+ ref = git.RefNameFromBranch(input.Repo.DefaultBranch)
+ }
+
+ commitID, err := gitRepo.GetRefCommitID(ref.String())
+ if err != nil {
+ return fmt.Errorf("gitRepo.GetRefCommitID: %w", err)
}
// Get the commit object for the ref
- commit, err := gitRepo.GetCommit(ref)
+ commit, err := gitRepo.GetCommit(commitID)
if err != nil {
return fmt.Errorf("gitRepo.GetCommit: %w", err)
}
@@ -177,7 +182,7 @@ func notify(ctx context.Context, input *notifyInput) error {
var detectedWorkflows []*actions_module.DetectedWorkflow
actionsConfig := input.Repo.MustGetUnit(ctx, unit_model.TypeActions).ActionsConfig()
- shouldDetectSchedules := input.Event == webhook_module.HookEventPush && git.RefName(input.Ref).BranchName() == input.Repo.DefaultBranch
+ shouldDetectSchedules := input.Event == webhook_module.HookEventPush && input.Ref.BranchName() == input.Repo.DefaultBranch
workflows, schedules, err := actions_module.DetectWorkflows(gitRepo, commit,
input.Event,
input.Payload,
@@ -235,12 +240,12 @@ func notify(ctx context.Context, input *notifyInput) error {
}
if shouldDetectSchedules {
- if err := handleSchedules(ctx, schedules, commit, input, ref); err != nil {
+ if err := handleSchedules(ctx, schedules, commit, input, ref.String()); err != nil {
return err
}
}
- return handleWorkflows(ctx, detectedWorkflows, commit, input, ref)
+ return handleWorkflows(ctx, detectedWorkflows, commit, input, ref.String())
}
func SkipPullRequestEvent(ctx context.Context, event webhook_module.HookEventType, repoID int64, commitSHA string) bool {