| 472 | } |
| 473 | |
| 474 | func (r *Runner) GenerateSystemdUnitFile(ctx context.Context, runAsUser string) ([]byte, error) { |
| 475 | entity, err := auth.InstanceEntity(ctx) |
| 476 | if err != nil { |
| 477 | slog.ErrorContext(r.ctx, "failed to get entity", "error", err) |
| 478 | return nil, runnerErrors.ErrUnauthorized |
| 479 | } |
| 480 | |
| 481 | serviceName, err := r.getServiceNameForEntity(entity) |
| 482 | if err != nil { |
| 483 | slog.ErrorContext(r.ctx, "failed to get service name", "error", err) |
| 484 | return nil, fmt.Errorf("error fetching service name: %w", err) |
| 485 | } |
| 486 | |
| 487 | var unitTemplate *template.Template |
| 488 | switch entity.Credentials.ForgeType { |
| 489 | case params.GithubEndpointType: |
| 490 | unitTemplate, err = template.New("").Parse(githubSystemdUnitTemplate) |
| 491 | case params.GiteaEndpointType: |
| 492 | unitTemplate, err = template.New("").Parse(giteaSystemdUnitTemplate) |
| 493 | default: |
| 494 | slog.ErrorContext(r.ctx, "unknown forge type", "forge_type", entity.Credentials.ForgeType) |
| 495 | return nil, errors.New("unknown forge type") |
| 496 | } |
| 497 | if err != nil { |
| 498 | slog.ErrorContext(r.ctx, "failed to parse template", "error", err) |
| 499 | return nil, fmt.Errorf("error parsing template: %w", err) |
| 500 | } |
| 501 | |
| 502 | if runAsUser == "" { |
| 503 | runAsUser = defaults.DefaultUser |
| 504 | } |
| 505 | |
| 506 | data := struct { |
| 507 | ServiceName string |
| 508 | RunAsUser string |
| 509 | }{ |
| 510 | ServiceName: serviceName, |
| 511 | RunAsUser: runAsUser, |
| 512 | } |
| 513 | |
| 514 | var unitFile bytes.Buffer |
| 515 | if err := unitTemplate.Execute(&unitFile, data); err != nil { |
| 516 | slog.ErrorContext(r.ctx, "failed to execute template", "error", err) |
| 517 | return nil, fmt.Errorf("error executing template: %w", err) |
| 518 | } |
| 519 | return unitFile.Bytes(), nil |
| 520 | } |
| 521 | |
| 522 | func (r *Runner) GetJITConfigFile(ctx context.Context, file string) ([]byte, error) { |
| 523 | if !auth.InstanceHasJITConfig(ctx) { |