mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Fix: skip paths check on tag push events in workflows (#34602)
## Summary Fix skipping of `paths` condition in workflows triggered by tag push events. ## Details - Ensure workflows triggered by tag pushes bypass the `paths` filter check. - Prevent incorrect skipping of workflows due to `paths` conditions on tag pushes. - Added and updated unit tests to verify correct behavior.
This commit is contained in:
		@@ -313,6 +313,10 @@ func matchPushEvent(commit *git.Commit, pushPayload *api.PushPayload, evt *jobpa
 | 
				
			|||||||
				matchTimes++
 | 
									matchTimes++
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case "paths":
 | 
							case "paths":
 | 
				
			||||||
 | 
								if refName.IsTag() {
 | 
				
			||||||
 | 
									matchTimes++
 | 
				
			||||||
 | 
									break
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
 | 
								filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
 | 
									log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
 | 
				
			||||||
@@ -326,6 +330,10 @@ func matchPushEvent(commit *git.Commit, pushPayload *api.PushPayload, evt *jobpa
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case "paths-ignore":
 | 
							case "paths-ignore":
 | 
				
			||||||
 | 
								if refName.IsTag() {
 | 
				
			||||||
 | 
									matchTimes++
 | 
				
			||||||
 | 
									break
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
 | 
								filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
 | 
									log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,6 +125,24 @@ func TestDetectMatched(t *testing.T) {
 | 
				
			|||||||
			yamlOn:       "on: schedule",
 | 
								yamlOn:       "on: schedule",
 | 
				
			||||||
			expected:     true,
 | 
								expected:     true,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								desc:         "push to tag matches workflow with paths condition (should skip paths check)",
 | 
				
			||||||
 | 
								triggedEvent: webhook_module.HookEventPush,
 | 
				
			||||||
 | 
								payload: &api.PushPayload{
 | 
				
			||||||
 | 
									Ref:    "refs/tags/v1.0.0",
 | 
				
			||||||
 | 
									Before: "0000000",
 | 
				
			||||||
 | 
									Commits: []*api.PayloadCommit{
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											ID:      "abcdef123456",
 | 
				
			||||||
 | 
											Added:   []string{"src/main.go"},
 | 
				
			||||||
 | 
											Message: "Release v1.0.0",
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								commit:   nil,
 | 
				
			||||||
 | 
								yamlOn:   "on:\n  push:\n    paths:\n      - src/**",
 | 
				
			||||||
 | 
								expected: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, tc := range testCases {
 | 
						for _, tc := range testCases {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user