mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 12:53:57 +01:00
Add a doctor check to disable the "Actions" unit for mirrors (#32424)
Resolve #32232 Users can disable the "Actions" unit for all mirror repos by running ``` gitea doctor check --run disable-mirror-actions-unit --fix ``` (cherry picked from commit a910abbb451ea89b8279b43bd818a140fe0f3b51)
This commit is contained in:
parent
da40383cf4
commit
dd3c4d7096
1 changed files with 70 additions and 0 deletions
70
services/doctor/actions.go
Normal file
70
services/doctor/actions.go
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package doctor
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
|
unit_model "code.gitea.io/gitea/models/unit"
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/optional"
|
||||||
|
repo_service "code.gitea.io/gitea/services/repository"
|
||||||
|
)
|
||||||
|
|
||||||
|
func disableMirrorActionsUnit(ctx context.Context, logger log.Logger, autofix bool) error {
|
||||||
|
var reposToFix []*repo_model.Repository
|
||||||
|
|
||||||
|
for page := 1; ; page++ {
|
||||||
|
repos, _, err := repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{
|
||||||
|
ListOptions: db.ListOptions{
|
||||||
|
PageSize: repo_model.RepositoryListDefaultPageSize,
|
||||||
|
Page: page,
|
||||||
|
},
|
||||||
|
Mirror: optional.Some(true),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("SearchRepository: %w", err)
|
||||||
|
}
|
||||||
|
if len(repos) == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, repo := range repos {
|
||||||
|
if repo.UnitEnabled(ctx, unit_model.TypeActions) {
|
||||||
|
reposToFix = append(reposToFix, repo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(reposToFix) == 0 {
|
||||||
|
logger.Info("Found no mirror with actions unit enabled")
|
||||||
|
} else {
|
||||||
|
logger.Warn("Found %d mirrors with actions unit enabled", len(reposToFix))
|
||||||
|
}
|
||||||
|
if !autofix || len(reposToFix) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, repo := range reposToFix {
|
||||||
|
if err := repo_service.UpdateRepositoryUnits(ctx, repo, nil, []unit_model.Type{unit_model.TypeActions}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.Info("Fixed %d mirrors with actions unit enabled", len(reposToFix))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Register(&Check{
|
||||||
|
Title: "Disable the actions unit for all mirrors",
|
||||||
|
Name: "disable-mirror-actions-unit",
|
||||||
|
IsDefault: false,
|
||||||
|
Run: disableMirrorActionsUnit,
|
||||||
|
Priority: 9,
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in a new issue