mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-12 02:24:21 -05:00
Sometimes multiple PR/PRMERGE tied workflows are run, despite paths and triggering conditions not overlapping/fullfiled #13483
Open
opened 2025-11-02 10:43:47 -06:00 by GiteaMirror
·
8 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#13483
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @skt-mmisuth on GitHub (Sep 12, 2024).
Description
We are experiencing an issue where mutiple workflows fire unexpectedly. We observed
act_runnerlogs a bit, but it seems that workflow dispatching is being handled in gitea server itself.We need advice on how to approach this problem. We can provide sanitized logs if needed, but I would like to avoid that, due to sensitive nature of the repos being handled.
I am creating this issue in case other people are having similar problem.
Gitea Version
1.21.7
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
Both of these workflows have paths sections mapping different parts of the monorepo, yet they are being triggered:
According to our understanting, only the workflow, that matches modified paths should be triggered, yet sometimes, multiple workflows fire ... how is that possible?
Are we misunderstading something?
Git Version
2.39.3
Operating System
OracleLinux 8.9
How are you running Gitea?
Gitea is being run as system level systemd service (official one provided by gitea project and installed using official documentation) running under "git-dedicated" user.
It was installed onto the node directly using official documentation.
Database
PostgreSQL
@Zettat123 commented on GitHub (Sep 19, 2024):
From the screenshot, if I understand correctly, you may have pushed some changes in
terraform/**to the main branch. In this case, onlyterraform-xxx.yamlshould be triggered, but in factansible-xxx.yamlis also triggered.However, I cannot reproduce this issue on my instance. If possible, could you provide some detailed steps to help us reproduce it?
@skt-mmisuth commented on GitHub (Sep 26, 2024):
Sorry, I haven't had time to report back on this because of $work.
The bug is very hard to trigger, and we don't really know what is actually causing it, but my colleague suggests it could have happened when pull request was cancelled and recreated anew, but on the same branch.
As I said, I've haven't the time to verify this theory, but I am still reporting here, if you, or anybody else, really, wants to try that.
I will try to find time to attempt to trigger it next week.
@dante11235 commented on GitHub (Sep 30, 2024):
Hello, I was able to reproduce this issue and it happens in this situation.
You start to work, create your working branch "branch-feature". You develop what you need and it takes few hours. You only work with folder folder1/ . In the meantime, your colleague is doing a hotfix in the repo and creates "branch-fix". He is really fast and merges the his branch to main. He only operated on folder2/
There are 2 gitea workflows which monitor respective folders
workflow1:
paths:
- 'folder1/**'
workflow2:
paths:
- 'folder2/**'
You now push the branch "branch-feature" to upstream and create a merge request. Your gitea workflow now executes both workflow1 and workflow2 because, from gitea point of view, the change in your PR has difference between folder2 in main and in new branch.
Is this desired state? The issue with this is that if he has done "breaking change" in branch-fix, now my action for the workflow2 is failing. The fix for this is to update my branch with changes from main
@skt-mmisuth commented on GitHub (Oct 3, 2024):
Indeed, we had time to dbeug it further and it seems this caused by PEBKAC, or misunderstanding of how git and monorepos work.
Let's say we have a
mainbranch and multiple people, with their own "private" branches commiting changes and merging their personal branches back to main through branch protection. As the work happens organically at any point any colleague might merge back tomain, thus movingmain"forward".Now "private" work branches of all other colleagues are out of sync with
main. To remediate this situation, I told them to merge main into their branches, as soon as they spot differences, because I considered "merge main to private" safest option.Unfortunately, this merge commit then "pulls-in" changes on
main, made by other colleagues, into the private branch of current colleague. This means, that commit stream on given branch "touches/references" even files, that the current colleague was not working on. But from the POV of gitea, now commit stream touches all the files changed in the meantime, and thus it fires all the workflows anyway, because merge commit matches even those other paths.I was playing with this, and it seems that safest bet, for priovate branches is to use
rebaseon main, instead of merging it. Now the commit stream contains only commits made by given colleague, and gitea workflow matching then fires only on objects that the colleague touched.For less experienced colleagues, we tried to use whole edit process through gitea webui, and it seems to work relatively fine, however when there is a conflict, gitea web ui doesn't present any conflict resolution solution.
So, I assume this is by design, right?
My second question regarding this behaviour is, that if we ensure that each branch is "private" for members, rebasing is proper strategy, right?
Are there any provisions in action workflows to somehow ignore the other parts of the monorepo paths?
I found exclude path specifiers in github workflows. So maybe excluding all paths in every workflow first and than only including specific paths would work around this issue - am I right in my reasoning?
@Zettat123 commented on GitHub (Oct 11, 2024):
@dante11235 Thanks for your feedback. Do you mean that both "workflow1" and "workflow2" were executed after you pushed the "branch-feature" branch and before you updated the branch with changes from main? But I still cannot reproduce this issue. In my test, in this case, only "workflow1" was executed.
@lunny commented on GitHub (Oct 26, 2024):
Please create a test repo on https://demo.gitea.com
@skt-mmisuth commented on GitHub (Jul 18, 2025):
So for us, the solution is to always rebase
feat/*work branch by people who are working on it, onto our primarymainbranch, before the gitea assisted (branch protection) merge.Otherwise, if
mainbranch is merged ontofeat/*,feat/*will naturally pick commits from other people frommainthat happened. Thus when workflow engine is calculating changed files, it seems to also includes commits from other people who changed files somewhere on main. This then triggers worflows that were already merged onto main and already applied by CI/CD previously.For us it seems that easiest way to solve this is to always rebase feat work onto latest main.
Is there any other way to solve this?
@skt-mmisuth commented on GitHub (Sep 17, 2025):
Just confirming with somebody more experienced whether rebase workflow, is correct way to go?