【架构优化】合并 engine/cloud_pool.go 中重复的执行池候选 runner 收集与启用判断
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- Meio dia
- Facilidade para iniciantes
- 30/100
Direção de pesquisa
The duplicated runner-listing loop sits in pickPoolRunner and CloudPoolStatus, and the duplicated enablement check sits in cloudPoolRunner and cloudPoolRequired, all in internal/engine/cloud_pool.go. Read poolRunnerEligible and cloudPoolServes first, then extract eligiblePoolRunners and the unexported serves method. Pull request #467 already targets this change, so check its state before starting. Done when both call sites share the helpers, go test ./internal/engine/ passes including TestCloudPoolSelectionStatusAndBindingErrors, and the new table-driven tests in cloud_pool_helpers_test.go pass.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
现状问题
internal/engine/cloud_pool.go 中有两处重复:
- 「列出当前可承接云端执行池任务的 runner」的循环(遍历
e.repo.Runners()并用poolRunnerEligible过滤)在pickPoolRunner和CloudPoolStatus各写了一遍,一个收集候选、一个计数。 - 「执行池已启用且覆盖该项目」的判断
pool.Label != "" && cloudPoolServes(pool.Projects, projectID)在cloudPoolRunner与cloudPoolRequired中各写了一遍。
以后调整资格规则或启用条件时容易只改一处。
重构方案
- 新增
(*Engine).eligiblePoolRunners(label) []domain.Runner,pickPoolRunner从中随机挑选,CloudPoolStatus返回其长度。 - 新增
(CloudRunnerPool).serves(projectID) bool(未导出),cloudPoolRunner/cloudPoolRequired改为调用它。 - 函数签名、导出 API、错误文案、选择逻辑均不变。
影响范围
仅 internal/engine/cloud_pool.go,新增测试文件 internal/engine/cloud_pool_helpers_test.go。不涉及对外接口与行为。
验证方式
gofmt/go vet ./internal/engine/- 新增表驱动测试覆盖
serves的各种组合,以及eligiblePoolRunners对标签/归属/在线状态/版本的过滤,并核对与CloudPoolStatus、pickPoolRunner结果一致 go test ./internal/engine/原有用例(含TestCloudPoolSelectionStatusAndBindingErrors)保持通过
- Linguagem predominante
- Go
- Estrelas
- 141
- Forks
- 28
- Merge médio
- 1d 15h
- PRs com merge (30d)
- 113
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Tencent/LoopForge
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
[Bug]: 官方镜像未安装 wecom-cli,企业微信通知报「通知服务未安装 wecom-cli」Talvez já em andamento @newexploreor assumiu há 1 dia. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Tencent/LoopForge#156 · 1 comentário · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentityTalvez já em andamento @fx-kurumi assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 40/100
Mantenedores costumam responder em até 1 dia
-
【架构优化】从 runtime.installNPMCLI 中拆出 npm 参数拼装 npmCLIInstallArgs 与安装结果启用 activateNPMStageTalvez já em andamento @fx-kurumi assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 30/100
Mantenedores costumam responder em até 1 dia
Todas as issues de Tencent/LoopForge
Issues semelhantes
-
team:library-maintainers
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
padok-team/burrito#1208 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
bazel-contrib/rules_go#4784 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Уязвимые компоненты в GoAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
POSIdev-community/aictl#40 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 62/100
prime-radiant-inc/evener#6306 ·
Mantenedores costumam responder em até 1 dia