0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-21 05:54:38 +02:00

use cached task instance if available

This commit is contained in:
Christopher Homberger 2025-03-17 20:13:33 +01:00
parent 20f5d6ee95
commit a178e4be7a
3 changed files with 16 additions and 9 deletions

View File

@ -1000,9 +1000,9 @@ func GetWorkflowRun(ctx *context.APIContext) {
// "$ref": "#/responses/notFound" // "$ref": "#/responses/notFound"
runID := ctx.PathParamInt64("run") runID := ctx.PathParamInt64("run")
job, _, _ := db.GetByID[actions_model.ActionRun](ctx, runID) job, _, err := db.GetByID[actions_model.ActionRun](ctx, runID)
if job.RepoID != ctx.Repo.Repository.ID { if err != nil || job.RepoID != ctx.Repo.Repository.ID {
ctx.APIError(http.StatusNotFound, util.ErrNotExist) ctx.APIError(http.StatusNotFound, util.ErrNotExist)
} }
@ -1070,7 +1070,7 @@ func GetWorkflowJobs(ctx *context.APIContext) {
res.Entries = make([]*api.ActionWorkflowJob, len(artifacts)) res.Entries = make([]*api.ActionWorkflowJob, len(artifacts))
for i := range artifacts { for i := range artifacts {
convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, artifacts[i]) convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, nil, artifacts[i])
if err != nil { if err != nil {
ctx.APIErrorInternal(err) ctx.APIErrorInternal(err)
return return
@ -1113,13 +1113,13 @@ func GetWorkflowJob(ctx *context.APIContext) {
// "$ref": "#/responses/notFound" // "$ref": "#/responses/notFound"
jobID := ctx.PathParamInt64("job_id") jobID := ctx.PathParamInt64("job_id")
job, _, _ := db.GetByID[actions_model.ActionRunJob](ctx, jobID) job, _, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID)
if job.RepoID != ctx.Repo.Repository.ID { if err != nil || job.RepoID != ctx.Repo.Repository.ID {
ctx.APIError(http.StatusNotFound, util.ErrNotExist) ctx.APIError(http.StatusNotFound, util.ErrNotExist)
} }
convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, job) convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, nil, job)
if err != nil { if err != nil {
ctx.APIErrorInternal(err) ctx.APIErrorInternal(err)
return return

View File

@ -276,7 +276,9 @@ func ToActionsStatus(status actions_model.Status) (string, string) {
return action, conclusion return action, conclusion
} }
func ToActionWorkflowJob(ctx context.Context, repo *repo_model.Repository, job *actions_model.ActionRunJob) (*api.ActionWorkflowJob, error) { // ToActionWorkflowJob convert a actions_model.ActionRunJob to an api.ActionWorkflowJob
// task is optional and can be nil
func ToActionWorkflowJob(ctx context.Context, repo *repo_model.Repository, task *actions_model.ActionTask, job *actions_model.ActionRunJob) (*api.ActionWorkflowJob, error) {
err := job.LoadAttributes(ctx) err := job.LoadAttributes(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
@ -300,7 +302,12 @@ func ToActionWorkflowJob(ctx context.Context, repo *repo_model.Repository, job *
var steps []*api.ActionWorkflowStep var steps []*api.ActionWorkflowStep
if job.TaskID != 0 { if job.TaskID != 0 {
task, _, _ := db.GetByID[actions_model.ActionTask](ctx, job.TaskID) if task == nil {
task, _, err = db.GetByID[actions_model.ActionTask](ctx, job.TaskID)
if err != nil {
return nil, err
}
}
runnerID = task.RunnerID runnerID = task.RunnerID
if runner, ok, _ := db.GetByID[actions_model.ActionRunner](ctx, runnerID); ok { if runner, ok, _ := db.GetByID[actions_model.ActionRunner](ctx, runnerID); ok {

View File

@ -956,7 +956,7 @@ func (*webhookNotifier) WorkflowJobStatusUpdate(ctx context.Context, repo *repo_
status, _ := convert.ToActionsStatus(job.Status) status, _ := convert.ToActionsStatus(job.Status)
convertedJob, err := convert.ToActionWorkflowJob(ctx, repo, job) convertedJob, err := convert.ToActionWorkflowJob(ctx, repo, task, job)
if err != nil { if err != nil {
log.Error("ToActionWorkflowJob: %v", err) log.Error("ToActionWorkflowJob: %v", err)
return return