mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 20:36:07 +01:00 
			
		
		
		
	Make runs-on support variable expression (#29468)
As title. Close issue: https://gitea.com/gitea/act_runner/issues/445 Follow: https://gitea.com/gitea/act/pulls/91 Move `getSecretsOfTask` and `getVariablesOfTask` under `models` because of circular dependency issues.
This commit is contained in:
		@@ -10,6 +10,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
 | 
			
		||||
@@ -82,3 +83,35 @@ func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
 | 
			
		||||
		})
 | 
			
		||||
	return count != 0, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {
 | 
			
		||||
	variables := map[string]string{}
 | 
			
		||||
 | 
			
		||||
	// Global
 | 
			
		||||
	globalVariables, err := db.Find[ActionVariable](ctx, FindVariablesOpts{})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("find global variables: %v", err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Org / User level
 | 
			
		||||
	ownerVariables, err := db.Find[ActionVariable](ctx, FindVariablesOpts{OwnerID: run.Repo.OwnerID})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("find variables of org: %d, error: %v", run.Repo.OwnerID, err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Repo level
 | 
			
		||||
	repoVariables, err := db.Find[ActionVariable](ctx, FindVariablesOpts{RepoID: run.RepoID})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("find variables of repo: %d, error: %v", run.RepoID, err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Level precedence: Repo > Org / User > Global
 | 
			
		||||
	for _, v := range append(globalVariables, append(ownerVariables, repoVariables...)...) {
 | 
			
		||||
		variables[v.Name] = v.Data
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return variables, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user