@@ -15,7 +15,6 @@ import (
1515 "code.gitea.io/gitea/modules/git"
1616 "code.gitea.io/gitea/modules/json"
1717 "code.gitea.io/gitea/modules/log"
18- secret_module "code.gitea.io/gitea/modules/secret"
1918 "code.gitea.io/gitea/modules/setting"
2019 "code.gitea.io/gitea/services/actions"
2120
@@ -32,14 +31,24 @@ func pickTask(ctx context.Context, runner *actions_model.ActionRunner) (*runnerv
3231 return nil , false , nil
3332 }
3433
34+ secrets , err := secret_model .GetSecretsOfTask (ctx , t )
35+ if err != nil {
36+ return nil , false , fmt .Errorf ("GetSecretsOfTask: %w" , err )
37+ }
38+
39+ vars , err := actions_model .GetVariablesOfRun (ctx , t .Job .Run )
40+ if err != nil {
41+ return nil , false , fmt .Errorf ("GetVariablesOfRun: %w" , err )
42+ }
43+
3544 actions .CreateCommitStatus (ctx , t .Job )
3645
3746 task := & runnerv1.Task {
3847 Id : t .ID ,
3948 WorkflowPayload : t .Job .WorkflowPayload ,
4049 Context : generateTaskContext (t ),
41- Secrets : getSecretsOfTask ( ctx , t ) ,
42- Vars : getVariablesOfTask ( ctx , t ) ,
50+ Secrets : secrets ,
51+ Vars : vars ,
4352 }
4453
4554 if needs , err := findTaskNeeds (ctx , t ); err != nil {
@@ -55,71 +64,6 @@ func pickTask(ctx context.Context, runner *actions_model.ActionRunner) (*runnerv
5564 return task , true , nil
5665}
5766
58- func getSecretsOfTask (ctx context.Context , task * actions_model.ActionTask ) map [string ]string {
59- secrets := map [string ]string {}
60-
61- secrets ["GITHUB_TOKEN" ] = task .Token
62- secrets ["GITEA_TOKEN" ] = task .Token
63-
64- if task .Job .Run .IsForkPullRequest && task .Job .Run .TriggerEvent != actions_module .GithubEventPullRequestTarget {
65- // ignore secrets for fork pull request, except GITHUB_TOKEN and GITEA_TOKEN which are automatically generated.
66- // for the tasks triggered by pull_request_target event, they could access the secrets because they will run in the context of the base branch
67- // see the documentation: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
68- return secrets
69- }
70-
71- ownerSecrets , err := db .Find [secret_model.Secret ](ctx , secret_model.FindSecretsOptions {OwnerID : task .Job .Run .Repo .OwnerID })
72- if err != nil {
73- log .Error ("find secrets of owner %v: %v" , task .Job .Run .Repo .OwnerID , err )
74- // go on
75- }
76- repoSecrets , err := db .Find [secret_model.Secret ](ctx , secret_model.FindSecretsOptions {RepoID : task .Job .Run .RepoID })
77- if err != nil {
78- log .Error ("find secrets of repo %v: %v" , task .Job .Run .RepoID , err )
79- // go on
80- }
81-
82- for _ , secret := range append (ownerSecrets , repoSecrets ... ) {
83- if v , err := secret_module .DecryptSecret (setting .SecretKey , secret .Data ); err != nil {
84- log .Error ("decrypt secret %v %q: %v" , secret .ID , secret .Name , err )
85- // go on
86- } else {
87- secrets [secret .Name ] = v
88- }
89- }
90-
91- return secrets
92- }
93-
94- func getVariablesOfTask (ctx context.Context , task * actions_model.ActionTask ) map [string ]string {
95- variables := map [string ]string {}
96-
97- // Global
98- globalVariables , err := db .Find [actions_model.ActionVariable ](ctx , actions_model.FindVariablesOpts {})
99- if err != nil {
100- log .Error ("find global variables: %v" , err )
101- }
102-
103- // Org / User level
104- ownerVariables , err := db .Find [actions_model.ActionVariable ](ctx , actions_model.FindVariablesOpts {OwnerID : task .Job .Run .Repo .OwnerID })
105- if err != nil {
106- log .Error ("find variables of org: %d, error: %v" , task .Job .Run .Repo .OwnerID , err )
107- }
108-
109- // Repo level
110- repoVariables , err := db .Find [actions_model.ActionVariable ](ctx , actions_model.FindVariablesOpts {RepoID : task .Job .Run .RepoID })
111- if err != nil {
112- log .Error ("find variables of repo: %d, error: %v" , task .Job .Run .RepoID , err )
113- }
114-
115- // Level precedence: Repo > Org / User > Global
116- for _ , v := range append (globalVariables , append (ownerVariables , repoVariables ... )... ) {
117- variables [v .Name ] = v .Data
118- }
119-
120- return variables
121- }
122-
12367func generateTaskContext (t * actions_model.ActionTask ) * structpb.Struct {
12468 event := map [string ]any {}
12569 _ = json .Unmarshal ([]byte (t .Job .Run .EventPayload ), & event )
0 commit comments