Skip to content

Commit 3507180

Browse files
authored
[runner] Ensure working_dir exists (#3052)
Fixes: #3051
1 parent e111ae6 commit 3507180

2 files changed

Lines changed: 9 additions & 6 deletions

File tree

runner/internal/executor/executor.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,12 @@ func (ex *RunExecutor) Run(ctx context.Context) (err error) {
196196

197197
ex.setJobCredentials(ctx)
198198

199-
if err := ex.setJobWorkingDir(ctx); err != nil {
199+
if err := ex.prepareJobWorkingDir(ctx); err != nil {
200200
ex.SetJobStateWithTerminationReason(
201201
ctx,
202202
types.JobStateFailed,
203203
types.TerminationReasonExecutorError,
204-
fmt.Sprintf("Failed to set the working dir (%s)", err),
204+
fmt.Sprintf("Failed to set up the working dir (%s)", err),
205205
)
206206
return gerrors.Wrap(err)
207207
}
@@ -352,7 +352,7 @@ func (ex *RunExecutor) setJobCredentials(ctx context.Context) {
352352
log.Trace(ctx, "Job credentials", "uid", ex.jobUid, "gid", ex.jobGid, "home", ex.jobHomeDir)
353353
}
354354

355-
func (ex *RunExecutor) setJobWorkingDir(ctx context.Context) error {
355+
func (ex *RunExecutor) prepareJobWorkingDir(ctx context.Context) error {
356356
var err error
357357
if ex.jobSpec.WorkingDir == nil {
358358
ex.jobWorkingDir, err = os.Getwd()
@@ -369,6 +369,9 @@ func (ex *RunExecutor) setJobWorkingDir(ctx context.Context) error {
369369
}
370370
}
371371
log.Trace(ctx, "Job working dir", "path", ex.jobWorkingDir)
372+
if err := common.MkdirAll(ctx, ex.jobWorkingDir, ex.jobUid, ex.jobGid); err != nil {
373+
return gerrors.Wrap(err)
374+
}
372375
return nil
373376
}
374377

runner/internal/executor/executor_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestExecutor_WorkingDir_Set(t *testing.T) {
2828

2929
ex.jobSpec.WorkingDir = &workingDir
3030
ex.jobSpec.Commands = append(ex.jobSpec.Commands, "pwd")
31-
err = ex.setJobWorkingDir(context.TODO())
31+
err = ex.prepareJobWorkingDir(context.TODO())
3232
require.NoError(t, err)
3333
require.Equal(t, workingDir, ex.jobWorkingDir)
3434
err = os.MkdirAll(workingDir, 0o755)
@@ -47,7 +47,7 @@ func TestExecutor_WorkingDir_NotSet(t *testing.T) {
4747
require.NoError(t, err)
4848
ex.jobSpec.WorkingDir = nil
4949
ex.jobSpec.Commands = append(ex.jobSpec.Commands, "pwd")
50-
err = ex.setJobWorkingDir(context.TODO())
50+
err = ex.prepareJobWorkingDir(context.TODO())
5151
require.NoError(t, err)
5252
require.Equal(t, cwd, ex.jobWorkingDir)
5353

@@ -158,7 +158,7 @@ func TestExecutor_RemoteRepo(t *testing.T) {
158158
err := os.WriteFile(ex.codePath, []byte{}, 0o600) // empty diff
159159
require.NoError(t, err)
160160

161-
err = ex.setJobWorkingDir(context.TODO())
161+
err = ex.prepareJobWorkingDir(context.TODO())
162162
require.NoError(t, err)
163163
err = ex.setupRepo(context.TODO())
164164
require.NoError(t, err)

0 commit comments

Comments
 (0)