From f7c9bdd462b93dbca509c5bd35718a779cf9d2d3 Mon Sep 17 00:00:00 2001 From: Patrick Zhao Date: Tue, 25 Aug 2026 11:05:19 +0800 Subject: [PATCH] fix: merge multi same repo in workflow Signed-off-by: Patrick Zhao --- .../service/workflow/controller/job/utils.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/controller/job/utils.go b/pkg/microservice/aslan/core/workflow/service/workflow/controller/job/utils.go index 7bd3c5e808..2692475a89 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/controller/job/utils.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/controller/job/utils.go @@ -226,13 +226,21 @@ func applyKeyVals(base, input commonmodels.RuntimeKeyValList, useInputKVSource b } func applyRepos(base, input []*types.Repository) []*types.Repository { + type repoKey struct { + key string + checkoutPath string + } + resp := make([]*types.Repository, 0) - customRepoMap := make(map[string]*types.Repository) + customRepoMap := make(map[repoKey]*types.Repository) for _, repo := range input { if repo.RepoNamespace == "" { repo.RepoNamespace = repo.RepoOwner } - customRepoMap[repo.GetKey()] = repo + customRepoMap[repoKey{key: repo.GetKey()}] = repo + if repo.CheckoutPath != "" { + customRepoMap[repoKey{key: repo.GetKey(), checkoutPath: repo.CheckoutPath}] = repo + } } for _, repo := range base { item := new(types.Repository) @@ -240,8 +248,12 @@ func applyRepos(base, input []*types.Repository) []*types.Repository { if item.RepoNamespace == "" { item.RepoNamespace = item.RepoOwner } + cv, ok := customRepoMap[repoKey{key: repo.GetKey(), checkoutPath: repo.CheckoutPath}] + if !ok { + cv, ok = customRepoMap[repoKey{key: repo.GetKey()}] + } // user can only set default branch in custom workflow. - if cv, ok := customRepoMap[repo.GetKey()]; ok { + if ok { item.Branch = cv.Branch item.MergeBranches = cv.MergeBranches item.Tag = cv.Tag