mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Backport #30224 by @Zettat123 Fix #30220 Co-authored-by: Zettat123 <zettat123@gmail.com>
This commit is contained in:
		@@ -12,6 +12,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	actions_model "code.gitea.io/gitea/models/actions"
 | 
			
		||||
	activities_model "code.gitea.io/gitea/models/activities"
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/models/organization"
 | 
			
		||||
@@ -31,6 +32,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/validation"
 | 
			
		||||
	"code.gitea.io/gitea/modules/web"
 | 
			
		||||
	"code.gitea.io/gitea/routers/api/v1/utils"
 | 
			
		||||
	actions_service "code.gitea.io/gitea/services/actions"
 | 
			
		||||
	"code.gitea.io/gitea/services/context"
 | 
			
		||||
	"code.gitea.io/gitea/services/convert"
 | 
			
		||||
	"code.gitea.io/gitea/services/issue"
 | 
			
		||||
@@ -1035,6 +1037,9 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e
 | 
			
		||||
				ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err)
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil {
 | 
			
		||||
				log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
 | 
			
		||||
			}
 | 
			
		||||
			log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
 | 
			
		||||
		} else {
 | 
			
		||||
			if err := repo_model.SetArchiveRepoState(ctx, repo, *opts.Archived); err != nil {
 | 
			
		||||
@@ -1042,6 +1047,11 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e
 | 
			
		||||
				ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err)
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if ctx.Repo.Repository.UnitEnabled(ctx, unit_model.TypeActions) {
 | 
			
		||||
				if err := actions_service.DetectAndHandleSchedules(ctx, repo); err != nil {
 | 
			
		||||
					log.Error("DetectAndHandleSchedules for un-archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			log.Trace("Repository was un-archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	actions_model "code.gitea.io/gitea/models/actions"
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/models/organization"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
@@ -29,6 +30,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
	"code.gitea.io/gitea/modules/validation"
 | 
			
		||||
	"code.gitea.io/gitea/modules/web"
 | 
			
		||||
	actions_service "code.gitea.io/gitea/services/actions"
 | 
			
		||||
	asymkey_service "code.gitea.io/gitea/services/asymkey"
 | 
			
		||||
	"code.gitea.io/gitea/services/context"
 | 
			
		||||
	"code.gitea.io/gitea/services/forms"
 | 
			
		||||
@@ -897,6 +899,10 @@ func SettingsPost(ctx *context.Context) {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil {
 | 
			
		||||
			log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ctx.Flash.Success(ctx.Tr("repo.settings.archive.success"))
 | 
			
		||||
 | 
			
		||||
		log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
 | 
			
		||||
@@ -915,6 +921,12 @@ func SettingsPost(ctx *context.Context) {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ctx.Repo.Repository.UnitEnabled(ctx, unit_model.TypeActions) {
 | 
			
		||||
			if err := actions_service.DetectAndHandleSchedules(ctx, repo); err != nil {
 | 
			
		||||
				log.Error("DetectAndHandleSchedules for un-archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ctx.Flash.Success(ctx.Tr("repo.settings.unarchive.success"))
 | 
			
		||||
 | 
			
		||||
		log.Trace("Repository was un-archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
 | 
			
		||||
 
 | 
			
		||||
@@ -117,7 +117,7 @@ func notify(ctx context.Context, input *notifyInput) error {
 | 
			
		||||
		log.Debug("ignore executing %v for event %v whose doer is %v", getMethod(ctx), input.Event, input.Doer.Name)
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	if input.Repo.IsEmpty {
 | 
			
		||||
	if input.Repo.IsEmpty || input.Repo.IsArchived {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	if unit_model.TypeActions.UnitGlobalDisabled() {
 | 
			
		||||
@@ -501,7 +501,7 @@ func handleSchedules(
 | 
			
		||||
 | 
			
		||||
// DetectAndHandleSchedules detects the schedule workflows on the default branch and create schedule tasks
 | 
			
		||||
func DetectAndHandleSchedules(ctx context.Context, repo *repo_model.Repository) error {
 | 
			
		||||
	if repo.IsEmpty {
 | 
			
		||||
	if repo.IsEmpty || repo.IsArchived {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,11 @@ func startTasks(ctx context.Context) error {
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if row.Repo.IsArchived {
 | 
			
		||||
				// Skip if the repo is archived
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			cfg, err := row.Repo.GetUnit(ctx, unit.TypeActions)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				if repo_model.IsErrUnitTypeNotExist(err) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user