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
co-authored by Sisyphus
parent 04f99cc1c4
commit a65c8762af
2 changed files with 11 additions and 1 deletions
+6 -1
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}
+5
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,