mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	Backport #30224 by @Zettat123 Fix #30220 Co-authored-by: Zettat123 <zettat123@gmail.com> (cherry picked from commit 895d2795abe79cc2e87b35d39cb7d09b9234b06d)
This commit is contained in:
		
					parent
					
						
							
								94fc99c217
							
						
					
				
			
			
				commit
				
					
						b310027e55
					
				
			
		
					 4 changed files with 29 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -11,6 +11,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"
 | 
			
		||||
| 
						 | 
				
			
			@ -30,6 +31,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"
 | 
			
		||||
| 
						 | 
				
			
			@ -1027,6 +1029,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 {
 | 
			
		||||
| 
						 | 
				
			
			@ -1034,6 +1039,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"
 | 
			
		||||
| 
						 | 
				
			
			@ -929,6 +931,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)
 | 
			
		||||
| 
						 | 
				
			
			@ -947,6 +953,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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -119,7 +119,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() {
 | 
			
		||||
| 
						 | 
				
			
			@ -536,7 +536,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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue