|
1234567891011121314151617181920212223242526272829303132333435363738 |
- // Copyright 2024 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package actions
-
- import (
- actions_model "code.gitea.io/gitea/models/actions"
- "code.gitea.io/gitea/modules/container"
- )
-
- // GetAllRerunJobs get all jobs that need to be rerun when job should be rerun
- func GetAllRerunJobs(job *actions_model.ActionRunJob, allJobs []*actions_model.ActionRunJob) []*actions_model.ActionRunJob {
- rerunJobs := []*actions_model.ActionRunJob{job}
- rerunJobsIDSet := make(container.Set[string])
- rerunJobsIDSet.Add(job.JobID)
-
- for {
- found := false
- for _, j := range allJobs {
- if rerunJobsIDSet.Contains(j.JobID) {
- continue
- }
- for _, need := range j.Needs {
- if rerunJobsIDSet.Contains(need) {
- found = true
- rerunJobs = append(rerunJobs, j)
- rerunJobsIDSet.Add(j.JobID)
- break
- }
- }
- }
- if !found {
- break
- }
- }
-
- return rerunJobs
- }
|