gitea源码

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package doctor
  4. import (
  5. "context"
  6. "fmt"
  7. "code.gitea.io/gitea/models/db"
  8. repo_model "code.gitea.io/gitea/models/repo"
  9. unit_model "code.gitea.io/gitea/models/unit"
  10. "code.gitea.io/gitea/modules/log"
  11. "code.gitea.io/gitea/modules/optional"
  12. repo_service "code.gitea.io/gitea/services/repository"
  13. )
  14. func disableMirrorActionsUnit(ctx context.Context, logger log.Logger, autofix bool) error {
  15. var reposToFix []*repo_model.Repository
  16. for page := 1; ; page++ {
  17. repos, _, err := repo_model.SearchRepository(ctx, repo_model.SearchRepoOptions{
  18. ListOptions: db.ListOptions{
  19. PageSize: repo_model.RepositoryListDefaultPageSize,
  20. Page: page,
  21. },
  22. Mirror: optional.Some(true),
  23. })
  24. if err != nil {
  25. return fmt.Errorf("SearchRepository: %w", err)
  26. }
  27. if len(repos) == 0 {
  28. break
  29. }
  30. for _, repo := range repos {
  31. if repo.UnitEnabled(ctx, unit_model.TypeActions) {
  32. reposToFix = append(reposToFix, repo)
  33. }
  34. }
  35. }
  36. if len(reposToFix) == 0 {
  37. logger.Info("Found no mirror with actions unit enabled")
  38. } else {
  39. logger.Warn("Found %d mirrors with actions unit enabled", len(reposToFix))
  40. }
  41. if !autofix || len(reposToFix) == 0 {
  42. return nil
  43. }
  44. for _, repo := range reposToFix {
  45. if err := repo_service.UpdateRepositoryUnits(ctx, repo, nil, []unit_model.Type{unit_model.TypeActions}); err != nil {
  46. return err
  47. }
  48. }
  49. logger.Info("Fixed %d mirrors with actions unit enabled", len(reposToFix))
  50. return nil
  51. }
  52. func init() {
  53. Register(&Check{
  54. Title: "Disable the actions unit for all mirrors",
  55. Name: "disable-mirror-actions-unit",
  56. IsDefault: false,
  57. Run: disableMirrorActionsUnit,
  58. Priority: 9,
  59. })
  60. }