From e11993c81f8525bddef048943086339206887a9d0f21c1f5d23a06314d8e7eb1 Mon Sep 17 00:00:00 2001 From: Adam Majer Date: Wed, 19 Nov 2025 16:36:48 +0100 Subject: [PATCH] pr: do not stop processing if failed on some pacakge during check --- workflow-pr/interfaces/state_checker.go | 2 +- workflow-pr/repo_check.go | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/workflow-pr/interfaces/state_checker.go b/workflow-pr/interfaces/state_checker.go index 258bdc2..099afd8 100644 --- a/workflow-pr/interfaces/state_checker.go +++ b/workflow-pr/interfaces/state_checker.go @@ -7,7 +7,7 @@ import "src.opensuse.org/autogits/common" type StateChecker interface { VerifyProjectState(configs *common.AutogitConfig) ([]*PRToProcess, error) - CheckRepos() error + CheckRepos() ConsistencyCheckProcess() error } diff --git a/workflow-pr/repo_check.go b/workflow-pr/repo_check.go index 9ca60e8..2a105c3 100644 --- a/workflow-pr/repo_check.go +++ b/workflow-pr/repo_check.go @@ -1,7 +1,6 @@ package main import ( - "errors" "fmt" "math/rand" "path" @@ -43,6 +42,15 @@ func pullRequestToEventState(state models.StateType) string { } func (s *DefaultStateChecker) ProcessPR(pr *models.PullRequest, config *common.AutogitConfig) error { + defer func() { + if r := recover(); r != nil { + common.LogError("panic caught in ProcessPR", common.PRtoString(pr)) + if err, ok := r.(error); !ok { + common.LogError(err) + } + common.LogError(string(debug.Stack())) + } + }() return ProcesPullRequest(pr, common.AutogitConfigs{config}) } @@ -151,7 +159,7 @@ func (s *DefaultStateChecker) VerifyProjectState(config *common.AutogitConfig) ( return PrjGitSubmoduleCheck(config, git, prjGitRepo, submodules) } -func (s *DefaultStateChecker) CheckRepos() error { +func (s *DefaultStateChecker) CheckRepos() { defer func() { if r := recover(); r != nil { common.LogError("panic caught") @@ -161,7 +169,6 @@ func (s *DefaultStateChecker) CheckRepos() error { common.LogError(string(debug.Stack())) } }() - errorList := make([]error, 0, 10) for org, configs := range s.processor.configuredRepos { for _, config := range configs { @@ -175,12 +182,12 @@ func (s *DefaultStateChecker) CheckRepos() error { prs, err := s.i.VerifyProjectState(config) if err != nil { common.LogError(" *** verification failed, org:", org, err) - errorList = append(errorList, err) } for _, pr := range prs { prs, err := Gitea.GetRecentPullRequests(pr.Org, pr.Repo, pr.Branch) if err != nil { - return fmt.Errorf("Error fetching pull requests for %s/%s#%s. Err: %w", pr.Org, pr.Repo, pr.Branch, err) + common.LogError("Error fetching pull requests for", fmt.Sprintf("%s/%s#%s", pr.Org, pr.Repo, pr.Branch), err) + break } if len(prs) > 0 { common.LogDebug(fmt.Sprintf("%s/%s#%s", pr.Org, pr.Repo, pr.Branch), " - # of PRs to check:", len(prs)) @@ -194,8 +201,6 @@ func (s *DefaultStateChecker) CheckRepos() error { common.LogInfo(" ++ verification complete, org:", org, "config:", config.GitProjectName) } } - - return errors.Join(errorList...) } func (s *DefaultStateChecker) ConsistencyCheckProcess() error {