fix(service): add environment variables and fix work directory permissions for Slurm job submission

Slurm requires environment variables in job submission; without them it returns 'batch job cannot run without an environment'. Also chmod the entire directory path to 0777 to bypass umask, ensuring Slurm and compute node users can write.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-14 13:06:51 +08:00
parent 04f99cc1c4
commit a65c8762af
2 changed files with 11 additions and 1 deletions

View File

@@ -174,9 +174,14 @@ func (s *ApplicationService) SubmitFromApplication(ctx context.Context, applicat
safeName := sanitizeDirName(app.Name) safeName := sanitizeDirName(app.Name)
subDir := time.Now().Format("20060102_150405") + "_" + randomSuffix(4) subDir := time.Now().Format("20060102_150405") + "_" + randomSuffix(4)
workDir = filepath.Join(s.workDirBase, safeName, subDir) workDir = filepath.Join(s.workDirBase, safeName, subDir)
if err := os.MkdirAll(workDir, 0755); err != nil { if err := os.MkdirAll(workDir, 0777); err != nil {
return nil, fmt.Errorf("create work directory %s: %w", workDir, err) return nil, fmt.Errorf("create work directory %s: %w", workDir, err)
} }
// 绕过 umask确保整条路径都有写权限
for dir := workDir; dir != s.workDirBase; dir = filepath.Dir(dir) {
os.Chmod(dir, 0777)
}
os.Chmod(s.workDirBase, 0777)
} }
req := &model.SubmitJobRequest{Script: rendered, WorkDir: workDir} req := &model.SubmitJobRequest{Script: rendered, WorkDir: workDir}

View File

@@ -44,6 +44,11 @@ func (s *JobService) SubmitJob(ctx context.Context, req *model.SubmitJobRequest)
} }
} }
jobDesc.Environment = slurm.StringArray{
"PATH=/usr/local/bin:/usr/bin:/bin",
"HOME=/root",
}
submitReq := &slurm.JobSubmitReq{ submitReq := &slurm.JobSubmitReq{
Script: &script, Script: &script,
Job: jobDesc, Job: jobDesc,