0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-11-11 19:54:27 +01:00

Decoration

This commit is contained in:
NorthRealm 2025-07-08 00:33:34 +08:00
parent 4f3f1b9c8a
commit a0737b1ff4

View File

@ -35,9 +35,6 @@ func generateMessageIDForActionsWorkflowRunStatusEmail(repo *repo_model.Reposito
} }
func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Repository, run *actions_model.ActionRun, sender *user_model.User, recipients []*user_model.User) { func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Repository, run *actions_model.ActionRun, sender *user_model.User, recipients []*user_model.User) {
messageID := generateMessageIDForActionsWorkflowRunStatusEmail(repo, run)
headers := generateMetadataHeaders(repo)
subject := "Run" subject := "Run"
switch run.Status { switch run.Status {
case actions_model.StatusFailure: case actions_model.StatusFailure:
@ -45,17 +42,20 @@ func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Rep
case actions_model.StatusCancelled: case actions_model.StatusCancelled:
subject += " cancelled" subject += " cancelled"
case actions_model.StatusSuccess: case actions_model.StatusSuccess:
subject += " is successful" subject += " succeeded"
} }
subject = fmt.Sprintf("%s: %s (%s)", subject, run.WorkflowID, base.ShortSha(run.CommitSHA)) subject = fmt.Sprintf("%s: %s (%s)", subject, run.WorkflowID, base.ShortSha(run.CommitSHA))
displayName := fromDisplayName(sender)
messageID := generateMessageIDForActionsWorkflowRunStatusEmail(repo, run)
metadataHeaders := generateMetadataHeaders(repo)
jobs0, err := actions_model.GetRunJobsByRunID(ctx, run.ID) jobs, err := actions_model.GetRunJobsByRunID(ctx, run.ID)
if err != nil { if err != nil {
log.Error("GetRunJobsByRunID: %v", err) log.Error("GetRunJobsByRunID: %v", err)
} else { } else {
sort.SliceStable(jobs0, func(i, j int) bool { sort.SliceStable(jobs, func(i, j int) bool {
si := jobs0[i].Status si := jobs[i].Status
sj := jobs0[j].Status sj := jobs[j].Status
if si.IsSuccess() { if si.IsSuccess() {
si = 99 si = 99
} }
@ -65,23 +65,21 @@ func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Rep
return si < sj return si < sj
}) })
} }
convertedJobs := make([]convertedWorkflowJob, 0, len(jobs0)) convertedJobs := make([]convertedWorkflowJob, 0, len(jobs))
for _, job := range jobs0 { for _, job := range jobs {
c, err := convert.ToActionWorkflowJob(ctx, repo, nil, job) converted0, err := convert.ToActionWorkflowJob(ctx, repo, nil, job)
if err != nil { if err != nil {
log.Error("convert.ToActionWorkflowJob: %v", err) log.Error("convert.ToActionWorkflowJob: %v", err)
continue continue
} }
convertedJobs = append(convertedJobs, convertedWorkflowJob{ convertedJobs = append(convertedJobs, convertedWorkflowJob{
HTMLURL: c.HTMLURL, HTMLURL: converted0.HTMLURL,
Name: c.Name, Name: converted0.Name,
Status: job.Status, Status: job.Status,
Attempt: c.RunAttempt, Attempt: converted0.RunAttempt,
}) })
} }
displayName := fromDisplayName(sender)
langMap := make(map[string][]*user_model.User) langMap := make(map[string][]*user_model.User)
for _, user := range recipients { for _, user := range recipients {
langMap[user.Language] = append(langMap[user.Language], user) langMap[user.Language] = append(langMap[user.Language], user)
@ -91,11 +89,17 @@ func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Rep
var runStatusText string var runStatusText string
switch run.Status { switch run.Status {
case actions_model.StatusSuccess: case actions_model.StatusSuccess:
runStatusText = locale.TrString("actions.status.success") runStatusText = "All jobs have succeeded"
case actions_model.StatusFailure: case actions_model.StatusFailure:
runStatusText = locale.TrString("actions.status.failure") runStatusText = "All jobs have failed"
for _, job := range jobs {
if !job.Status.IsFailure() {
runStatusText = "Some jobs were not successful"
break
}
}
case actions_model.StatusCancelled: case actions_model.StatusCancelled:
runStatusText = locale.TrString("actions.status.cancelled") runStatusText = "All jobs have been cancelled"
} }
var mailBody bytes.Buffer var mailBody bytes.Buffer
if err := bodyTemplates.ExecuteTemplate(&mailBody, tplWorkflowRun, map[string]any{ if err := bodyTemplates.ExecuteTemplate(&mailBody, tplWorkflowRun, map[string]any{
@ -122,7 +126,7 @@ func sendActionsWorkflowRunStatusEmail(ctx context.Context, repo *repo_model.Rep
for k, v := range generateSenderRecipientHeaders(sender, rec) { for k, v := range generateSenderRecipientHeaders(sender, rec) {
msg.SetHeader(k, v) msg.SetHeader(k, v)
} }
for k, v := range headers { for k, v := range metadataHeaders {
msg.SetHeader(k, v) msg.SetHeader(k, v)
} }
msg.SetHeader("Message-ID", messageID) msg.SetHeader("Message-ID", messageID)