···534534535535.PHONY: lint-yaml
536536lint-yaml: .venv
537537- @poetry run yamllint .
537537+ @poetry run yamllint -s .
538538539539.PHONY: security-check
540540security-check:
+3-2
models/actions/run_list.go
···1010 repo_model "code.gitea.io/gitea/models/repo"
1111 user_model "code.gitea.io/gitea/models/user"
1212 "code.gitea.io/gitea/modules/container"
1313+ "code.gitea.io/gitea/modules/translation"
1314 webhook_module "code.gitea.io/gitea/modules/webhook"
14151516 "xorm.io/builder"
···112113}
113114114115// GetStatusInfoList returns a slice of StatusInfo
115115-func GetStatusInfoList(ctx context.Context) []StatusInfo {
116116+func GetStatusInfoList(ctx context.Context, lang translation.Locale) []StatusInfo {
116117 // same as those in aggregateJobStatus
117118 allStatus := []Status{StatusSuccess, StatusFailure, StatusWaiting, StatusRunning}
118119 statusInfoList := make([]StatusInfo, 0, 4)
119120 for _, s := range allStatus {
120121 statusInfoList = append(statusInfoList, StatusInfo{
121122 Status: int(s),
122122- DisplayedStatus: s.String(),
123123+ DisplayedStatus: s.LocaleString(lang),
123124 })
124125 }
125126 return statusInfoList
+1-1
models/admin/task.go
···4444// TranslatableMessage represents JSON struct that can be translated with a Locale
4545type TranslatableMessage struct {
4646 Format string
4747- Args []any `json:"omitempty"`
4747+ Args []any `json:",omitempty"`
4848}
49495050// LoadRepo loads repository of the task
···158158 // if the task version in request is not equal to the version in db,
159159 // it means there may still be some tasks not be assigned.
160160 // try to pick a task for the runner that send the request.
161161- if t, ok, err := pickTask(ctx, runner); err != nil {
161161+ if t, ok, err := actions_service.PickTask(ctx, runner); err != nil {
162162 log.Error("pick task failed: %v", err)
163163 return nil, status.Errorf(codes.Internal, "pick task: %v", err)
164164 } else if ok {
-95
routers/api/actions/runner/utils.go
···11-// Copyright 2022 The Gitea Authors. All rights reserved.
22-// SPDX-License-Identifier: MIT
33-44-package runner
55-66-import (
77- "context"
88- "fmt"
99-1010- actions_model "code.gitea.io/gitea/models/actions"
1111- secret_model "code.gitea.io/gitea/models/secret"
1212- "code.gitea.io/gitea/modules/log"
1313- "code.gitea.io/gitea/services/actions"
1414-1515- runnerv1 "code.gitea.io/actions-proto-go/runner/v1"
1616- "google.golang.org/protobuf/types/known/structpb"
1717-)
1818-1919-func pickTask(ctx context.Context, runner *actions_model.ActionRunner) (*runnerv1.Task, bool, error) {
2020- t, ok, err := actions_model.CreateTaskForRunner(ctx, runner)
2121- if err != nil {
2222- return nil, false, fmt.Errorf("CreateTaskForRunner: %w", err)
2323- }
2424- if !ok {
2525- return nil, false, nil
2626- }
2727-2828- secrets, err := secret_model.GetSecretsOfTask(ctx, t)
2929- if err != nil {
3030- return nil, false, fmt.Errorf("GetSecretsOfTask: %w", err)
3131- }
3232-3333- vars, err := actions_model.GetVariablesOfRun(ctx, t.Job.Run)
3434- if err != nil {
3535- return nil, false, fmt.Errorf("GetVariablesOfRun: %w", err)
3636- }
3737-3838- actions.CreateCommitStatus(ctx, t.Job)
3939-4040- task := &runnerv1.Task{
4141- Id: t.ID,
4242- WorkflowPayload: t.Job.WorkflowPayload,
4343- Context: generateTaskContext(t),
4444- Secrets: secrets,
4545- Vars: vars,
4646- }
4747-4848- if needs, err := findTaskNeeds(ctx, t); err != nil {
4949- log.Error("Cannot find needs for task %v: %v", t.ID, err)
5050- // Go on with empty needs.
5151- // If return error, the task will be wild, which means the runner will never get it when it has been assigned to the runner.
5252- // In contrast, missing needs is less serious.
5353- // And the task will fail and the runner will report the error in the logs.
5454- } else {
5555- task.Needs = needs
5656- }
5757-5858- return task, true, nil
5959-}
6060-6161-func generateTaskContext(t *actions_model.ActionTask) *structpb.Struct {
6262- giteaRuntimeToken, err := actions.CreateAuthorizationToken(t.ID, t.Job.RunID, t.JobID)
6363- if err != nil {
6464- log.Error("actions.CreateAuthorizationToken failed: %v", err)
6565- }
6666-6767- gitCtx := actions.GenerateGiteaContext(t.Job.Run, t.Job)
6868- gitCtx["token"] = t.Token
6969- gitCtx["gitea_runtime_token"] = giteaRuntimeToken
7070-7171- taskContext, err := structpb.NewStruct(gitCtx)
7272- if err != nil {
7373- log.Error("structpb.NewStruct failed: %v", err)
7474- }
7575-7676- return taskContext
7777-}
7878-7979-func findTaskNeeds(ctx context.Context, task *actions_model.ActionTask) (map[string]*runnerv1.TaskNeed, error) {
8080- if err := task.LoadAttributes(ctx); err != nil {
8181- return nil, fmt.Errorf("task LoadAttributes: %w", err)
8282- }
8383- taskNeeds, err := actions.FindTaskNeeds(ctx, task.Job)
8484- if err != nil {
8585- return nil, err
8686- }
8787- ret := make(map[string]*runnerv1.TaskNeed, len(taskNeeds))
8888- for jobID, taskNeed := range taskNeeds {
8989- ret[jobID] = &runnerv1.TaskNeed{
9090- Outputs: taskNeed.Outputs,
9191- Result: runnerv1.Result(taskNeed.Result),
9292- }
9393- }
9494- return ret, nil
9595-}