mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-09-30 19:22:09 +00:00
fix: remove LXC working directory when it completes
The working directory was not cleaned up upon completion of a LXC job because rc.stopJobContainer() -> rc.cleanUpJobContainer() -> rc.JobContainer.Remove() was never called for LXC containers. - stopContainer() and closeContainer() must not call rc.stopHostEnvironment(ctx) for LXC containers because - it will needlessly be called twice - it intercepts the call to - rc.stopJobContainer() - rc.JobContainer.Close() - rc.stopHostEnvironment(ctx) must be called in rc.cleanUpJobContainer which is indirectly called by rc.stopJobContainer() - since rc.JobContainer.Close() is a noop, not calling it for LXC containers had no consequence Resolves forgejo/runner#442
This commit is contained in:
parent
8a97e4b5d3
commit
9c24e5bfc3
2 changed files with 10 additions and 7 deletions
|
@ -407,6 +407,7 @@ func (e *HostEnvironment) Remove() common.Executor {
|
|||
if e.CleanUp != nil {
|
||||
e.CleanUp()
|
||||
}
|
||||
common.Logger(ctx).Debugf("HostEnvironment.Remove %s", e.Path)
|
||||
return os.RemoveAll(e.Path)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -316,7 +316,15 @@ func (rc *RunContext) startHostEnvironment() common.Executor {
|
|||
StdOut: logWriter,
|
||||
LXC: rc.IsLXCHostEnv(ctx),
|
||||
}
|
||||
rc.cleanUpJobContainer = rc.JobContainer.Remove()
|
||||
rc.cleanUpJobContainer = func(ctx context.Context) error {
|
||||
if err := rc.stopHostEnvironment(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
if rc.JobContainer == nil {
|
||||
return nil
|
||||
}
|
||||
return rc.JobContainer.Remove()(ctx)
|
||||
}
|
||||
for k, v := range rc.JobContainer.GetRunnerContext(ctx) {
|
||||
if v, ok := v.(string); ok {
|
||||
rc.Env[fmt.Sprintf("RUNNER_%s", strings.ToUpper(k))] = v
|
||||
|
@ -890,9 +898,6 @@ func (rc *RunContext) IsHostEnv(ctx context.Context) bool {
|
|||
|
||||
func (rc *RunContext) stopContainer() common.Executor {
|
||||
return func(ctx context.Context) error {
|
||||
if rc.IsLXCHostEnv(ctx) {
|
||||
return rc.stopHostEnvironment(ctx)
|
||||
}
|
||||
return rc.stopJobContainer()(ctx)
|
||||
}
|
||||
}
|
||||
|
@ -900,9 +905,6 @@ func (rc *RunContext) stopContainer() common.Executor {
|
|||
func (rc *RunContext) closeContainer() common.Executor {
|
||||
return func(ctx context.Context) error {
|
||||
if rc.JobContainer != nil {
|
||||
if rc.IsLXCHostEnv(ctx) {
|
||||
return rc.stopHostEnvironment(ctx)
|
||||
}
|
||||
return rc.JobContainer.Close()(ctx)
|
||||
}
|
||||
return nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue